Rust: 5 éves lett

A Rust 5 évéről egy tartalmas blogbejegyzés olvasható:  https://blog.rust-lang.org/2020/05/15/five-years-of-rust.html

Elgondolkoztam, hogy röpül az idő. Az 1.12-es verziónál kezdtem a Rust-tal ismerkedni. Azóta 6 hetente lépésről lépésre, de tényleg sokat fejlődőtt ez a nyelv.
Néhány verzióját kimondottan vártam, a benne levő új képességek miatt. A megtanulásával az elején mondjuk sokat szívtam, mert Rust esetén sokkal keményebb szabályok vannak akár a C-hez, akár a Python-hoz viszonyítva. Továbbá akkor még kevésbé vezetett rá a megoldásra a fordító hibaüzenete.

Képességei terén valamelyest emlékeztet a Python-ra, de annál sokkal gyorsabb futással.
A jelfeldolgozás viszont az a terület, ahol ha kell a tempó is, akkor FFI-vel C-ben írt betétet célszerű alátenni. Szerencsére könnyen integrálható Rust cc modulját használó build.rs segítségével.

A Linux disztribúciókban is megtalálható a Firefox kapcsán, így könnyen telepíthető.

$ sudo apt install cargo

Kíváncsi leszek a Rust jövőjére, de amilyen projektek íródnak már benne, vélhetőleg már velünk marad.

Addig is boldog szülinapot neki, 5 éves lett!

Hozzászólások

Ha a sebesség miatt C betét kell, akkor maradok Java-n...

Rádiófrekvenciás jelfeldolgozásnál egyelőre C-ben írt résszel volt praktikus operálnom. Legalábbis Rust-tal nem tudtam NEON-ra azokat az alacsony szintű gyorsító trükköket közvetlenül bevetni, amiket C-ben. Valószínüleg Java esetén is kellene alá a C betét erre a speciális feladatra.

Egy érdekes sebességteszt Rust vs. Java:
   https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/rus…

Az OK, hogy Java alatt is JNI-n kersztül kellene hívogatni a C-ből fordított kódot, de akkor esetedben inkább az a gond, hogy a Rust fordítója nem tudott ARM SIMD utasításkészletre fordítani, ha jól értem, nem pedig, hogy alapból a a Rust-ból fordított kódok lassúak a C-hez képest.

<troll>
Képzelj ide egy hozzászólás valami olyan kezdetű szöveggel, hogy "Meséld el lécci, hogy a C-ből mennyire könnyű C-rutinokat hívni" ahol szavanként linkelem a blogodból a c fordítási szívásaidat és pont olyan hosszú, hogy kifusson a témából a blogod :P :)

Csak lusta vagyok 9 oldalnyi blogpostot végigscannelni, hogy milyen hosszú szöveg kell :)
</troll>

BlackY

"Gyakran hasznos ugyanis, ha számlálni tudjuk, hányszor futott le már egy végtelenciklus." (haroldking)

Ugyanmár, mi komplex lenne abban, hogy szép lassan csinálsz egy saját disztrót az AIX kernel fölé, mert mindent is kézzel kell forgatnod a depek miatt? :) Nézd meg hány Linux disztró van, ha olyan fú de komplex feladat lenne, biztos nem lenne ennyi ;)

BlackY

"Gyakran hasznos ugyanis, ha számlálni tudjuk, hányszor futott le már egy végtelenciklus." (haroldking)

Jaja, C-ben minden megírható. Ez igaz. Ráadásul a mai fordítókat kiismerve nagyjából az optimális assembly környéki tempóval.

A gyakorlat viszont azt mutatja, hogy
- van sok feladat, amely több emberóra ráfordítással lesz megvalósítható C-ben, mint pl. Rust-ban nekiálva (cserébe mondjuk 1,2-szeres tempóval fut az átlagos C-ben írt feladat).
- C esetén marad benne pár alacsony szintű biztonsági rés, mert a hús-vér progamozó a sok lehetséges helyből mindössze néhánynál mégsem figyelt oda kellőképpen a memóriahatárokra, stb.

Elég szar egy függvényben olyan félreszámolást felkutatni, amit egy másik C fájlban elkövetett adatstruktúra túlírás okozott. Ahogy az sem kellemes, hogy allokációs hiba következtében lehet kívülről kódinjektálást végrehajtani.

További szépségek, amiket C-ben vagy C++-ban nehezebb megugrani: https://www.youtube.com/watch?v=Dbytx0ivH7Q