Derfor skifter chat-appen Discord Go ud med Rust

4. marts 2020 kl. 05:00
Derfor skifter chat-appen Discord Go ud med Rust
Illustration: Pixabay.com-bruger terimakasih0.
Discord, som anvendes af millioner af gamere, udskifter dele af sin infrastruktur kodet i Go med nye services kodet i Rust. Læs hvorfor.
Artiklen er ældre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

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.

Artiklen fortsætter efter annoncen

Go
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.

Den første officielle version blev frigivet i november 2009.

Kilde: https://golang.org/

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
Rust startede som et personligt projekt for Mozilla-medarbejderen Graydon Hoare i 2006.

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/

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 .

Artiklen fortsætter efter annoncen

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.

Ingen kommentarer endnu.  Start debatten
Denne artikel er gratis...

...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.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger