
Canonical som är mest känd för Ubuntu startar tillsammans med University of Bristol ett forskningsprojekt där AI ska användas för att översätta stora mängder C-kod till säkrare och underhållbar Rust. AppArmor och snap-confine, två viktiga delar av Ubuntus säkerhet, blir de första praktiska testfallen.
Bakgrunden är ett gammalt problem i Linuxvärlden. En stor del av systemprogramvaran är skriven i C, medan Rust kan eliminera många typer av minnessäkerhetsfel. Att skriva om etablerade C-projekt för hand är däremot dyrt, tidskrävande och riskabelt.
Traditionella verktyg för översättning från C till Rust kan hantera stora mängder kod, men enligt Canonical följer de ofta C-kodens struktur alltför bokstavligt. Resultatet kan visserligen kompileras som Rust, men fortfarande innehålla mycket unsafe-kod och C-liknande konstruktioner som kräver omfattande manuellt arbete.
Stora språkmodeller har nästan det motsatta problemet. De kan generera idiomatisk Rust för mindre och tydligt avgränsade uppgifter, men har svårare att hantera sammanhanget i ett helt kodförråd. Dessutom finns ingen garanti för att AI-genererad kod faktiskt beter sig på samma sätt som originalet.
Därför ska AI bara vara en del av systemet som Canonical och Bristol utvecklar.
Först delas ett stort kodförråd upp i delar som kan översättas utan att viktig information om typer, beroenden och beteende går förlorad. Därefter använder systemet språkmodeller för själva översättningen från C till Rust.
Den nya Rust-koden kontrolleras sedan mot C-originalet. Forskarna ska bland annat använda fuzztestning och mer formella metoder för att verifiera att programmens beteende är detsamma. Om kontrollen misslyckas ska systemet försöka hitta felet och automatiskt reparera översättningen.
Canonical betonar att AI-genererad kod ska betraktas som opålitlig tills det finns belägg för att den bevarar originalprogrammets beteende.
Forskningsprojektet pågår i tre år och finansieras av Canonical tillsammans med UK Research and Innovation. Arbetet leds vid University of Bristol av professor Meng Wang.




