gccrs is een volledig alternatieve implementatie van de Rust-taal via GCC
Onlangs werd bekendgemaakt dat het "gccrs"-project , dat tot doel heeft een interface te bieden voor de Rust-taal aan GCC (GNU Compiler Collection), op schema ligt om te worden geïntegreerd in GCC 13. Tijdens de FOSDEM-ontwikkelaarsconferentie eerder deze maand gaf engineer Arthur Cohen een presentatie over gccrs, waarin hij de huidige stand van zaken schetste.
Voor degenen die niet bekend zijn met het gccrs-project: het is een volledig alternatieve implementatie van de Rust-taal bovenop GCC, met als doel volledig geïntegreerd te worden in de GNU-toolchain.
De oorsprong van dit project is een inspanning van de gemeenschap enkele jaren geleden, toen Rust nog op versie 0.9 zat; de door Mozilla gecreëerde taal was aan zoveel veranderingen onderhevig dat het voor een gemeenschap moeilijk werd om bij te blijven.
Nu de taal stabiel is, is het tijd om alternatieve compilers te maken:
“Begonnen in 2014 (en opnieuw gelanceerd in 2019), de inspanning is aan de gang sinds 2020 en we hebben veel moeite gedaan en veel vooruitgang geboekt. We hebben de eerste versie van gccrs binnen GCC geüpload. Dus de volgende keer dat u GCC 13 installeert, bevat het gccrs.
Je kunt het gebruiken en je kunt het gaan hacken, je kunt de problemen melden wanneer het onvermijdelijk crasht en vreselijk sterft. Een groot ding dat we doen, is werken aan het laten werken van de rustc-testsuite, 'zei Arthur Cohen tijdens zijn presentatie op de FOSDEM-conferentie eerder deze maand.
Het succesvol uitvoeren van de testsuite voor de rustc-compiler blijft ook een doel. Volgens Cohen is de GCC-interface van Rust ook gericht op de oudere Rust libcore-versie 1.49.
In de veelgestelde vragen van het gccrs-project wordt vermeld dat alle LLVM-buildtechnologieën, die Rust gebruikt, "sommige GCC-compatibele backends missen, waardoor een gccrs-implementatie de hiaten kan opvullen voor gebruik in geïntegreerde ontwikkeling ."
Merk echter op dat de Rust-GCC-compiler (gccrs) zich nog in een zeer vroeg stadium bevindt en nog niet kan worden gebruikt om echte Rust-programma's te compileren.
Het GCC-team heeft afgelopen juli gestemd voor de integratie van gccrs als onderdeel van de buildsuite. Het belang van dit project ligt in de betekenis ervan voor de Linux-kernel. De Linux-kernel wordt doorgaans gebouwd met GCC, maar de plannen om naast C ook de programmeertaal Rust te gebruiken voor kernelcode, omwille van geheugenveiligheid, vorderen gestaag.
Het "Rust for Linux"-project is afgelopen oktober officieel samengevoegd met de belangrijkste Linux 6.1 Git-structuur, waardoor Rust de tweede taal is die zich toelegt op Linux-ontwikkeling, na 31 jaar uitsluitend op C gebaseerde ontwikkeling.
“We willen dat gccrs een echte Rust-compiler is en geen speelgoedproject of iets dat een taal compileert die op Rust lijkt, maar het niet is; we proberen echt om deze testsuite te laten werken, 'voegde hij eraan toe. Tijdens de presentatie zei Cohen ook dat hoewel de Rust-interface van GCC 13 goed van start is gegaan, er nog veel werk aan de winkel is. Geleende verificatiecode is op dit moment opvallend afwezig, ondersteuning voor ingebouwde en intrinsieke modules is nog aan de gang en de belangrijke mijlpaal van het compileren van Rust-code voor Linux moet nog worden bereikt.
Ter herinnering: het Rust for Linux-project heeft als doel een nieuwe systeemprogrammeertaal in de Linux-kernel te introduceren. Volgens experts heeft Rust een belangrijke eigenschap die het zeer interessant maakt om als tweede taal voor de Linux-kernel te overwegen: het garandeert dat er geen ongedefinieerd gedrag optreedt (mits de onveilige code correct is).
Dit omvat de afwezigheid van fouten zoals after-free gebruik, dubbele frees, dataraces, etc. Gerelateerde debatten draaien om de mogelijkheid om C te laten vallen ten gunste van de Rust-taal. Maar Linus Torvalds, de maker van Linux, zei dat dit niet het verklaarde doel is van het Rust for Linux-project.
Tot slot is het belangrijk te vermelden dat, hoewel de gccrs-interface is opgenomen in de aankomende GCC 13-release, deze nog niet in een staat verkeert waarin de meeste Rust-ontwikkelaars deze daadwerkelijk als alternatief voor de officiële LLVM-compiler van Rust kunnen gebruiken.
Het zou pas volgend jaar moeten zijn, tenminste met GCC 14 tenminste.
Bron: https://fosdem.org/