EMBEDDED WORLD När programmerare byter programspråket C++ mot Rust och en massa buggar försvinner – vad händer då med marknaden för kodverktyg som jagar buggar? Varken brittiska LDRA eller franska Trustinsoft är oroliga, och förklarar varför.
Jim McElroy |
– Nej, absolut inte! säger Jim McElroy på LDRA när Elektroniktidningen undrar om programspråket Rust hotar hans levebröd.
Saken är den att en stor nytta med brittiska LDRA:s verktyg för kodanalys består i att den identifierar kod i C och C++ som kan korrumpera minnet – en vanlig typ av bugg i C och C++ som ligger bakom många farliga säkerhetshål.
Men nu finns en stark strömning mot programspråket Rust som liksom C/C++ ett maskinnära språk och därmed smidigt för drivrutiner och realtid och annat som embeddedkodare vill ha. Samtidigt är det immuniserat genom sin design mot minneskorruption.
Håller Rust på att ta över?
– Det är en intressant diskussion. I verkligheten har det inte hänt ännu. Kommer det att hända? Vet inte. Men inget skulle hindra oss från att röra oss mot Rust i så fall.
Skulle Rust sabotera er marknad?
– Nej, absolut inte! Om kunder utvecklar i Rust, så förhindrar de visserligen vissa sårbarheter i koden. Men de måste fortfarande hantera funktionssäkerhet.
– Vad tycker du själv? Ser du att Rust tar fart?
Det kommer verkligen mycket nyheter om Rust nu!
– Visst. Samtidigt fanns en tid då Java skulle ta över världen, embedded Java. Jag har var med tillräckligt länge för att se sånt här, skrattar Jim McElroy.
– Jag har jobbat med inbyggnadsprogramvara inom flyg och försvar – kritisk programvara. Faktum är att Ada95 fortfarande finns kvar i stora delat av kundbasen. Det är ett starkt typat språk som fungerar utmärkt i säkerhetskritiska tillämpningar. Och det kommer att finnas kvar länge än.
Elektroniktidningen tar frågan om Rust vidare till mattegenierna i franska Trustinsoft som har verktyg som kan formellt bevisa att C och C++-kod är buggfri.
Vet du att Vita Huset rekommenderat mot användandet av C och C++?
Carolina Guillaume |
– Det som de närmare bestämt sade var att C och C++ är opålitliga, och att du borde sluta använda dem – eller använda formella metoder, rättar Carolina Guillaume på Trustinsoft.
Aha, det fanns ett kryphål!
– Det vill säga att använda just ett sådant verktyg som vårt Trustinsoft Analyzer. Det kan garantera att minnessårbarheter inte finns i koden. Man kan säga det är exakt vad vi gör – adresserar de problem med minnessäkerhet som finns i C++.
Var det sådana verktyg som Bjarne Stroustrup – skaparen av C++ – syftade på när han protesterade och sade att C++ visst gick att fortsätta att använda?
– Jag har inte läst Bjarnes artikel. Men jag läste just Vita Husets text, och jag anser att den har överförenklats. Det står att 70 procent av alla sårbarheter i kod orsakas av problem med minnesäkerhet. Vilket betyder att dessa sårbarheter uppstår i C++ – av det enkla skälet att C++ används överallt i kritiska system.
– All den koden kan vi ju inte bara kasta bort! Det finns miljontals rader kritisk C++. Du vill inte skriva om allt. Men du vill försäkra dig om att den är säker.
Skulle era verktyg kunna göra nytta på Rust?
– Idag stöder vi C++. Nästa språk vi kommer att addera är Rust. Även Rust har exempelvis ett ”unsafe mode” – eftersom ”safe mode” kan bli komplext att använda när du kodar nära hårdvaran.
En av Rusts säkerhetsstrategier är dessutom att helt enkelt göra halt istället för att exekvera osäker kod. Det kallas ”panic!”. Det är inte säkert att det är att acceptabelt beteende i inbyggnadskod.
– Så risken för det är något som måste kunna detekteras.