Ja tomu fakt nerozumim. nejaky 'head'/'tail' apod mohou mit kdyz jsou napsane dobre ve staticke podobe velikost v radu malych desitek kB. A na blogu se doctu:
It does however, bloat the binary by close to ***a megabyte***.
Other parsers such as argh have much smaller footprint, but don’t support things like “—arg=value”, which may make the compatibility story much harder.
Pripadam si, jako kdybych zil v nejake uplne odlisne paralelni realite, kdyz nekdo prijme aby systemova utilita mela megabajt ... a bylo to hlavne kvuli nejakemu arg parseru ...
Dockame se doby, kdy prehravac videa bude mit treba terabajtovy executable ? A kalkulacka bude treba gigabyte ? "
Nezlobte se na mne ze to napisu takhle, ale v me realite je takovy pristup uplne zvraceny. Jde hlavne o to, ze ta 1MB binarka je pouzita na kazdem systemu, bude jich tam cela rada, takze je to zcela zbytecne zahozenych reknem 300 MB x pocet instalaci.
Nejsem uplne clovek vezouci se na modni "ekologicke" vlne, ale i tady vidim urcity smysl. Daleko vetsi ho ale vidim v rychlosti, on ten load 10kB vs 1MB je taky rozdilny.
Vemte si, ze kdyz treba pri behu nejakeho bezneho programu usetrite 2,5 sec, pouzije to za zivot tisickrat milion lidi (to neni az tak nerealne), tak jste usetril nekomu cely lidsky zivot.
Já to beru jako trade-off. V mém světě většina lidí nežije tak, aby do poslední sekundy vyždímala ze svěřeného času úplné maximum. Určitě je žádoucí optimalizovat, snižovat paměťové nároky apod. Na druhou stranu, pokud má člověk na počítači aktivně využívaný přehrávač HD videa, moderní mnohagigabytové hry a nevím co ještě, těch 300 MB se prostě ztratí. Čímž - opět - neříkám "neřešme to".
Nemyslim, ze to je nesmysl, lidsky cas ma pro nas vsechny podobnou hodnotu, je-li podobna jeho kvalita.
Se zacpami umim udelat akorat to, ze se je pokusim objet, presunu jizdu na jiny cas, nebo zvolim jinou formu. Jinak to patri do kategorie "nelze s tim nic udelat".
U IT mam zatim pocit, ze s tim stale neco lze delat, i v domacich podminkach asi muzu po vecerech nakonec prepsat cele coreutils na podobu kterou chci.
Toť otázka. Ono 1 MB není mnoho, zejména z pohledu "co to zabera na disku", ale třeba "zhruba pětinásobek" po načtení do RAM už může být znát - na objemu i na rychlosti. (Tohle by už mohlo mít vliv i na spouštění různých shell-scriptů: načítání většího objemu může celkem snadno smazat o něco rychlejší běh.)
Ano, zcela teoreticky. Ve skutečnosti spouštíme dlouhá léta běžně skripty psané třeba v Pythonu a problém s rychlostí náběhu fakt aspoň já osobně nepozoruju. A samotný interpret má u mě přes 5 MB.
A teď konkrétně jeden bumrlíček v Rustu:
> time ./rg
real 0m0.006s
user 0m0.002s
sys 0m0.004s
Velikost binárky je 27 MB.
ani autorům to není jedno, proto spolu s testy denně i grafují velikost binárek. Pracovat na redukci se ale dá až máš nějaký kód, který můžeš redukovat.
Samozřejmě nikdo nechce mít 100MB jen coreutils na disku (pokud jsou samostatně).
I C bylo ve své době obrovské proti asm kódu. Doufám, že s rustem takový skok nezažijeme a řešení se najde.
Ono to není jako tenkrát, když začínalo Céčko, z několika důvodů.
Kód Rustu je obvykle bezpečnější než kód Céčka, protože je modernější a třeba nepodporuje NULL a neinicializované proměnné.
Rust také díky abstrakci přináší menší množství bezpečnostních chyb.
Negativum Rustu je zejména vyšší velikost kódu, což se ale může do budoucna zlepšit, zejména po optimalizaci kompilátoru a zlepšení klimatu pro běh.
A také, směr Assembler Céčko měl hlavně za úkol odstranit závislost kódu na hardware, což se podařilo, ale zhoršil se výkon výsledného kódu. Směr Céčko Rust nepředstavuje běhový handicap, spíše naopak, a zlepšuje se abstrakce. Lepší abstrakce může do budoucna přispět k ochotě analyzovat a optimalizovat kód.
Vidím to podobně. Zkoušel jsem si s tím nicméně trochu hrát a stáhnul jsem velikost binárek cca na 700-800K (pomocí LTO, optimalizace generovaného kódu na velikost a cargo-strip). Chtěl bych zkusit výrazněji stáhnout velikost některé utility (konkrétně nejspíš yes) pomocí zrušení závislosti na uucore a hraním s konkrétními implementačními detaily (parsování argumentů apod.).
A koneckonců, ten projekt je zatím ve verzi 0.0.12, což je dost raná verze.