Altro Rust

Stato
Discussione chiusa ad ulteriori risposte.

St3ve

Utente Jade
12 Ottobre 2011
2,442
5
1,850
686
Ultima modifica:
Rust_programming_language_black_logo.svg

Rust è un linguaggio di programmazione sviluppato dalla Mozilla Foundation, con cui attualmente stanno sviluppando quello che sarà (non a breve) il nuovo rendering engine di Firefox: Servo, che attualmente è il più grande progetto sviluppato con questo linguaggio, assieme al compilatore stesso.
Come tutto quello che viene da mozilla è open source e cross platform, il compilatore si appoggia ad LLVM.
Questo linguaggio è stato progettato ponendo enfasi sulla sicurezza e sulla performance. È un linguaggio compilato che vuole garantire la memory safety senza l'uso della garbage collection. Supporta sia il paradigma funzionale che quello object-oriented, anche se non è paragonabile a haskell o a java (non supporta proprio pienamente questi paradigmi), e garantisce il multithreading senza data racing. L'idea che c'è dietro è quella di rimpiazzare C e C++, gli use case di questi linguaggi sono simili, e non è proprio un obbiettivo facile da raggiungere.

Per garantire la sicurezza senza rinunciare alla performance fa uso di pesanti controlli in compile-time. Ha delle regole molto rigide sull'utilizzo dei puntatori che sfruttano pesantemente i concetti di ownership (appartenenza), borrowing (prestito) e lifetime (tempo di vita). Questo insieme di regole, tutte controllate in fase di compilazione dal borrow checker, sono la caratteristica principale di questo linguaggio: complicano la vita al programmatore e sono il principale motivo per cui Rust non è considerato un linguaggio di facile utilizzo, ma limitano i bug dovuti ad un uso improprio della memoria. Alcune strutture dati (es. dobule linked-list e alcuni tipi di grafi) non si adattano bene a queste regole e richiedono l'utilizzo di codice ritenuto unsafe dal compilatore.
Quello che non può essere fatto in compile time si cerca di rimandarlo in runtime, ma con un minimo impatto sulle prestazioni: ha degli smart pointers con un reference counting e il bound check sugli array è fatto in runtime (tutta roba con piccoli overhead prestazionali). Gli overflow non sono controllati, ma non escludo la possibilità che le cose possano cambiare.

Assieme al compilatore c'è anche Cargo, un tool che permette di gestire le dipendenze e di strutturare i progetti in maniera standardizzata. Funziona un po' come i Makefiles, ma è più avanzato ed ha delle caratteristiche simili a quelle dei package manager su Linux. Il sito su cui sono raccolti tutti i pacchetti/librerie (chiamati crates in Rust) è https://crates.io/

Attualmente il linguaggio non è ancora ben sviluppato, la versione attuale è 1.0.0.alpha.2, e non penso che gli aggiornamenti siano retro compatibili (il codice già scritto potrebbe diventare incompilabile). Da quando è stato annunciato la sintassi è stata cambiata leggermente, quindi codici che potreste trovare in rete potrebbero non essere più rilevanti. La versione beta è prevista a breve (qualche giorno) e la stable dovrebbe uscire il mese prossimo, il 15 maggio se tutto va bene.
A me sembra un bel linguaggio e penso che valga la pena dargli un'occhiata, io me lo sto studiando un po' in questi giorni, se qualcuno ha qualche domanda me la faccia pure.

Le guide e i tutorial non sono molti e tendono ad essere superficiali, per questa ragione mi sento di sconsigliarlo a chi non ha esperienza con la programmazione. Se volete provarlo vi consiglio di prendere direttamente la versione nightly (aggiornata ogni notte), se invece volete semplicemente dargli un'occhiatina e scrivere quattro cose tanto per fare potete usare https://play.rust-lang.org/

Per il download, le guide e altre informazioni, vi rimando al sito ufficiale: http://www.rust-lang.org/

Aggiornamento:
Hanno rilasciato versione 1.0 beta, da qui alla stable non dovrebbero aggiungere nuove features e i programmi dovrebbero rimanere compatibili.

Aggiornamento:
Rilasciata la versione 1.0 stable (e 1.1 beta), da qui in avanti ogni 6 settimane ci sarà il passaggio alla versione successiva. La stable è quella consigliata per l'uso, nella beta e nella nightly ci sono features sperimentali.
Come già detto, tutta la documentazione e le guide le trovate nella parte alta del sito ufficiale, ora sono più approfondite rispetto a qualche mese fa. Il primo libro cartaceo è in pre-order su amazon, ma non uscirà prima di novembre. Si iniziano anche a vedere anche i primi IDE (1) e i primi plugin per IDE (1,2).
 
Stato
Discussione chiusa ad ulteriori risposte.