WD disvolvas NVMe-ŝoforon en Rust. Eksperimentante kun Rust sur FreeBSD

En la konferenco de Linuksaj Plumbers 2022 okazanta ĉi tiujn tagojn, inĝeniero de Western Digital faris prezenton pri la disvolviĝo de eksperimenta pelilo por SSD-diskoj kun la interfaco NVM-Express (NVMe), skribita en la Rust-lingvo kaj funkcianta ĉe la Linukso-kerno. nivelo. Malgraŭ la fakto, ke la projekto ankoraŭ estas en frua etapo de evoluo, testado montris, ke la agado de la NVMe-ŝoforo en la Rust-lingvo respondas al la NVMe-ŝoforo skribita en la C-lingvo disponebla en la kerno.

WD disvolvas NVMe-ŝoforon en Rust. Eksperimentante kun Rust sur FreeBSD
WD disvolvas NVMe-ŝoforon en Rust. Eksperimentante kun Rust sur FreeBSD

La raporto deklaras, ke la nuna NVMe-ŝoforo en C estas tute kontentiga por programistoj, sed la NVMe-subsistemo estas bona platformo por esplori la fareblecon de disvolvi ŝoforojn en Rust, ĉar ĝi estas sufiĉe simpla, vaste uzata, havas altajn rendimentajn postulojn kaj havas pruvita referenca efektivigo por komparo kaj subtenas diversajn interfacojn (dev, pci, dma, blk-mq, gendisk, sysfs).

Oni rimarkas, ke la ŝoforo PCI NVMe por Rust jam provizas la funkciojn necesajn por funkciado, sed ankoraŭ ne estas preta por vasta uzo, ĉar ĝi postulas individuajn plibonigojn. Estontaj planoj inkluzivas forigi la kodon de ekzistantaj nesekuraj blokoj, subteni aparatojn por forigo kaj ŝoforaj malŝarĝaj operacioj, subteni la sysfs-interfacon, efektivigi maldiligentan inicialigon, krei ŝoforon por blk-mq kaj eksperimenti kun uzado de nesinkrona programa modelo por queue_rq.

Aldone, ni povas noti la eksperimentojn faritajn de la NCC-Grupo por evoluigi ŝoforojn en la Rust-lingvo por la FreeBSD-kerno. Ekzemple, ni ekzamenas detale simplan eĥan pelilon, kiu resendas datumojn skribitajn al la dosiero /dev/rustmodule. En la sekva fazo de eksperimentado, la NCC-Grupo pripensas la eblecon reverki la kernajn komponentojn de la kerno en la Rust-lingvo por plibonigi la sekurecon de retaj kaj dosieroperacioj.

Tamen, kvankam estis montrite ke eblas krei simplajn modulojn en la Rust-lingvo, pli strikta integriĝo de Rust en la FreeBSD-kernon postulos plian laboron. Ekzemple, ili mencias la bezonon krei aron de abstraktaj tavoloj super la subsistemoj kaj kernaj strukturoj, similaj al la aldonaĵoj preparitaj de la projekto Rust por Linukso. En la estonteco, ni planas fari similajn eksperimentojn kun la Illumos-kerno kaj identigi oftajn abstraktaĵojn en Rust, kiuj povus esti uzataj en ŝoforoj skribitaj en Rust por Linukso, BSD kaj Illumos.

Laŭ Mikrosofto kaj Guglo, ĉirkaŭ 70% de vundeblecoj en iliaj softvaraĵoj estas kaŭzitaj de nesekura memortraktado. Estas atendite ke la uzo de la Rust-lingvo reduktos la riskon de vundeblecoj kaŭzitaj de nesekura laboro kun memoro, kaj eliminos la okazon de eraroj kiel ekzemple aliro al memorareo post kiam ĝi estis liberigita kaj transkuri la bufron.

Memorsekureco estas disponigita en Rust ĉe kompiltempo per referenckontrolado, konservante trakon de objektoposedo kaj objektvivdaŭro (amplekso), same kiel tra taksado de la ĝusteco de memoraliro dum kodekzekuto. Rusto ankaŭ provizas protekton kontraŭ entjeraj superfluoj, postulas devigan inicialigon de variaj valoroj antaŭ uzo, pli bone pritraktas erarojn en la norma biblioteko, aplikas la koncepton de neŝanĝeblaj referencoj kaj variabloj defaŭlte, ofertas fortan senmovan tajpadon por minimumigi logikajn erarojn.

fonto: opennet.ru

Aldoni komenton