Mange av sårbarhetene som finnes i programvare skyldes manglende kontroll over bruken av minne.
Minnefeil
Forsøk på å lese eller skrive større datamengder enn det en minneblokk kan inneholde, eller forsøk på å lese eller skrive data fra eller til en minneblokk som har blitt frigjort, er typiske eksempler på feil som kan oppstå når utviklere skriver programvare med språk som C eller C++.
Til gjengjeld tilbys utvikleren mer lavnivå kontroll og ytelse enn det som tilbys av språk og teknologier som ikke like lett kan føre til programvare med slike sårbarheter. Java og C# er eksempler på det sistnevnte.
Les også: Nær halvparten av utviklerne er selvlærte
Rust
I forrige uke kom den første stabile utgaven av Rust, et fellesskapsutviklet programmeringsspråk basert på arbeidet gjort av Mozillas Graydon Hoare. Prosjektet har blitt sponset av Mozilla siden 2009.
Rust har sin egen tilnærming til hvordan man unngår minnefeilene som fort kan oppstå med C og C++, selv om også Rust kompileres til systemspesifikk kode og potensielt høy fart.
Blant annet utføres sjekking om av variabelverdiene er innenfor visse grenser før de brukes. Istedenfor ressurskrevende, automatisk «garbage collection», brukes en tilnærming som involverer eierskap av minne og levetid for objekter.
Rust i nettleseren: Mozilla lager ny nettlesermotor
Annen tilnærming
Ifølge Ars Technica kan objekter allokert i minnet bare ha én eier. Men eierskapet kan lånes ut for at objekter skal kunne overleveres til funksjoner. Rust skal sikre at eierne av objekter har en levetid som er minst like lang som selve objektene.
Dette, kombinert med at Rust ikke trenger noen egen runtime, gjør det blant annet enkelt å kommunisere med andre språk fra Rust gjennom språkets Foreign Function Interface (FFI), som tilbyr en kostnadsfri abstraksjon hvor funksjonskall mellom Rust og C skal ha tilsvarende ytelse som rene C-funksjonskall, samtidig som at de kan gjøres gjennom Rusts trygge grensesnitt.
Dart: – Det skal være dejligt å kode
Bruksområder
Rust er beregnet for både systemprogramvare og applikasjoner, ikke minst store klient/server-programvare. Rust-syntaksen minner mye om C og C++, men semantikken skal være svært forskjellig.
Språket støtter flere programmeringsparadigmer – inkludert prosedyre- og objektorientering.
Rust 1.0 innebærer at språket er stabilt, noe som innebærer at det ikke planlegges store endringer i språket som kan føre til at eksisterende kode må endres. Det betyr likevel ikke at Rust er ferdig utviklet. En oversikt over planene framover finnes her.
Rust er implementert for både Linux, OS X og Windows. Detaljer om installasjonen finnes på denne siden.
Les også: Avduket Visual Studio for Linux og Mac