A FreeBSD projekt fontolgatja a Rust beengedését az alaprendszerbe

Címkék

A FreeBSD projekt a Rust beengedését fontolgatja az alaprendszerbe egy, a freebsd-hackers levelezési listára beküldött levél szerint:

In a recent thread on src-committers, we discussed the costs and benefits of including Rust code in the FreeBSD base system. To summarize, the cost is that it would double our build times. imp suggested adding an additional step after buildworld for stuff that requires an external toolchain. That would ease the build time pain. The benefit is that some tools would become easier to write, or even become possible.

Részletek itt.

Hozzászólások

Úgy látom, leszavazták, mert problémás magát a Rust fordítót lefordítani. Még egy ok, amiért a Rustot lehet utálni :).

Nagyon helyes, a BSD-knek pont az az előnye, hogy megmaradnak a hagyományos POSIX és C egyszerűsége mellett, semmi systemd, Rust meg egyéb buzzword, és nem szállnak fel mindig a legújabb hájpvonatjára a soydeveknek.

Az alaprendszerben nincs ott ennek a helye. Akinek ilyen rustos reimplementáció kell, és nem érdekli a lassú fordítás, felteszi portsból.

Bár a FreeBSD-re annyiból neheztelek, hogy a 16-os kiadásra állítólag megszüntetik a 32 bites támogatást. Az szerintem hiba, a BSD-knek nagyon fekszik, hogy muzeális gépen is menjenek. Egy modern, mainstream Linux disztrónál, Windowsnál még megértem, ott támogatom is, hogy ne tartsák tovább lélegeztetőgépen a 32 bitet, mert már így is morbid ideje túlél. Mindegy, OpenBSD-t, NetBSD-t továbbra is fel lehet tenni 32 bites gépekre, viszont a GhostBSD-seket és NomadBSD-seket érinteni fogja.

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

Nem gondolom, hogy a C-nek örökké standard nyelvnek kell lennie.

Szeretem, de már rég kiszolgálta magát.

Ugyanakkor erősen szubjektív és érvekkel nem alátámasztható véleményem szerint nem a Rust a helyes út. Egy olyan nyelvvel váltanám ki a C-t, ami C-re fordít, ezáltal megőrizve a C hatalmas fordító és könyvtár supportját.

Azt nem is mondtam, hogy örökké annak kell legyen, és minden OS-t csak abban lehet írni, de a BSD-k pont arról szólnak, hogy az eredeti BSD-k szabványosságát, C alapúságát, konzervativizmusát viszik tovább.

A rustosoknak így van elég esélyük, sok mindent újraírnak ezen a nyelven, meg beengedték a Linux kernelbe is. Sőt, vagy egy komplett OS is, a Redox OS, ami abban van írva, legyen ez elég, ne legyen a Rust benyomva mindenhová, olyan helyekre is, ahol semmi szükség nincs rá. Sőt, ha a rustosok RustBSD-t akarnak, azt is megtehetik, a kód nyílt, forkolhatják, újraírhatják Rust-ban, senki nem gátolja meg őket.

Van pár nyelv, ami tud C-re fordítani, az újak közül pl. a Nim, Zig erről szól. Még nem próbáltam, de aki használja, eléggé dicséri őket. Egyelőre nem sok mindent írtak bennük, így még nem foglaltam állást velük kapcsolatban. A Rust nem a kedvencem, sem a szintaxisa, sem a cargo alapú bloat fordítása, bár elismerem, hogy azért vannak előnyei. Azt is elismerem, hogy nem szabad örökké leragadni a C-nél, ahogy fejlődik a technológia, úgy ki kéne tudni jobbat találni. Azonban amíg az van elég jó a C, én nem dobnám csak azért, mert régi. Sok régi nyelvet használnak még, nem csak C, de pl. Fortran, Lisp, SQL, stb. mert elég jók a mai napig. Meg sok ocsmány nyelvet is, pl. Cobol, ami elég elavult, szintaxisában (oszlopfüggő behúzás) és szemléletében is.

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

Szerencsére leszavazták, így ez mostanában még nem történik meg.

Ugyanakkor félő, hogy a trendgerillák addig próbálkoznak beépülni közéjük, amíg egyszer sikeresen el nem indul a BSD szétgányolása is a Rust-idealizmussal. Onnan pedig már nem lesz visszaút. Elég ijesztő kép rajzolódik ki, a kifogásokat végigolvasva. [1]

fusefs tests.  Absolutely impossible to do in C.  I considered Rust, but went
  with C++ so they could live in base.  They are too closely coupled to
  fusefs(5) to live out-of-tree.
  https://github.com/freebsd/freebsd-src/tree/main/tests/sys/fs/fusefs

Rust létezése előtt vajon miben csinálták volna meg?

* devd.  Currently C++, but imp suggested a rewrite.
  https://github.com/freebsd/freebsd-src/tree/main/sbin/devd

Nincs™ mese, újra kell™ írni. Miben másban, mint Rust-ban.

* zfsd.  Currently C++, but I've long pondered a rewrite.  Using Rust would
  make it more testable.
  https://github.com/freebsd/freebsd-src/tree/main/cddl/usr.sbin/zfsd

Mert nincs ezeregy test-framework C++ -hoz is.

* nscd.  Currently C, but confusing and with no test coverage.  I've
  contemplated a rewrite myself, but I don't want to do it in C.
  https://github.com/freebsd/freebsd-src/tree/main/usr.sbin/nscd

Értitek.. Nem akarja C-ben megírni.

Babzsákfejlesztőék már a spájzban vannak. Szerencsére vannak még józanul gondolkodók. [2] [3]

Na, mi ez a pálfordulás, hajbikám? Múltkor még ellene voltál a BSD-knek, hogy nem rajzolnak ki olyan gyorsan, mint az XP GDI :D

Egyetértek amúgy megint veled. Annak ellenére, hogy nem szeretem én se a Rust-ot, nekem nincs ellenemre, hogy valamit abban írjanak, csak a BSD-ket hagyják békén vele. Amit még nem szeretek ezekben az újraírásokban, hogy legtöbbször időpocsékolás. Újraírnak valamit, ami máris implementálva van, máris jól működik, persze memory safe-ebb lesz, meg minden, de lesz belőle két implementáció, ezzel egyébként fragmentálódást is okoznak. Közben meg létezik egy csomó szoftver, meg megoldás, probléma, ami még nincs semmilyen nyelven implementálva, pedig lenne rá igény, na, azt írhatnák meg a meglévő projektek újraírása helyett. Tőlem írják, amibe akarják, felőlem lehet Rust is, csak legyenek akkor hasznosabbak, eredetibbek.

Van erre az utóbbira is példa. Pl. a Ruffle, egy Rust-ban írt, nagyon jó Adobe Flash emulátor, hiánypótló volt, mert nem volt még belőle normális, teljes értékű implementáció, csak befejezetlen hobbiprojektek. Így valóban hasznosak voltak a rust-os fejlesztők, mert valami újat, használhatót alkottak, ami előtte nem létezett, és nem azt implementálták újra, ami máris létezik. Így okés az egész Rust-ban írás.

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

Na, mi ez a pálfordulás, hajbikám? Múltkor még ellene voltál a BSD-knek

Nem voltam, nem vagyok és nem is leszek ellene egyetlen operációs rendszernek, így a BSD-knek sem.

hogy nem rajzolnak ki olyan gyorsan, mint az XP GDI :D

Ez továbbra is tény. Így én továbbra is Windows XP-t fogok használni. Az, hogy jobban preferálok egy oprendszert egy másiknál, nem azt jelenti, hogy ellene vagyok bármelyik másiknak is. Továbbá, emlékeztetnélek, hogy BSD-n is pont ugyanaz a GTK3/GTK4/Qt5/Qt6-bloat rajzol, mint Linuxon.

Egyetértek amúgy megint veled.

Ennek örülök.

Újraírnak valamit, ami máris implementálva van, máris jól működik, persze memory safe-ebb lesz, meg minden

Annyira lesz memory safe, amennyire a Rust és a használt library-k memory safe-ek. A hangsúly a használt library-ken van. Emellett, a memory safety mindössze egy összetevője a biztonságnak a sok tucatnyi közül. Erre újraírásokat alapozni nem csak nettó időpocsékolás, de szimpla bigottság is, csőlátással, szemellenzővel. Azt kijelenteni vagy azzal influenszerkedni, hogy a Rust-ban írt kód biztonságosabb™, mint a C-ben írt kód, a csillagok lehazudozásával egyenértékű.

Tőlem írják, amibe akarják, felőlem lehet Rust is, csak legyenek akkor hasznosabbak, eredetibbek.

Spoiler: Nem lesznek. Lassabbak, bloat-abbak, CPU- és memóriazabálóbbak lesznek, mivel a Rust-ban kényelmeskedő babzsákfejlesztők messze nem olyan kompetensek, mint akik az eredeti megvalósításokat írták. Carcolt kollégánk egyik kedvenc idézetét tőlem tudnám idézni. :) [1] A legacy rendszereket még valódi programozók, mérnökök írták, a mai frameworkökben kényelmeskedő babzsákfejlesztő divatmajmok és megélhetésiek helyett. Egy jól összerakott legacy rendszer még ma is időtálló és csak azért hívják legacynak, hogy kínálati űrt teremtsenek a kerékújrafeltaláló IT-divatmajom, startupozgatásban utazó rétegeknek. És pont ezekből a rétegekből termelődnek ki azok a babzsákfejlesztők, akik a Rust-ban újraírjuk a világot kampány éllovasai.

Van erre az utóbbira is példa. Pl. a Ruffle, egy Rust-ban írt, nagyon jó Adobe Flash emulátor, hiánypótló volt, mert nem volt még belőle normális, teljes értékű implementáció, csak befejezetlen hobbiprojektek.

A Gnash-t (GNU) befejezetlen hobbiprojektnek tekinted? A Pepper Flash-t (Google) befejezetlen hobbiprojektnek tekinted? Habár utóbbi nem volt FOSS.

Így valóban hasznosak voltak a rust-os fejlesztők, mert valami újat, használhatót alkottak, ami előtte nem létezett, és nem azt implementálták újra, ami máris létezik. Így okés az egész Rust-ban írás.

Igazán hasznosnak csak akkor tudnám tekinteni, ha tényleg olyat alkottak benne, amit más előtte nem. Az, hogy más már megalkotta előtte, csak mondjuk nem volt FOSS, aztán Rust-ban újraírják (lásd pl. AnyDesk vs. RustDesk), valahol a totál felesleges és az igazán hasznos között van félúton.