Rust-ban írta újra a Mozilla a Firefox Crash Reporter eszközét, majd leblogolta a miérteket

Címkék

A miértekről részletesen a blogbejegyésben.

Hozzászólások

Én is gondoltam, hogy kicsit sárt dobálok a Rust-re, de azt már megtettem több topikban, nem akarom állandóan elölről kezdeni. Egyébként aki most tanul programozást, és még semmilyen nyelvet se ismer, annak talán érdemes vele próbát tennie.

Mondjuk ez, hogy csak a Crash Reporter Rust-ban lesz, semmit nem ad hozzá. Nem fog gyorsabban futni, meg sokat a felhasználói élményhez hozzáadni, mert ha már crash volt, az eleve rossz élmény. Ez a böngészőnek úgyis csak nagyon kicsi része, a nagyobb szó az lenne, ha az egész böngészőt írnák át, de az meg akkora kódbázis, hogy 100 év múlva se készülnek el vele.

A mai böngészők túl bonyolultak, szét kéne őket jobban szedni, modulokra. Kicsit már most is így van, külön user-chrome a UI, külön van a renderelőmotor, JS értelmező, de ezek nincsenek úgy megoldva, hogy szabadon pakolgathatók, cserélgethetők legyenek a böngészők között. Valahogy megoldhatnák, hogy minden részelem külön modul legyen, pl. egyes médiaformátumok támogatása, SVG, stb. értelmező, protokollok, hogy egyenként lehessen cserélgetni, fejleszteni. Az addon interface is szabványosítva kéne, hogy legyen. Van is, de csak külön a Chrome, külön a Firefox oldalon, ez nem egységes szabvány.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Mondjuk ez, hogy csak a Crash Reporter Rust-ban lesz, semmit nem ad hozzá.

Gondolom bele sem olvastál a riportba. 

Like many components of Firefox, we decided to use Rust for this rewrite to produce a more reliable and maintainable program. 

https://4e6.github.io/firefox-lang-stats/

A stat alapján a C,C++ kód 20%-t már átírták.

Ez így elég nagy ferdítés. Olyat senki sem állított, hogy mind! C-ben és más nyelveken is lehet jó/biztonságos kódot írni, meg szart is. Arról a jelenségről szólt a sztori, hogy az újhullámos, agyontömjénezett nyelveket biztonságosnak állítják be a C-vel szemben. Holott, aki rendesen megtanulta az alapokat és érti is mit csinál, az C-ben is tud biztonságos kódot írni, a másik oldal meg pl. Rust-ban is szar kódot ír.

hat ki mit lat bele abba amit leirt. Tpobbszor elolvastam es kerestem benne a szavakat amit leirtal. Ezzel szemben nem talaltam, De hat en funkcionalis analfabeta vagyok, mert meg a C kodot sem olvasom (de). :D

Mindegy, nekem akkor is tobbet jelent az 50+os meg assemley-n edzodott es C-ben is 30+ evig programozo, de ma mar babzsakfotel konzum kebab Scala fejlesztok velemenye, mint holmi evangelista hagymazas kajabalasa. De azt latod bele a profeta kajabalasaba amit akarsz. :D

Why Rewrite?
...
Like many components of Firefox, we decided to use Rust for this rewrite to produce a more reliable and maintainable program. Besides the often-touted memory safety built into Rust, its type system and standard library make reasoning about code, handling errors, and developing cross-platform applications far more robust and comprehensive.

Nahát, a Mozilla szerint csakis a saját cucca a tuti, semmi más, ki gondolta volna, hogy ezt mondják majd...? Hogy mik vannak!

Van ám itt bőven ellenpélda is (olyanoktól, akik gyakorlott Rust-osok, szóval nem igazán vádolhatjátok őket elfogultsággal):
Gyakorlott Rust-os fejlesztőcég kihajítja a Rust-ot, majd leblogolta a miérteket
Rust fejlesztő kihajítja a Rust-ot, majd leblogolta a miérteket
Egy másik Rust fejlesztő is kihajítja a Rust-ot, majd leblogolta a miérteket
Mégegy Rust fejlesztő vált másra, majd leblogolta a miérteket
Megint egy elégedetlen Rust fejlesztő, aki leblogolta a miérteket
Rust fejlesztő nem képes megoldani egy egyszerű dolgot, majd leblogolta a miérteket
...stb. stb. stb.

Érdekes megfigyelni egyébként, hogy pont a sokat hájpolt borrow checkerre paranszkodnak a leginkább; egybehangzó vélemény, hogy mindig a legeslegrosszabbkor kényszeríti rá a programozókra a refactor-t, ezért a Rust gyors fejlesztésre alkalmatlan (rapid development cycle nyista, állítják a több éves Rust gyakorlattal rendelkezők, nem én).

Azért nézzük meg ezeket a posztokat:

Gyakorlott Rust-os fejlesztőcég kihajítja a Rust-ot, majd leblogolta a miérteket

Valid dolgokat kritizál, game fejlesztés célra szerintem nem biztos, hogy a Rust a legjobb választás. Pl. a Godottal már elég sok mindent csináltam. Az a játék, amit Godot + Rusttal csináltak simán megcsinálható lett volna 90%-ban GDScriptben + talán 10% natív kód, ha valahol belefutnak egy performance bottleneckbe.

Ezután csináltak Rustban egy saját game engine-t, és rájöttek, hogy nem tetszik nekik. Ha modern, de nem GC nyelvben akarnék alkalmazást fejleszteni, lehet hogy én is a Swift irányába mennék inkább.

Rust fejlesztő kihajítja a Rust-ot, majd leblogolta a miérteket

A fő kritikája a "steep learning curve", és hogy C++-hoz több audio programozás anyag van, amit egyébként is ismer, és akkor jobban tud az audio programozásra koncentrálni. Megpróbált két legyet ütni egy csapásra, nem jött be neki.

Egy másik Rust fejlesztő is kihajítja a Rust-ot, majd leblogolta a miérteket

Nem azt mondta, hanem egy korrekt kritikát írt (egy speciális OS-t írtak Rustban). Nem látom, hogy "kihajította volna".

Mégegy Rust fejlesztő vált másra, majd leblogolta a miérteket

Ez egy nagyon hosszú rant, 3x próbálkozásra nem tudta megtanulni a Rustot, majd írt egy ilyet. Nem olvastam végig.

Megint egy elégedetlen Rust fejlesztő, aki leblogolta a miérteket

Szerintem ez is egy kiegyensúlyozott, valid kritika.

Rust fejlesztő nem képes megoldani egy egyszerű dolgot, majd leblogolta a miérteket
 

Valid kritika (pl. async ügyben).

 

A Rust nyelv nyilván nem tökéletes, de dinamikusan fejlődik. Nekem is vannak vele bajaim (pl. hogy nincs stabil ABI, hogy egy konkrétumot említsek), de ettől még egy jó nyelvnek gondolom, és mindenképpen jobbnak, mint a C. A C++-nál már nem ilyen egyértelmű a dolog, persze az sem tökéletes, de egy modern C++ subset, automatizáltan ellenőrzött, biztonságos coding guideline-nal nagyon hatékonyan használható tud lenni.

game fejlesztés célra szerintem nem biztos, hogy a Rust a legjobb választás.

Az lehet, hogy ő épp game fejlesztő, azonban az általa megfogalmazott kritikák korántsem csak game fejlesztésre vonatkoznak, hanem általános problémák. Rapid development cycle például szinte mindenhol elvárás, mint ahogy azt sem tudom elképzelni, hogy bármelyik főnök megértő lenne, ha azt mondják neki, azért nem tartjátok már megint a határidőt, mert a borrow checker miatt újfent refaktorálni kellett.

ettől még egy jó nyelvnek gondolom, és mindenképpen jobbnak, mint a C.

Gondolni lehet sokmindent, a gyakorlat azonban makacsul mást mutat. Itt van mindjárt két idézet egy, általad is megbízhatónak és korrektnek nevezett kritikából (kiemelés tőlem):

A final nit I have about Rust is that builds are not reproducible between different computers (they are at least reproducible between builds on the same machine if we disable the embedded timestamp that I put into Xous for $reasons).

Ez nem "gondolom / nem gondolom jó", hanem konkrétan azt jelenti, gyakorlati értelemben használhatatlan a Rust. Mi lesz itt a hosszú távú fejlesztéssel, ha már most két gép között is ilyen problémái vannak?

gives me a sense of the scale of the attack surface we’re dealing with — and it is breathtaking, about 5700 lines of code from various third parties that manipulates files, directories, and environment variables, and runs other programs on my machine every time I do a build.

Megint csak, ez sem "gondolom / nem gondolom jó" kérdése, hanem egyszerűen egy agyrém. Teljesen igaza van a csókának, mikor azon aggódik, hogy valaki észrevétlenül malware-t tud becsempészni a Rust buildelési eljárásába.

Mégegyszer: ezeket gyakorlott Rust-os fejlesztő állítja, nem én. Én csak azt mondom, ha ezek valóban igazak, akkor bizony kerülni kell a Rust-ot, mint a leprát, mert hosszú távon nagyon pórul fog járni, aki átáll erre (és ennek semmi köze ahhoz, hogy én személy szerint mit gondolok a nyelvről; egyszerűen nem állunk át egy olyan technológiára, aminél a határidők nem tervezhetők, a fordítás nem reprodukálható, és a végeredmény potenciálisan malware-t tartalmazhat a forrásunktól függetlenül).

leblogolta a miérteket

Amikor az önérzetes babzsákfejlesztő érzi, hogy magyarázkodnia kell, mert feleslegesen égetett el erőforrást ahelyett, hogy a böngésző használhatóságán dolgozott volna.

Az ilyen típusú vergődések, mindig a lilahajú master/slave cserélgető SJW és és kódférfiatlanító gender warriorrokat juttatja eszembe. Ők végeznek ilyen kockázatmentes látszattevékenységeket 2 percnyi dicsfény érdekében...

"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "