Derfor skifter chat-appen Discord Go ud med Rust
Discord-appen er med omkring 250 millioner brugere en af de mest populære messaging-platforme, og den har især fundet indpas blandt gamere.
Meget af den bagvedliggende infrastruktur er kodet i det relativt nye programmeringssprog Go fra 2009, som er det programmeringssprog som flest udviklere ønsker at lære.
For nylig blev nogle af de bagvedliggende Go-services for Discord dog erstattet med services skrevet i et andet nyere programmeringssprog, nemlig Rust som er fra 2010.
Automatisk memory-oprydning med forsinkelser
Det er den ansvarlige for Discords infrastruktur, Jesse Howarth, der i en detaljeret blog fortæller om årsagen til at udskifte Go med Rust.
Go Den første officielle version blev frigivet i november 2009. Kilde: https://golang.org/
Go er udviklet af Google, hvor blandt andet udvikleren af Unix, Ken Thompson, var med til at definere programmeringssproget, der blandt andet har sprogkonstruktioner til at håndtere samtidighed.
Go anvender ligesom Java en 'garbage collector' til løbende at rydde op i et programs memory, og det kan skabe forsinkelser, fordi processoren skal bruge tid på at gennemløbe memory for datastrukturer, som ikke længere anvendes af et program.
Oprydning hvert andet minut
I Discord er der en service, Read States, der holder øje med, hvilke beskeder på hvilke kanaler en bruger har læst. Servicen bliver brugt hver eneste gang, en bruger logger på Discord, hver eneste gang der sendes en besked, og hver eneste gang der læses en besked.
Rust I 2009 begyndte Mozilla at sponsere udviklingen af sproget og i 2010 annoncerede Mozilla det nye sprog som blandt andet også har haft Javascript-udvikleren Brendan Eich med som fødselshjælper. Kilde: https://www.rust-lang.org/
Rust startede som et personligt projekt for Mozilla-medarbejderen Graydon Hoare i 2006.
Det er derfor en service der anvendes meget ofte med millioner af brugere og beskeder og følgelig skal servicens performance være god. Discord-udviklerne havde da også været meget omhyggelige med at skrive optimeret Go-kode, men alligevel kunne de konstatere, at hvert andet minut var der et kraftigt forøget CPU-forbrug og en forsinkelse i form af latency.
Det skyldtes, at Go's garbage collector som minimum aktiveres hvert andet minut, uanset om der løbende er blevet allokeret og deallokeret meget eller lidt memory. Udviklerne forsøgte at optimere hukommelsesoprydningen på forskellig vis, men det lykkedes ikke at undgå irriterende periodiske forsinkelser.
Dansk baggrund for Rusts memory-håndtering
Udviklerne tog derfor et kig på Rust, som gennem de seneste år er blevet kåret som det mest elskede programmeringssprog i StackOverflows årlige undersøgelse, ligesom Microsoft er begyndt at se nærmere på sproget som fremtidens systemprogrammeringssprog .
Rust har en anden tilgang til memoryhåndtering end Go, og den tilgang er blandt andet inspireret af den tidligere ITU-rektor Mads Toftes arbejde med hukommelsesadministration.
»Et af de centrale koncepter i Rust kommer fra Mads Tofte. Region inference, som er programanalyse og hukommelsesadministration, udviklede han sammen med Jean-Pierre Talpin,« har Peter Sestoft, professor på IT-Universitetet sagt til Version2.
Rust anvender konceptet memory-ejerskab, hvor der holdes styr på, hvem der kan læse og skrive til memory, så memory kan frigives øjeblikkeligt, når det ikke længere bruges af et program. Det overflødiggør anvendelse af en garbage collector og gjorde, at Rust var mere velegnet end Go til at sikre en konstant god performance for Read States-servicen.
Jesse Horwarth skriver, at det ikke betyder at man hovedkulds skal kaste sig ud i at omskrive alting i Rust, men i dette tilfælde gav det mening for Discord-udviklerne.

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.