Rust är ett programmeringsspråk som tagits fram av Mozilla och som bland annat har en mycket solid minneshantering. Språket gör att utvecklarna slipper tänka på minneshantering och därmed blir denna typ av buggar betydligt färre.
En av våra kunder har nyligen börjat använda Rust som ett komplement till C. Riktigt spännande tyckte vi och passade på att ställa några frågor till vår konsult Robin Carlsson för att höra efter hur bytet fungerat. Robin har tidigare kört mycket C, Python och lite Java.
Hur kommer det sig att ni började programmera i Rust?
Möjligheten att byta från C till Rust dök upp när kunden skulle utveckla ett nytt elektronikkort (för signalbehandling) med tillhörande mjukvara. För inbyggda system är C ett standardval, men Rust har under de senaste åren dykt upp som en stark kandidat. En av utvecklarna i projektet såg potentialen i att använda Rust till delar av funktionaliteten,
Vilka positiva effekter har kommit med bytet?
Ett vanligt problem med C är manuell minneshantering, och antalet features i språket är relativt få. Rust adresserar båda de här problemen (det är mer likt C++ än C i mängden funktionalitet), och har även en väldigt strikt kompilator (mycket tack vare hur språket är designat). Detta leder till snabb feedback och buggfixning under utvecklingstid. Det går också att anropa C-kod från Rust, och tvärtom, så man kan integrera språken istället för att göra ett tvärt byte. I just det här projektet visade sig även delar av Rust-koden vara snabbare än en motsvarighet i C.
Under projektets gång har man även hittat flera områden i den befintliga kodbasen som har kunnat förbättras genom att skrivas om i Rust. C är fortfarande det primära språket hos kunden, men Rust finns numera som alternativ.
Har ni stött på några problem med Rust?
Ett problem med att börja använda Rust är just att det är så pass nytt. Både språket och flera av biblioteken uppdateras ganska ofta, och även om språket i sig ska vara (så gott som) bakåtkompatibelt, så har det hänt att man har behövt backa någon version på något bibliotek, då det inte har fungerat med andra bibliotek. Ibland har man också saknat någon specifik funktion, som inte har implementerats i språket än (ett ganska litet problem, då det oftast finns något annat liknande sätt att lösa problemet). Det finns också betydligt färre information från andra utvecklare på nätet (jämfört med t.ex. C). Detta vägs dock upp av en riktigt välskriven och lättillgänglig dokumentation av Rust, och även flertalet av biblioteken.
Eftersom språket även var nytt för flera av utvecklarna i projektet tog det också ett tag att lära sig.
Har du något tips för de utvecklare som är nyfikna på att börja arbeta i Rust?
Kolla in den officiella hemsidan! Där finns information om hur man sätter upp sin utvecklingsmiljö, dokumentation av språket, tutorials, nyheter och mycket mer. Framförallt dokumentationen är väldigt välskriven, och till stor hjälp för att hitta runt i språket. Vill man komma igång och koda tycker jag att man ska börja med ett avgränsat område. Försök hitta någon del av koden (ny eller befintlig) som har ett tydligt och gärna litet API, för att minimera begränsningar och krångel som det kan innebära att hoppa mellan programmeringsspråk. Vill man bara experimentera lite kan man ju prova att skriva om något befintligt kodblock i Rust, och se om man kan integrera det. Om man vill skriva lite kod utan att behöva sätta upp sin utvecklingsmiljö finns det även en “playground” på hemsidan för att skriva mindre kodblock direkt i webbläsaren. Rust är inte heller begränsat till inbyggda system, så oavsett utvecklarbakgrund rekommenderar jag att i alla fall läsa på lite om språket, för att se vad det kan tillföra.
Om författaren:
Jonas Karlsson, System Developer