„Rust — a rendszerprogramozás jövője, a C — az új Assembly“ — egy Intel vezető mérnökének előadása

A nemrégiben megrendezett Nyílt forráskódú Technológiai Csúcstalálkozón (Open Source Technology Summit — OSTS) Josh Triplett, az Intel vezető mérnöke elmondta, hogy cége azon dolgozik, hogy a Rust a közeljövőben elérje a „paritást” a még mindig a rendszerprogramozás és alacsony szintű fejlesztés terén domináló C nyelvvel. Az előadásában „Intel és Rust: a rendszerprogramozás jövője” címmel ismertette a rendszerprogramozás történetét, a C nyelv „alapértelmezett” rendszerprogramozási nyelvvé válásának okait, a Rust által kínált lehetőségeket, amelyek előnyt biztosítanak számára a C-vel szemben, valamint azt, hogy a közeljövőben hogyan válhat teljesen helyettesítőjévé a C nyelvnek ezen a területen.

„Rust — a rendszerprogramozás jövője, a C — az új Assembly“ — egy Intel vezető mérnökének előadása

A rendszerprogramozás az a szoftverfejlesztési folyamat, amely a platformot biztosít az alkalmazási programok létrehozásához, lehetővé téve számukra a mikroprocesszorral, a memóriával, a bemeneti/kimeneti eszközökkel és a hálózati berendezésekkel való interakciót. A rendszer szoftver speciális absztrakciót teremt interfészek formájában, amelyek segítenek alkalmazásprogramokat létrehozni anélkül, hogy a felhasználóknak bele kellene merülniük abba, hogyan működik a „hardver”.

Triplett maga a rendszerprogramozást „minden, ami nem alkalmazás” kifejezéssel határozza meg. Ez magában foglalja az olyan dolgokat, mint a BIOS, firmware-ek, bootloaderek és operációs rendszerek magjai, különféle típusú beágyazott alacsony szintű kódok, valamint virtuális gépek megvalósítása. Érdekes, hogy Triplett úgy véli, hogy a webböngésző is rendszerprogramozás, mivel a böngésző régen többé vált, mint „csak egy program”, és önálló „platformmá” alakult a weboldalak és webalkalmazások számára.

A múltban a legtöbb rendszerprogramot, beleértve a BIOS-t, bootloadereket és firmware-eket, assembly nyelven írták. Az 1960-as években kezdődtek el kísérletek a magas szintű nyelvek hardvertámogatásának biztosítására, amely olyan nyelvek létrejöttéhez vezetett, mint a PL/S, BLISS, BCPL és ALGOL 68.

Ezután, az 1970-es években Dennis Ritchie létrehozta a C programozási nyelvet az Unix operációs rendszer számára. A B programozási nyelven alapulva, amely még a típusellenőrzést sem támogatta, a C tele volt olyan erőteljes magas szintű funkciókkal, amelyek a legjobban illeszkedtek operációs rendszerek és illesztőprogramok írásához. Az UNIX több komponensét, beleértve a magját is, végül C nyelvre írták át. Később sok más rendszerprogram, beleértve az Oracle adatbázist, a Windows forráskód nagy részét és a Linux operációs rendszert, szintén C nyelven készült.

A C óriási támogatást kapott ezen a téren. De mi késztette a fejlesztőket arra, hogy áttérjenek rá? Triplett szerint ahhoz, hogy a fejlesztőket motiválja egy új programozási nyelv használatára, a nyelvnek elsősorban új funkciókat kell biztosítania, anélkül hogy elveszítené a régi lehetőségeket.

Először is, a nyelvnek "eléggé lenyűgöző" új funkciókat kell kínálnia. "Nem lehet egy kicsit jobb. Sokkal jobbnak kell lennie ahhoz, hogy igazolja a mérnökök erőfeszítéseit és idejét, amely szükséges az áttéréshez" — magyarázza. Az assembly nyelvhez képest a C sok olyan dolgot tudott kínálni, mint a biztonságos típusellenőrzés bizonyos mértékig, jobb hordozhatóságot és teljesítményt magas szintű konstrukciókkal, valamint összességében sokkal olvashatóbb kódot generált.

Másodsorban, a nyelvnek támogatnia kell a régi funkciókat, ami azt jelenti, hogy a C nyelvre való áttérés történetében a fejlesztőknek biztosnak kellett lenniük abban, hogy a nyelv nem kevesebb funkcióval rendelkezik, mint az assembly nyelv. Triplett tisztázza: "Az új nyelv nem elég, hogy csak jobb legyen, annak nem szabad rosszabbnak sem lennie." A C nemcsak gyorsabb volt és támogatta az assembly nyelv által használt bármilyen adat típust, hanem rendelkezett azzal is, amit Triplett "sürgősségi ajtónak" nevezett, vagyis lehetőséget biztosított assembly nyelvű kódok beillesztésére is.

„Rust — a rendszerprogramozás jövője, a C — az új Assembly“ — egy Intel vezető mérnökének előadása

Triplet úgy véli, hogy a C most kezd olyan lenni, mint amit az assembly nyelv jelentett sok évvel ezelőtt. "A C az új Assembly", állítja ő. Most a fejlesztők egy új magas szintű nyelvet keresnek, amely nemcsak a C-ben felhalmozódott problémákat oldja meg, amiket már nem lehet javítani, hanem új, lenyűgöző lehetőségeket is kínál. Az ilyen nyelvnek elég meggyőzőnek kell lennie ahhoz, hogy a fejlesztőket átállítsa rá, biztonságosnak kell lennie, automatikus memória kezelés biztosításával és még sok mással.

"Bármelyik nyelv, amely jobb szeretne lenni a C-nél, sokkal többet kell hogy kínáljon, mint pusztán a puffertúlcsordulás elleni védelmet, ha valóban meggyőző alternatíva szeretne lenni. A fejlesztők a használhatóságra és a teljesítményre vágynak, olyan kód írására, amely nem igényel magyarázatot, és több munkát végez el kevesebb sorral. A biztonsági problémák megoldása is szükséges. A használhatóság és a teljesítmény szorosan összefonódik. Minél kevesebb kódot kell megírni valaminek az eléréséhez, annál kevesebb lehetőség van a biztonsággal kapcsolatos hibákra, vagy bármilyen más típusú hibákra.”, - magyarázza Triplet.

A Rust és a C összehasonlítása

Még 2006-ban Graydon Hoare, a Mozilla munkatársa elkezdte írni a Rust-ot, mint személyes projektet. 2009-ben a Mozilla elkezdte támogatni a Rust fejlesztését saját szükségletei számára, és kibővítette a csapatot a nyelv további fejlesztésére.

Az egyik oka annak, hogy a Mozilla érdeklődött egy új nyelv iránt, az, hogy a Firefox több mint 4 millió sor C++ kódra volt írva, és több kritikus sebezhetőséggel is rendelkezett. A Rust-ot a biztonsági és párhuzamossági követelmények figyelembevételével hozták létre, így ideális választás sok Firefox összetevő átírásához a Quantum projekt keretében, amely a böngésző architektúrájának teljes átdolgozását célozza. A Mozilla a Rust-ot a Servo HTML renderelő motor fejlesztésére is használja, amely a jövőben felváltja a jelenlegi Firefox renderelő motorját. Számos más vállalat is elkezdte használni a Rust-ot a projektjeiben, beleértve a Microsoftot, a Google-t, a Facebookot, az Amazont, a Dropboxot, a Fastlyt, a Chefet, a Baidu-t és sok másikat.

A Rust megoldást kínál a C nyelv egyik legfontosabb problémájára. Automatikus memória kezelésével a fejlesztőknek nem kell manuálisan fenntartaniuk, majd felszabadítaniuk a memóriát minden objektum esetében az alkalmazásban. A Rust-ot az különbözteti meg más modern nyelvektől, hogy nem rendelkezik szemétgyűjtővel, amely automatikusan eltávolítja a memóriából a nem használt objektumokat, valamint a működéséhez szükséges futási környezettel, mint például a Java Runtime Environment a Java esetében. E helyett a Rust birtoklás, kölcsönzés, hivatkozások és élettartam koncepcióival dolgozik. "A Rust rendelkezik egy objektum hívásainak deklarációs rendszerével, amely lehetővé teszi, hogy jelezze, hogy a tulajdonos használja-e, vagy csak kölcsönvett. Ha csak kölcsönöz egy objektumot, a fordító figyelemmel kíséri ezt, és biztosítja, hogy az eredeti a helyén maradjon, míg hivatkozásban áll. A Rust azt is meg fogja győződni, hogy az objektum azonnal eltávolításra kerül a memóriából, amint a használata befejeződik, a megfelelő hívás beillesztésével a kódba a fordítás során, további időbeli költségek nélkül" - mondja Triplett.

A saját futási környezet hiánya szintén a Rust pozitív tulajdonságai közé sorolható. Triplett úgy véli, hogy azok a nyelvek, amelyek rajta futnak, nehezen használhatók rendszerszintű programozáshoz. Ahogy magyarázza: "Először is inicializálnia kell ezt a környezetet, mielőtt bármilyen kódot hívhatna, használni kell ezt a környezetet a funkciók hívásához, és maga a környezet háttérben végezhet el további kódokat váratlan időpontokban."

A Rust emellett arra törekszik, hogy biztonságos párhuzamos programozást nyújtson. Ugyanezek a funkciók, amelyek biztonságossá teszik a memóriát, figyelemmel kísérik például, hogy melyik szálhoz tartozik melyik objektum, és mely objektumok vihetők át a szálak között és amelyek blokkolásra szorulnak.

Mindezek a funkciók teszik a Rust-ot meggyőzővé, hogy a fejlesztők válasszák új eszközként a rendszerszintű programozáshoz. Azonban a párhuzamos számítások szempontjából a Rust még mindig kissé lemaradt a C-től.

Triplet létrehoz egy speciális munkacsoportot, amely a Rust szükséges funkcióinak bevezetésével foglalkozik, hogy az teljesen meg tudja felelni, felülmúlja és helyettesítse a C-t a rendszerszintű programozás területén. témában a Redditen, amely a beszédére vonatkozik, elmondta, hogy "az FFI/C Parity csoport létrehozása folyamatban van, és még nem kezdte meg munkáját", de készen áll arra, hogy bármilyen kérdésre válaszoljon, a jövőben pedig közzéteszi a Rust fejlesztési terveit az általa kezdeményezett projekt keretein belül minden érdeklődő számára.

Feltételezhető, hogy az FFI/C Parity csoport elsőként a Rust több szálú támogatásának javítására, a BFLOAT16 támogatásának bevezetésére, amely a lebegőpontos számok ábrázolásának formátuma és az új Intel Xeon Scalable processzorokban jelent meg, valamint a beágyazott assembler kód stabilizálására összpontosít.



Forrás: 3dnews.ru
Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster