Sylvestre Ledru begynte å jobbe med en reimplementering av GNU Coreutils i Rust under COVID-19-pandemien og presenterte den forrige uke under 2023-utgaven av FOSDEM. Innsatsen kalt uutils er nå pakket av mange Linux-distribusjoner og brukes også av et kjent sosialt nettverk gjennom Yocto-prosjektet.
Sammenligninger av Rust- og C++-språk har en rød tråd: fremhever Rusts overlegenhet over C++ når det gjelder minnesikkerhet. RisingWave-redaktøren forklarer hvorfor han omskrev sin opprinnelige Cloud DBMS fra bunnen av i Rust etter å ha forlatt C++-prosjektet.
"Rust sikrer minne og trådsikkerhet ved kompilering ved å introdusere eierskapsregler. Det går utover RAII, en minnestyringsmekanisme som vanligvis brukes i C++. Det har to fordeler. Den første er åpenbar: når Rust-kompilatoren validerer programmet vårt, vil vi ikke ha noen segmentfeil eller løpsforhold under kjøring, noe som vil kreve titalls timer med feilsøking, spesielt i en svært samtidig kodebase og i stort sett asynkron. Det andre er mer subtilt: Rusts kompilator begrenser ganske enkelt typene feil, noe som reduserer tett nestede kodebiter som kan forårsake slik feil oppførsel. Feilreplikering er betydelig forbedret ved å bruke deterministisk utførelse. »
GNU Coreutils er en pakke fra GNU-prosjektet som inneholder mange grunnleggende verktøy som trengs for Unix-lignende operativsystemer: cp (kopier en fil eller katalog), mkdir (opprett en katalog), etc. En utvikler tilbyr en reimplementering på Rust-språket.
Et av målene: å gjøre pakken brukbar på andre operativsystemer: Windows, macOS, Android, FreeBSD, etc. Flyttingen kommer for å gjenopplive debatten om spørsmålet om å fortsette å starte nye prosjekter i C og C++ eller bare velge Rust-språket.
«Språket Rust tilbyr sikkerhetsgarantier som standard når det gjelder minneadministrasjon. Dette er ikke tilfellet med C og C++, hvis bruk i Mozilla er årsaken til minnesikkerhetsproblemer”, understreker Sylvestre Ledru.
Bjarne Stroustrup er imidlertid uenig i at sammenligninger mellom Rust og C++ begrenser forestillingen om å sikre programvare til å sikre minne:
"Det er ingen enkelt definisjon av begrepet "sikkerhet", og vi kan oppnå en rekke typer sikkerhet gjennom en kombinasjon av programmeringsstiler, støttebiblioteker og ved å utnytte statisk analyse. Bjarne Stroustrup antyder dermed at hva som kan hentes fra C++ av programvaresikkerhet blant annet avhenger av utvikleren og spesielt av kunnskapen om verktøyene som språket tilbyr, hans mestring av kompilatoren osv.
Google-ingeniører, klar over hva C++ tilbyr dem som muligheter, har begynt å lage en låneverifikatør på dette språket. Det er en funksjon i Rust-kompilatoren som sikrer minnesikkerhet gjennom administrasjon av minnepekerallokering.
Google-teamet, hvis publikasjon dukket opp i tredje kvartal året før, kom til konklusjonen av at det C++-lignende systemet ikke egner seg til en slik øvelse. Og til at minnesikkerhet i C++ kan oppnås med kontroller under programkjøring. Med andre ord, det er med langsom C++-kode det er mulig å oppnå et sikkerhetsnivå tilsvarende Rust.
Utgivelsen av RisingWave-editoren kommer ettersom Rust skiller seg ut fra andre språk som har blitt presentert i årevis som alternativer til C og C++. Faktisk blir Linux-kjernen mer og mer åpen for Mozillas systemprogrammeringsspråk.