Ang WD nagpalambo sa usa ka drayber sa NVMe sa Rust. Pag-eksperimento sa Rust sa FreeBSD

Sa komperensya sa Linux Plumbers 2022 nga nahitabo karong mga adlawa, usa ka inhenyero gikan sa Western Digital naghatag usa ka presentasyon sa pag-uswag sa usa ka eksperimento nga drayber alang sa mga drive sa SSD nga adunay interface sa NVM-Express (NVMe), gisulat sa Rust nga sinultian ug nagdagan sa Linux kernel lebel. Bisan pa sa kamatuoran nga ang proyekto anaa pa sa sayo nga yugto sa pag-uswag, gipakita sa pagsulay nga ang pasundayag sa drayber sa NVMe sa Rust nga pinulongan katumbas sa drayber sa NVMe nga gisulat sa C nga pinulongan nga anaa sa kernel.

Ang WD nagpalambo sa usa ka drayber sa NVMe sa Rust. Pag-eksperimento sa Rust sa FreeBSD
Ang WD nagpalambo sa usa ka drayber sa NVMe sa Rust. Pag-eksperimento sa Rust sa FreeBSD

Ang taho nag-ingon nga ang kasamtangan nga drayber sa NVMe sa C hingpit nga makatagbaw alang sa mga nag-develop, apan ang subsystem sa NVMe usa ka maayong plataporma alang sa pagsuhid sa posibilidad sa pagpalambo sa mga drayber sa Rust, tungod kay kini yano ra, kaylap nga gigamit, adunay taas nga mga kinahanglanon sa performance, ug adunay usa ka napamatud-an nga pagpatuman sa pakisayran alang sa pagtandi ug pagsuporta sa lainlaing mga interface (dev, pci, dma, blk-mq, gendisk, sysfs).

Namatikdan nga ang drayber sa PCI NVMe alang sa Rust naghatag na sa pag-andar nga gikinahanglan alang sa operasyon, apan dili pa andam alang sa kaylap nga paggamit, tungod kay kini nanginahanglan mga indibidwal nga pag-uswag. Ang umaabot nga mga plano naglakip sa pagtangtang sa code sa kasamtangan nga dili luwas nga mga bloke, pagsuporta sa pagtangtang sa device ug pagdiskarga sa mga operasyon sa drayber, pagsuporta sa interface sa sysfs, pag-implementar sa lazy initialization, paghimo og driver para sa blk-mq, ug pag-eksperimento sa paggamit sa asynchronous programming model para sa queue_rq.

Dugang pa, atong mamatikdan ang mga eksperimento nga gihimo sa NCC Group aron sa pagpalambo sa mga drayber sa Rust nga pinulongan alang sa FreeBSD kernel. Isip usa ka pananglitan, among gisusi sa detalye ang usa ka yano nga echo driver nga nagbalik sa datos nga gisulat sa file /dev/rustmodule. Sa sunod nga hugna sa eksperimento, gikonsiderar sa NCC Group ang posibilidad sa pagtrabaho pag-usab sa kinauyokan nga mga sangkap sa kernel sa Rust nga pinulongan aron mapauswag ang seguridad sa mga operasyon sa network ug file.

Bisan pa, bisan kung gipakita nga posible ang paghimo og yano nga mga module sa Rust nga pinulongan, ang usa ka mas hugot nga paghiusa sa Rust ngadto sa FreeBSD kernel magkinahanglan og dugang nga trabaho. Pananglitan, sila naghisgot sa panginahanglan sa paghimo sa usa ka hugpong sa abstraction layer sa ibabaw sa subsystems ug kernel istruktura, susama sa mga add-on nga giandam sa Rust alang sa Linux nga proyekto. Sa umaabot, nagplano kami nga magpahigayon og susama nga mga eksperimento sa kernel sa Illumos ug pag-ila sa mga komon nga abstraction sa Rust nga mahimong gamiton sa mga drayber nga gisulat sa Rust para sa Linux, BSD ug Illumos.

Sumala sa Microsoft ug Google, mga 70% sa mga kahuyangan sa ilang mga produkto sa software tungod sa dili luwas nga pagdumala sa memorya. Gilauman nga ang paggamit sa Rust nga lengguwahe makapakunhod sa risgo sa mga kahuyangan tungod sa dili luwas nga trabaho nga adunay memorya, ug pagwagtang sa mga panghitabo sa mga sayup sama sa pag-access sa usa ka lugar sa panumduman human kini mapagawas ug ma-overrun ang buffer.

Ang pagdumala nga luwas sa memorya gihatag sa Rust sa oras sa pag-compile pinaagi sa pagsusi sa pakisayran, pagsubay sa pagpanag-iya sa butang ug kinabuhi sa butang (sangkap), ingon man pinaagi sa pagtimbang-timbang sa pagkahusto sa pag-access sa memorya sa panahon sa pagpatuman sa code. Naghatag usab ang Rust og proteksyon batok sa pag-awas sa integer, nanginahanglan mandatory nga pagsugod sa mga variable nga kantidad sa wala pa gamiton, pagdumala sa mga sayup nga mas maayo sa standard nga librarya, gipadapat ang konsepto sa dili mausab nga mga pakisayran ug mga variable nga default, nagtanyag kusog nga static nga pag-type aron maminusan ang mga lohikal nga sayup.

Source: opennet.ru

Idugang sa usa ka comment