
Due sviluppatori CPython hanno proposto di aggiungere il linguaggio di programmazione Rust al codice Python. Emma Smith e un suo collega hanno pubblicato una proposta preliminare di miglioramento di Python (Pre-PEP) che giustifica la necessità di questo passaggio. Attualmente, Rust è previsto per essere utilizzato solo per la scrittura di moduli di estensione opzionali, ma in futuro potrebbe diventare una dipendenza obbligatoria.
Il motivo principale per l’adozione di Rust è migliorare la sicurezza della memoria. Il linguaggio previene intere classi di errori a livello di compilazione: accessi fuori dai limiti degli array, accessi alla memoria liberata e conflitti di dati nel codice multithread.
Questo è particolarmente rilevante per Python, che utilizza thread liberi, dove la sicurezza dei thread è fondamentale. Il progetto RustBelt ha persino dimostrato formalmente la correttezza delle garanzie di sicurezza di Rust per il codice privo di costrutti non sicuri.
CPython riscontra regolarmente bug dovuti a una gestione impropria della memoria. Gli autori della proposta ritengono che Rust ridurrà radicalmente tali problemi. Anche se una parte del codice dovesse rimanere non sicura a causa delle interazioni con l’API C, la logica di base dei moduli sarà scritta in Rust, un linguaggio sicuro.
Rust è già attivamente utilizzato da grandi progetti C e C++. Il kernel Linux , Android , Firefox e molti altri sistemi stanno adottando il linguaggio per migliorarne l’affidabilità.
Google ha già segnalato risultati positivi dall’implementazione di Rust in Android. È interessante notare che dal 25% al 33% delle nuove estensioni Python sono scritte in Rust: l’integrazione del linguaggio in CPython potrebbe ulteriormente stimolare questa tendenza.
Oltre alla sicurezza, Rust offre strutture dati ad alte prestazioni provenienti dalla libreria standard . Vettori, tabelle hash e mutex sono tutti implementati con zero overhead e sono ben documentati.
Il sistema di macro di Rust è superiore alle macro del C: le macro dichiarative sono più pulite e non catturano accidentalmente le variabili, mentre le macro procedurali consentono potenti trasformazioni del codice. La libreria PyO3 fa ampio uso di macro procedurali per semplificare l’utilizzo dell’API Python.
Gli sviluppatori hanno già creato un prototipo di modulo _base64che dimostra i miglioramenti delle prestazioni ottenuti utilizzando Rust.
L’integrazione richiederà un nuovo crate cpython-syscon definizioni API C FFI. I binding vengono generati utilizzando bindgen, lo strumento ufficiale di Rust utilizzato anche nei progetti Linux e Android. Cargo può fornire dipendenze pronte all’uso, quindi non è necessario scaricare i pacchetti durante la compilazione.
Rust supporta tutte le piattaforme specificate in PEP 11 e successive. Tutte le piattaforme Python di livello 1 corrispondono alle piattaforme Rust di livello 1 o 2, con un set completo di strumenti di sviluppo. La compilazione incrociata è facile da configurare: basta impostare la destinazione desiderata e specificare il linker.
Gli autori hanno abbandonato l’idea di utilizzare la libreria PyO3 esistente all’interno di CPython. Ciò avrebbe creato un ulteriore livello di astrazione e rallentato lo sviluppo: ogni nuova API sarebbe stata prima aggiunta a PyO3, quindi aggiornata in CPython. Con bindgen, le nuove API sono disponibili automaticamente.
C’è un problema di dipendenza: il compilatore Rust usa Python per il bootstrap. Ma ci sono soluzioni. È possibile compilare una versione precedente di Python, poi Rust, quindi il nuovo CPython. Gli script di bootstrap di Rust sono persino compatibili con Python 2, quindi il problema è risolvibile. Le alternative sono usare PyPy o fare in modo che Rust si dissoci da Python durante il processo di compilazione.
Sono disponibili risorse di formazione per gli attuali sviluppatori CPython. Il Rust Book offre un’introduzione completa al linguaggio, oltre a Rust per programmatori C++ e materiali di formazione ufficiali.
Sono in corso i piani per creare un team di esperti Rust e aggiungere un tutorial alla devguide. Lavorare con gli argomenti delle funzioni potrebbe richiedere l’adattamento di Argument Clinic o la creazione di una macro procedurale in Rust.
Ti è piaciuto questo articolo? Ne stiamo discutendo nella nostra Community su LinkedIn, Facebook e Instagram. Seguici anche su Google News, per ricevere aggiornamenti quotidiani sulla sicurezza informatica o Scrivici se desideri segnalarci notizie, approfondimenti o contributi da pubblicare.

Cyber ItaliaL’Italia si trova oggi davanti a una sfida digitale senza precedenti, dove la corsa all’innovazione non sempre coincide con una protezione adeguata delle infrastrutture. Pertanto la sicurezza dei sistemi connessi è diventata l’anello debole della…
Cyber NewsUna nuova vulnerabilità scoperta dal ricercatore italiano Alessandro Sgreccia (rainpwn) del gruppo HackerHood di Red Hot Cyber è stata scoperta nei dispositivi ZYXEL permette di ottenere accesso root attraverso una configurazione apparentemente innocua del servizio…
HackingLa parola hacking, deriva dal verbo inglese “to hack”, che significa “intaccare”. Oggi con questo breve articolo, vi racconterò un pezzo della storia dell’hacking, dove tutto ebbe inizio e precisamente nel piano terra dell’edificio 26…
Cyber NewsL’Italia è finita ancora una volta nel mirino del collettivo hacktivista filorusso NoName057(16). Dopo i pesanti disservizi che hanno colpito l‘Università La Sapienza e le Gallerie degli Uffizi all’inizio di questa settimana. L’offensiva digitale russa…
Cyber NewsSecondo quanto riportato dal Corriere della Sera, l’attacco informatico che ha paralizzato i sistemi dell’Università La Sapienza non sarebbe motivato da fini politici. Gli hacker avrebbero inviato messaggi di rivendicazione spiegando di non agire per…