Çarçoveyek ji bo nivîsandina ajokarên ewledar ên ji bo kernel Linux li Rust

Josh Triplett, ku li Intel dixebite û di komîteya çavdêriya pêşkeftina Crates.io de ye, di Civîna Teknolojiya Çavkaniya Vekirî de diaxive. danasîn komeke xebatê ya ku armanca wê ew e ku zimanê Rust bi zimanê C-yê re di warê bernamesaziya pergalê de wekhev bike.

Di grûbek xebatê ya ku di pêvajoya çêkirinê de ye, pêşdebirên Rust, bi endezyarên Intel re, dê taybetmendî amade bikin ku fonksiyona ku divê di Rust de ji bo bernameya pergalê were bicîh kirin diyar dike. Bernamekirina pergalê bi gelemperî pêdivî bi manîpulasyonek nizm heye, wek mînak pêkanîna rêwerzên pêvajoyê yên îmtiyaz û bidestxistina agahdariya berfireh di derbarê rewşa pêvajoyê de. Ji taybetmendiyên wekhev ên ku berê ji bo Rust hatine pêşve xistin, piştgirî ji bo strukturên nenavkirî, yekîtî, têkelên zimanê meclîsê (makroya "asm!") û formata jimareya xala herikîn BFLOAT16 tê destnîşan kirin.

Josh bawer dike ku paşeroja bernamesaziya pergalê ya Rust e, û zimanê C di rastiyên nûjen de cîhê ku di salên borî de ji hêla Meclîsê ve hatî dagir kirin îdîa dike. Zingar
ne tenê pêşdebiran ji pirsgirêkên xwerû yên zimanê C-yê yên ku ji ber xebata kêm-asta bi bîranînê re çêdibin xilas dike, lê di heman demê de fersendê dide ku wê di pêşkeftina paradîgmayên bernamesaziya nûjen de bikar bînin.

Dema nîqaşan performansa
Josh bi ramana zêdekirina şiyana pêşvebirina ajokaran di kernel Linux-ê de bi zimanê Rust ve hat, ku dê gengaz bike ku bi hewildanek hindiktirîn, ajokarên ewletir û çêtir biafirîne, bêyî pirsgirêkên wekî gihîştina bîranînê piştî azadkirinê, null. dereferences pointer û zêdekirina tampon.

Greg Kroah-Hartman, ku berpirsiyarê parastina şaxê aram a kernel Linux-ê ye, amade ye ku çarçoveyek ji bo pêşdebirina ajokarên bi zimanê Rust li kernelê zêde bike, heke ew li ser C-ya rast avantajên wî hebin, mînakî, ew ê ewledar peyda bike. girêdanên li ser Kernel API. Wekî din, Greg vê çarçovê tenê wekî vebijarkek dihesibîne, ji hêla xwerû ve ne çalak e, da ku Rust wekî girêdanek avahîsaziyê li ser kernelê venegire.

Derket holê ku ji niha ve gelek tîm di vî warî de dixebitin. Mînakî, pêşdebirên pargîdaniya "Fish in a Berrel" amade kirin amûrek ji bo nivîsandina modulên barkirî yên ji bo kernel Linux bi zimanê Rust, bi karanîna komek qatên razber li ser navber û strukturên kernelê ji bo zêdekirina ewlehiyê. Qat bixweber li ser bingeha pelên sernavê kernelê yên heyî bi karanîna karûbar têne çêkirin bingen. Clang ji bo avakirina qatan tê bikar anîn. Digel navberan, modulên berhevkirî pakêta staticlib bikar tînin.

Dûberîn pêşdikeve Projeyek din balê dikişîne ser pêşxistina ajokarên ji bo pergalên pêvekirî û cîhazên IoT, ku di heman demê de bindgen bikar tîne da ku li ser bingeha pelên sernavê kernel qatan çêbike. Çarçove destûrê dide te ku hûn ewlehiya ajokerê bêyî guheztina kernelê baştir bikin - li şûna ku hûn astên îzolekirinê yên zêde ji bo ajokaran di kernelê de biafirînin, tê pêşniyar kirin ku di qonaxa berhevokê de pirsgirêkan asteng bikin, bi karanîna zimanê Rust-ya ewledartir. Tê texmîn kirin ku nêzîkatiyek wusa dibe ku ji hêla hilberînerên amûran ve were xwestin ku ajokarên xwedan bi lez û bez bêyî ku vekolînek rast bimeşînin.

Ne hemî fonksiyonên armanckirî hîn nehatine bicîh kirin, lê çarçove jixwe ji bo xebatê maqûl e û ji bo nivîsandina ajokerek xebitandinê ji bo kontrolkera Ethernet USB ya LAN9512 ya ku di panela Raspberry Pi 3 de hatî peyda kirin hate bikar anîn. Ajokara heyî ya smsc95xx, ku ji hêla ve hatî nivîsandin zimanê C. Tê destnîşan kirin ku mezinahiya modulê û sermaya ji hêmanên dema xebitandinê dema ku ajokerek li Rust pêşdixe ne girîng e, ku dihêle ku çarçove ji bo cîhazên bi çavkaniyên tixûbdar were bikar anîn.

Source: opennet.ru

Add a comment