Díky Calculone za info!, ušetřils mi psaní zprávičky. Užitečný je i dotazník + šablona pro lidi, co by chtěli nějakou změnu a rozšíření jazyka Go: https://github.com/golang/proposal/blob/master/go2-language-changes.md
(hodně to ušetří práce oběma stranám, hlavně kvůli posledním dvěma otázkám v té šabloně :-)
https://blog.discordapp.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f
Why Discord is switching from Go to Rust. Discord engineering blog.
TL;DR Pravidelne osklive spicky v dobe odezvy na serverech (co 2 minuty 95. percentil od oka 300ms) kvuli zatezim procesoru kvuli garbage collection. Alchymii s collectorem se jim to nepodarilo vyresit, tak to radeji prepsali a spicky proste zmizely.
Stejne uz Rust umeli, tak Go odstranili.
Illustrovano grafy.
Tohle je trochu podezřelé, Go má typické GC pauzy pod 1 ms. Každopádně tým tvořící Go takovéto případy vždy explicitně zkoumá a případné problémy opravuje, dřívější verze Go na tom byly podstatně hůře.
Co se ale týká správy paměti, Rust (nebo C++ či Swift) na tom budou lépe vždy už z principu. Pokud ta firma Rust umí, rozhodli se správně.
Přímo v diskusi se k tomu někteří vyjadřují.
Podstata problému je v tom, že GC se v dřívějších verzích spouštěl automaticky nejpozději za 2 minuty. V jejich případě nebylo co sbírat, ale gigantická cache plná pointerů způsobila tuhle špičku. Reálná situace nebyla tak zlá, ale chápu, že se jím to nelíbilo. Problém byl odstraněn nejpozději ve verzi Go 1.12.
Co mne při čtení článku okamžitě udeřilo bylo to, že používali hodně starou verzi Go (přičemž už verze 1.11 řeší většinu problému), přitom neměli problém použít nightly build Rust - nic stabilnějšího nepokrylo jejich požadavky. Taky tam píší, že udělali vše, aby problém vyřešili, ale jak je zmíněno výše, existují metody jak to obejít, které nepoužili. Spíš to na mne dělá dojem, že si to potřebovali zdůvodnit. To nic nemění na tom, že pro daný případ je Rust určitě vynikající volba. Co mne ovšem dojalo je slova "we drastically improved the performance of a service by switching its implementation from Go to Rust" pro vyhlazení špičky, při které se zvedna průměrná doba odezvy z 1ms na 10ms a která nastane jednou za 2 minuty, pro jinak identickou doby odezvy.
Titulek trochu zastírá, že přeprogramovali jen jednu, jak sami píší relativně malou službu.
No tak podľa mňa Golang je vhodnejší na matematické výpočty, prácu s grafickými dátami a určité serverovské veci,.. ale zrovna Discord, podľa mňa sa pre Rust rozhodol správne, ten je podľa mňa vhodnejší na chatovacie služby a pod. Osobne momentálne ja najradšej pracujem práve s trojicou JavaScript (Node.js), Golang, Rust. Podľa mňa pre webové aplikácie, služby a serverovské riešenia je táto trojica podľa mňa to najlepšie pre prácu. I když aj ERLang a Raku (Perl6) sú zaujímavé. Golangu fandím, no i ja si myslím že Discord prejdením na Rust urobil správny krok.
E: to malo byť ku komentu od bez prezdívky
6. 2. 2020, 12:40 editováno autorem komentáře