A Canonical egy új, hároméves kutatási projektet támogat, amelynek célja, hogy gyakorlatban is használhatóvá tegye nagy, kiforrott szoftverprojektek automatikus átültetését C-ről Rust-ra. A projektet a Canonical és az Egyesült Királyságban működő Bristoli Egyetem közösen viszi, a munka 2026 vége felé indul.
A fő cél egy teljes platform létrehozása, amely képes nagy kódtárolók – akár több százezer soros C-kód – lefordítására biztonságos, megbízható és jól karbantartható Rust-ra.
A nagyobb kihívást azonban az a hatalmas mennyiségű, már most is használt, kiforrott C-szoftver jelenti. Ezek kézi újraírása drága és kockázatos, mert a kódjukban gyakran évek javításai, kompatibilitási frissítései, teljesítményhangolásai és rejtett tudása halmozódott fel.
A jelenlegi forrás–forrás fordítók csak a probléma egy részét kezelik. A Canonical szerint ezek az eszközök ugyan sok kóddal megbirkóznak, de túl szorosan másolják a C-szerkezeteket. Így olyan Rust-kód születik, amely továbbra is támaszkodik nem biztonságos funkciókra, megőrzi a C-stílusú mintákat, és rengeteg utólagos takarítást igényel, mielőtt Rust fejlesztők szívesen karbantartanák.
Az LLM-ek más jellegű kihívással szembesülnek. Gyakran tudnak jó, idiomatikus Rust-kódot írni kisebb, jól körülhatárolt kódrészletekre, de egy teljes tároló kontextusának kezelése sokkal nehezebb. Ráadásul a ránézésre helyes kód nem feltétlenül viselkedik ugyanúgy, mint az eredeti C-változat.
Erre a problémára a projekt egy hibrid, úgynevezett „neuroszimbolikus” megközelítést alkalmaz. Ez a gépi tanulást hagyományos programanalízissel, teszteléssel és formális módszerekkel ötvözi.
A Canonical szerint a nagy kódtárolókat először kisebb részekre bontják, amelyeket külön is le lehet fordítani, miközben megőrzik a típusokra, függőségekre és a program működésére vonatkozó kulcsfontosságú információkat.
A fordítás olyan nyelvi modelleket használ majd, amelyeket ismert C–Rust példákon tanítottak. A cél, hogy olyan Rust-kód szülessen, amely valódi Rust funkciókat használ, ahelyett hogy pusztán lemásolná a C-szintaxist. A fordítás után ellenőrzik, hogy az új kód ugyanúgy viselkedik-e, mint az eredeti C-verzió.
Ubuntu felhasználók számára fontos, hogy a kutatás nem áll meg a kis, akadémiai példáknál. A Canonical az AppArmor és a Snap-confine projekteket is beemeli, mint valós, gyakorlati esettanulmányokat.
Ugyanakkor a Canonical egyértelművé teszi, hogy az AppArmor-t és a Snap-confine-t jelenleg nem írják át Rust-ra. Ezeket a projekteket kizárólag esettanulmányként használják a technológia tesztelésére, és nincs tervben, hogy a mostani verzióikat lecseréljék a kutatás eredményeire.
Végül érdemes megemlíteni, hogy a kezdeményezés illeszkedik a Canonical szélesebb körű Rust-adaptációjába Ubuntu-on belül. A cég példaként említi az olyan projekteket, mint a uutils coreutils és a sudo-rs, amelyek Rust-ban készült megvalósításokként már helyet kaptak a disztribúcióban.
További részletek a Ubuntu Discourse csatornáiról érhetők el.

