WD ûntwikkelet in NVMe-bestjoerder yn Rust. Eksperimintearje mei Rust op FreeBSD

Op de Linux Plumbers 2022-konferinsje dy't dizze dagen plakfynt, joech in yngenieur fan Western Digital in presintaasje oer de ûntwikkeling fan in eksperimintele stjoerprogramma foar SSD-skiven mei de NVM-Express (NVMe) ynterface, skreaun yn 'e Rust-taal en rint by de Linux-kern peil. Nettsjinsteande it feit dat it projekt noch yn in ier stadium fan ûntwikkeling is, hat testen sjen litten dat de prestaasjes fan 'e NVMe-bestjoerder yn' e Rust-taal oerienkomme mei de NVMe-bestjoerder skreaun yn 'e C-taal beskikber yn' e kearn.

WD ûntwikkelet in NVMe-bestjoerder yn Rust. Eksperimintearje mei Rust op FreeBSD
WD ûntwikkelet in NVMe-bestjoerder yn Rust. Eksperimintearje mei Rust op FreeBSD

It rapport stelt dat de hjoeddeistige NVMe-bestjoerder yn C folslein befredigjend is foar ûntwikkelders, mar it NVMe-subsysteem is in goed platfoarm foar it ûndersykjen fan de helberens fan it ûntwikkeljen fan sjauffeurs yn Rust, om't it frij ienfâldich is, in soad brûkt, hat hege prestaasjeseasken, en hat in bewezen referinsje ymplemintaasje foar ferliking en stipet ferskate ynterfaces (dev, pci, dma, blk-mq, gendisk, sysfs).

It wurdt opmurken dat de PCI NVMe-bestjoerder foar Rust al de funksjonaliteit leveret dy't nedich is foar operaasje, mar is noch net klear foar wiidferspraat gebrûk, om't it yndividuele ferbetteringen fereasket. Takomstige plannen omfetsje it befrijen fan de koade fan besteande ûnfeilige blokken, it stypjen fan it fuortheljen fan apparaat en it lossen fan de bestjoerder, it stypjen fan de sysfs-ynterface, it ymplementearjen fan luie inisjalisaasje, it meitsjen fan in stjoerprogramma foar blk-mq, en eksperimintearjen mei it brûken fan in asynchrone programmearringmodel foar queue_rq.

Derneist kinne wy ​​​​de eksperiminten notearje útfierd troch de NCC Group om drivers te ûntwikkeljen yn 'e Rust-taal foar de FreeBSD-kernel. As foarbyld ûndersiikje wy yn detail in ienfâldige echo-bestjoerder dy't gegevens werombringt skreaun nei it bestân /dev/rustmodule. Yn 'e folgjende faze fan eksperiminten besjocht de NCC Group de mooglikheid om de kearnkomponinten fan' e kearn yn 'e Rust-taal te ferwurkjen om de feiligens fan netwurk- en triemoperaasjes te ferbetterjen.

Hoewol't it lykwols oantoand is dat it mooglik is om ienfâldige modules te meitsjen yn 'e Rust-taal, sil in strakkere yntegraasje fan Rust yn' e FreeBSD-kernel ekstra wurk fereaskje. Bygelyks, se neame de needsaak om in set fan abstraksje-lagen te meitsjen oer de subsystemen en kernelstruktueren, fergelykber mei de tafoegings dy't taret binne troch it Rust foar Linux-projekt. Yn 'e takomst planje wy ferlykbere eksperiminten út te fieren mei de Illumos-kernel en identifisearje mienskiplike abstraksjes yn Rust dy't kinne wurde brûkt yn bestjoerders skreaun yn Rust foar Linux, BSD en Illumos.

Neffens Microsoft en Google wurde sa'n 70% fan kwetsberens yn har softwareprodukten feroarsake troch ûnfeilige ûnthâldôfhanneling. It wurdt ferwachte dat it brûken fan de Rust taal sil ferminderje it risiko fan kwetsberens feroarsake troch ûnfeilich wurk mei ûnthâld, en elimineren it foarkommen fan flaters lykas tagong ta in ûnthâld gebiet neidat it is befrijd en oerrint de buffer.

Unthâld-feilige ôfhanneling wurdt foarsjoen yn Rust op it gearstallen tiid troch referinsje kontrôle, byhâlden fan foarwerp eigendom en foarwerp libben (omfang), likegoed as troch evaluaasje fan 'e korrektheid fan ûnthâld tagong ûnder koade útfiering. Rust leveret ek beskerming tsjin oerstreamingen fan heule getal, fereasket ferplichte inisjalisaasje fan fariabele wearden foar gebrûk, behannelet flaters better yn 'e standertbibleteek, tapast standert it konsept fan ûnferoarlike referinsjes en fariabelen, biedt sterke statyske typen om logyske flaters te minimalisearjen.

Boarne: opennet.ru

Add a comment