"Rust da sistemaren programazioaren etorkizuna, C muntatzaile berria da" - Intel-eko ingeniari nagusietako baten hitzaldia

Azkenaldian Open Source Technology Summi-n (OSTS) Josh Triplett, Intel-eko ingeniari senior batek, esan zuen bere konpainiak interesa duela Rust-ek etorkizun hurbilean sistemak eta maila baxuko garapena menderatzen dituen C hizkuntzarekin "parekidetasuna" lortzea. Bere hitzaldian "Intel and Rust: The Future of Systems Programming" izenburupean, sistemen programazioaren historiaz ere hitz egin zuen, nola C sistema lehenetsitako programazio lengoaia bihurtu zen, Rust-en zer ezaugarrik ematen dioten abantaila C-ren aldean eta nola erabat izan zezakeen. ordezkatu C programazioaren arlo honetan.

"Rust da sistemaren programazioaren etorkizuna, C muntatzaile berria da" - Intel-eko ingeniari nagusietako baten hitzaldia

Sistemaren programazioa aplikazio-aplikazioak sortzeko plataforma gisa balio duen softwarea garatzea eta kudeatzea da, azken hauek prozesadorearekin, RAMarekin, sarrera/irteerako gailuekin eta sareko ekipoekin elkarreragiten dutela bermatuz. Sistema-softwareak abstrakzio berezi bat sortzen du, aplikazio-softwarea sortzen laguntzen duten interfaze moduan hardwarea bera nola funtzionatzen duen xehetasunetan sakondu gabe.

Triplett-ek berak sistemen programazioa "aplikazio bat ez den edozer" gisa definitzen du. BIOSa, firmwarea, abio-kargatzaileak eta sistema eragilearen nukleoak, maila baxuko kode kapsulatutako hainbat mota eta makina birtualaren inplementazioak barne hartzen ditu. Interesgarria da Triplett-ek uste du web-arakatzailea sistema-softwarea ere badela, arakatzailea aspaldi "programa bat" baino gehiago bihurtu baita, "webguneetarako eta web aplikazioetarako plataforma" autonomo bihurtuz.

Iraganean, sistemaren programa gehienak, BIOS, abio-kargatzaileak eta firmwarea barne, muntaia hizkuntzan idazten ziren. 1960ko hamarkadan, esperimentuak hasi ziren goi-mailako hizkuntzetarako hardware euskarria ematen, PL/S, BLISS, BCPL eta ALGOL 68 bezalako lengoaiak sortuz.

Gero, 1970eko hamarkadan, Dennis Ritchie-k Unix sistema eragilerako C programazio lengoaia sortu zuen. B programazio lengoaian sortua, idazteko euskarririk ere ez zuena, C maila altuko funtzio indartsuez bete zen, sistema eragileak eta kontrolatzaileak idazteko egokienak zirenak. UNIX-en hainbat osagai, bere nukleoa barne, azkenean C-n berridatzi ziren. Gero, beste sistema-programa asko, Oracle datu-basea, Windows iturburu-kodearen zati handi bat eta Linux sistema eragilea ere C-n idatzi ziren.

C-k laguntza izugarria jaso du norabide horretan. Baina zerk bultzatu zituen garatzaileak horretara aldatu? Triplett-ek uste du garatzaileak programazio-lengoaia batetik bestera aldatzeko motibatzeko, azken hauek lehenik funtzio berriak eman behar dituztela ezaugarri zaharrak galdu gabe.

Lehenik eta behin, hizkuntzak ezaugarri berri "arrazoizko ikusgarriak" eskaini behar ditu. Β«Ezin zen hobea izan. Nabarmen hobea izan behar da trantsizioa egiteko behar den esfortzua eta ingeniaritza-denbora justifikatzeaΒ», azaldu du. Mihiztadura hizkuntzarekin alderatuta, C-k gauza asko zituen eskaintzeko. Mota seguruaren portaera onartzen zuen, eramangarritasun eta errendimendu hobea eskaintzen zuen maila altuko konstruktuekin eta, oro har, askoz kode irakurgarriagoa sortzen zuen.

Bigarrenik, hizkuntzak ezaugarri zaharrei euskarria eman behar die, hau da, C-rako trantsizioaren historian, garatzaileek ziur egon behar zuten ez zela muntaia-lengoaia baino funtzionalagoa. Triplett-ek honela dio: "Hizkuntza berri bat ezin da hobea izan, bezain ona ere izan behar du". Azkarragoa izateaz eta mihiztagailu-lengoaiak erabil zezakeen edozein datu-mota onartzeaz gain, C-k Triplett-ek "ihes-eskotila" deitzen zuena ere bazuen, hots, mihiztadura-lengoaiaren kodea bere baitan txertatzea onartzen zuen.

"Rust da sistemaren programazioaren etorkizuna, C muntatzaile berria da" - Intel-eko ingeniari nagusietako baten hitzaldia

Triplett-ek uste du orain C duela urte asko muntaia-lengoaia zena bihurtzen ari dela. "C muntatzaile berria da", adierazi du. Orain garatzaileak goi-mailako lengoaia berri baten bila ari dira, C-n pilatutako arazoak konpondu ez ezik, funtzio berri zirraragarriak eskainiko dituena. Horrelako hizkuntzak nahikoa sinesgarria izan behar du garatzaileak horretara aldatzeko, segurua izan behar du, memoriaren kudeaketa automatikoa eskaini eta askoz gehiago.

"C baino hobea izan nahi duen edozein hizkuntzak buffer gainezkatze babesa baino askoz gehiago eskaini behar du, benetan alternatiba sinesgarria izan nahi badu. Garatzaileei erabilgarritasuna eta errendimendua interesatzen zaizkie, berez azaltzen den kodea idazten dute eta lerro gutxiagotan lan gehiago egiten dute. Segurtasun arazoak ere landu behar dira. Erabilera erraztasuna eta errendimendua batera doaz. Zenbat eta kode gutxiago idatzi behar duzun zerbait lortzeko, orduan eta aukera gutxiago izango duzu akatsak egiteko, segurtasunarekin lotutakoak edo ezΒ», azaldu du Triplett-ek.

Rust eta C-ren konparazioa

2006an, Graydon Hoare, Mozillako langilea, Rust proiektu pertsonal gisa idazten hasi zen. Eta 2009an, Mozilla Rust-en garapena babesten hasi zen bere beharretarako, eta taldea ere zabaldu zuen hizkuntza gehiago garatzeko.

Mozilla hizkuntza berrian interesatzeko arrazoietako bat da Firefox C++ kode 4 milioi lerro baino gehiagotan idatzita zegoela eta ahultasun kritiko dezente zituela. Rust segurtasuna eta aldiberekotasuna kontuan hartuta eraiki zen, eta aukera ezin hobea da Firefox-en osagai asko berridazteko Quantum proiektuaren barruan, arakatzailearen arkitektura guztiz birdiseinatzeko. Mozillak Rust ere erabiltzen ari da Servo garatzeko, azkenean egungo Firefox errendatze-motorra ordezkatuko duen HTML errendatze-motorra. Beste enpresa asko Rust erabiltzen hasi dira beren proiektuetarako, besteak beste, Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu eta beste asko.

Rust-ek C lengoaiaren arazo garrantzitsuenetako bat konpontzen du. Memoriaren kudeaketa automatikoa eskaintzen du, garatzaileek eskuz esleitu eta gero aplikazioko objektu bakoitzerako askatu behar izan ez dezaten. Rust beste hizkuntza modernoetatik desberdintzen duena zera da, ez duela memoriatik erabili gabeko objektuak automatikoki kentzen dituen zabor-biltzailerik, ezta funtzionatzeko beharrezkoa den exekuzio-ingurunerik ere, Java-ren Java Runtime Environment bezalakoa. Horren ordez, Rust-ek jabetza, mailegu, erreferentziak eta bizitzako kontzeptuak ditu. "Rust-ek objektu bati deiak deklaratzeko sistema bat du jabeak erabiltzen ari den edo besterik gabe mailegatzen duen adierazteko. Objektu bat maileguan hartu besterik ez baduzu, konpilatzaileak horren jarraipena egingo du eta jatorrizkoa bere lekuan mantentzen dela ziurtatuko du erreferentzia egiten duzun bitartean. Erabilera amaitu bezain laster objektua memoriatik kentzen dela ziurtatuko du Rust-ek, konpilazio garaian dagokion deia txertatuz denbora gehigarririk gabe ", dio Triplett-ek.

Berezko exekuzio denborarik ez izatea Rust-en ezaugarri positibotzat har daiteke. Triplett-ek uste du exekutatzen dituen hizkuntzak zailak direla sistemak programatzeko tresna gisa erabiltzeko. Azaldu duenez: "Exekuzio-denbora hau hasieratu behar duzu edozein kode deitu aurretik, exekuzio-denbora hori erabili behar duzu funtzioak deitzeko, eta exekuzio-denborak berak kode gehigarria exekutatu dezake zure bizkarrean ustekabeko uneetan".

Rust-ek programazio paralelo segurua eskaintzen ere saiatzen da. Memoria segurua egiten duten ezaugarri berdinek gauzaren jarraipena egiten dute, hala nola, zein hari den zein objekturen jabe eta zein objektu pasa daitezkeen harien artean eta zeintzuk blokeatu behar duten.

Ezaugarri hauek guztiek Rust nahikoa sinesgarria egiten dute garatzaileek sistemak programatzeko tresna berri gisa aukeratzeko. Hala ere, konputazio paraleloari dagokionez, Rust C-ren atzean dago oraindik.

Triplett-ek lantalde berezi bat sortu nahi du, Rust-en beharrezko ezaugarriak sartzera bideratuko duena, sistemaren programazioaren arloan C guztiz berdindu, gainditu eta ordezkatu ahal izateko. IN haria Reddit-en, bere hitzaldiari eskainita, "FFI/C Parekidetasun taldea sortze-prozesuan dagoela eta oraindik ez du lanean hasi" esan zuen, oraingoz edozein galdera erantzuteko prest dago, eta etorkizunean behin betiko berehalako planak argitaratuko ditu. Erdoila garatzeko bere ekimenaren barruan interesdun guztientzat.

Pentsa daiteke FFI/C Parity taldeak Rust-en hari anitzeko euskarria hobetzera bideratuko duela, BFLOAT16rako euskarria sartuz, Intel Xeon Scalable prozesadore berrietan agertu den koma mugikorreko formatua, baita muntaia egonkortzera ere. kodea sartzeak.



Iturria: 3dnews.ru

Gehitu iruzkin berria