Pubblicato crustc, un compilatore per il linguaggio Rust, creato tramite la traduzione del codice del compilatore rustc 1.98.0-nightly in C. Sono stati generati 46 milioni di righe di codice in C, che possono essere compilate usando GCC e l'utilità make. Il compilatore assemblato in questo modo supera con successo i test di compilazione del codice Rust, comprese le librerie standard di Rust.
Il progetto dimostra le capacità del compilatore in fase di sviluppo cilly, che consente di tradurre progetti dal linguaggio Rust al linguaggio C. L'obiettivo di tale traduzione è fornire la possibilità di compilare codice originariamente scritto in Rust in ambienti di sistema e su architetture non supportate dal compilatore rustc. Il codice generato è in ANSI C (C89), il che potrebbe potenzialmente permettere la compilazione di progetti su sistemi obsoleti, non più supportati in LLVM e GCC, ma per i quali esiste un compilatore ANSI C. Il compilatore cilly non è ancora disponibile pubblicamente e sarà pubblicato dopo essere stato portato a una fase pronta per ampi test. Il lavoro su questo progetto è svolto da un appassionato da tre anni.
Cilly è implementato come backend per rustc, che traduce la rappresentazione interna di Rust in codice sorgente in C. La caratteristica distintiva di cilly è che ogni traduzione tiene conto della specifica piattaforma e del compilatore C di destinazione con cui si prevede di compilare il programma. Durante la fase di verifica, cilly genera un profilo del compilatore C di destinazione, applicando test basati sull'assemblaggio di un insieme di mini-programmi, che valutano il supporto per determinate caratteristiche (ad esempio, _Thread_local) e determinano dettagli sulla piattaforma, come le dimensioni dei tipi, l'allineamento dei dati in memoria e il layout delle strutture.
Fonte: opennet.ru
