Proč zrovna padla volba na Rust a ne třeba na Go nebo Python?
Jsou to nízkoúrovňové utility, u kterých chcete, aby rychle nastartovaly a neměly žádnou zbytečnou režii. Tím určitě padá Python, a Go pro tohle také není vhodný – je to vysokoúrovňový jazyk, který má režii (třeba automatická správa paměti). Rust je stejně nízkoúrovňový, jako C, ale má vlastnosti (zejména týkající se bezpečnosti), které C nemá.
Proč zrovna padla volba na Rust a ne třeba na Go nebo Python?
Protože cílem nebylo přepsat coreutils. Cílem je přepsat úplně všechen kód v C a C++ do Rustu, protože Rust je úplně nejlepší programovací jazyk všech dob. Protože memory safety (ať už to v pojetí Rustu znamená cokoliv) je ta jediná úplně nejdůležitější věc v IT. Coreutils jsou jen jeden malý krok na této křížové výpravě. A všichni, kdo si myslí, že tenhle projekt je blbost, nebo dokonce nemají rádi Rust, jsou dinosauři odmítající pokrok.
Vy všichni nechápete, že Rust je jen jedna etapa ve vývoji programovacích jazyků. A ano, přepsat všechen kód v C a C++ do něčeho jiného je více než žádoucí a není důvod sem psát to, co je napsáno na stránce projektu uutils (C například předělávalo svůj tooling mnohokrát a vždy to byla ergonomická tragédie).
Jo, mohli jste to přepsat do jiného jazyka, pokud máte lepší. A až/pokud bude někdy pro tyhle věci nějaký jazyk lepší než Rust, můžete, jsem zvědav na přidanou hodnotu.
Vy všichni nechápete, že Rust je jen jedna etapa ve vývoji programovacích jazyků.
Hodně nešťastná etapa.
A ano, přepsat všechen kód v C a C++ do něčeho jiného je více než žádoucí
Ne, není. A rozhodně ne do Rustu.
C například předělávalo svůj tooling
Jaký tooling máte na mysli? Pod pojmem "tooling programovacího jazyka" si představuji kompilátor, standardní knihovnu, language server pro editor/IDE, generátor dokumentace (Doxygen), statické analyzátory, podporu pro debugger. U linkeru už je docela diskutabilní, jestli patří do toolingu jazyka. Různé build systémy a package managery tam podle mého názoru určitě nepatří.
Jo, mohli jste to přepsat do jiného jazyka, pokud máte lepší.
Proč? Co je špatného na C++, popř. na C pro již existující kód nebo na platformách, kde není k dispozici C++?
Projevuješ úžasnou dávku nepochopení. Nebo nechápavého spíš děláš.
> Hodně nešťastná etapa.
O tomhle se můžeme přít donekonečna. Mezitím jednotlivci, menší firmy i ty obrovské přepisují spoustu kódu z C a C++ do Rustu a nevím o nikom, kdo by to dělal naopak (snad někde v embed světě to je možné, ale tam coreutils nespadají). Vyzýval jsem, abyste zkusili ty utility přepsat do něčeho jiného než do Rustu, ale to jsi asi nezaznamenal a rozhodně neudělal.
> Jaký tooling máte na mysli?
Nastuduj si, co dělá třeba cargo a srovnej to s hrůzami typu cmake.
> Co je špatného na C++, popř. na C pro již existující kód nebo na platformách, kde není k dispozici C++?
Tak nějak všechno. a v kódu GNU Core Utilities to je jasně vidět. Nové programovací jazyky nevznikají a hlavně se neprosazují proto, že ty předchozí nemají chybu.
Memory safety je supr věc, ale Rust je hlavně docela pohodlný na vyjadřování (vocuď-pocuď samozřejmě). Tak ony jsou i jiné jazyky, které jsou pěkné, pohodlné a s moderní syntaxí. Ale ne každý je tak nízkoúrovňový a štíhlý. A ony jsou samozřejmě i jiné jazyky, které jsou nízkoúrovňové a štíhlé, ale zase nejsou tak pohodlné na psaní nebo nemají memory safety...
> "s moderní syntaxí"
> Co to je, ta moderní syntax?
Moderní syntax je syntax která opravila chyby a omyly C/C++ které se nahromadili od roku 1985 a reflektuje že je rok 2010+ a máme tu úplně jinou sortu programátoru kteří jsou zvyklí na trochu jiné features a syntax v programovacích jazycích. Jinak řečeno to je podobné jako že C++ mělo moderní syntax oproti např. ASM
17. 9. 2026, 23:37 editováno autorem komentáře
Moderní syntax je syntax která opravila chyby a omyly C/C++
Spíš nahradila podivnosti syntaxe C a C++ jinými podivnostmi, které nejsou o moc lepší nebo horší, jen jsou nové a jiné. Hlavně když za jeden den koukám do zdrojáků v C, C++, Pythonu, make, cmake a shellu, tak málo co ocením tak, jako sedmou variantu zápisu příkazu if :-)
nahromadili od roku 1985
C je ještě o hezkých pár let starší.
Ale stejně mám pocit, že "moderní" je tady myšleno jako "lepší", ale ve skutečnosti to neznamená vůbec nic.
A se kterým C++? On se ten jazyk dost mění a bordel způsobuje i míchání verzi standardu v jednom projektu.
Verze 89 je proti 11 a proti 17/20 docela rozdíl. A to nemluvím o STL nebo (především) magii v boostu.
Autoptr vs unique/shared. Korutiny (a syntaxe pro ne). Move, explicitní this, atd.
C++ je kanon namířený na vlastní nohu bez pojistek. A můj ne úplně malý embedded projekt je v Rustu kratší a čitelnější než byl v C++.
> A tuší někdo, co to memory safety v pojetí Rustu přesně je a jaké má všechny důsledky?
To ti řeknu naprosto přesně.
Rustař dostane zadání, zkontroluje všechny panic a řekne, že na 99% to nespadne. (A já jako zadavetel se 70% jistotou dokážu pracovat.)
C++ dostane zadání, dá tomu enormní množství úsilí (většinou to nebejvají žádní blbci), prožene to hromadou toolů, které mají zkontrolovat všechno možný i nemožný, ale když se zeptám, zda mi zaručí, že to u klienta spadne, jen hořce pokrčí rameny.