Ke hoʻomohala nei ʻo WD i kahi mea hoʻokele NVMe ma Rust. Ke hoʻāʻo ʻana me Rust ma FreeBSD

I ka hālāwai kūkā Linux Plumbers 2022 i kēia mau lā, ua hāʻawi kahi ʻenekinia mai Western Digital i kahi hōʻike e pili ana i ka hoʻomohala ʻana i kahi mea hoʻokele hoʻokolohua no nā drive SSD me ka interface NVM-Express (NVMe), i kākau ʻia ma ka ʻōlelo Rust a holo i ka kernel Linux. pae. ʻOiai ʻo ka ʻoiaʻiʻo o ka papahana i ka wā mua o ka hoʻomohala ʻana, ua hōʻike ka hoʻāʻo ʻana i ka hana o ka mea hoʻokele NVMe ma ka ʻōlelo Rust e pili ana i ka mea hoʻokele NVMe i kākau ʻia ma ka ʻōlelo C i loaʻa i ka kernel.

Ke hoʻomohala nei ʻo WD i kahi mea hoʻokele NVMe ma Rust. Ke hoʻāʻo ʻana me Rust ma FreeBSD
Ke hoʻomohala nei ʻo WD i kahi mea hoʻokele NVMe ma Rust. Ke hoʻāʻo ʻana me Rust ma FreeBSD

Hōʻike ka hōʻike e ʻoluʻolu loa ka mea hoʻokele NVMe i kēia manawa i nā mea hoʻomohala, akā ʻo ka subsystem NVMe kahi kahua maikaʻi no ka ʻimi ʻana i ka hiki ke hoʻomohala i nā mea hoʻokele ma Rust, no ka mea he maʻalahi loa ia, hoʻohana nui ʻia, loaʻa nā koi hana kiʻekiʻe, a ua kahi hoʻokō kuhikuhi i hōʻoia ʻia no ka hoʻohālikelike a kākoʻo i nā ʻokoʻa like ʻole (dev, pci, dma, blk-mq, gendisk, sysfs).

Hoʻomaopopo ʻia ua hāʻawi mua ka mea hoʻokele PCI NVMe no Rust i nā hana e pono ai no ka hana, akā ʻaʻole i mākaukau no ka hoʻohana ākea, no ka mea e koi ana i nā hoʻomaikaʻi pilikino. ʻO nā hoʻolālā e hiki mai ana, ʻo ia ka hoʻopau ʻana i ke code o nā poloka palekana ʻole, ke kākoʻo ʻana i ka wehe ʻana o nā hāmeʻa a me nā hana hoʻokele hoʻokele, ke kākoʻo ʻana i ka interface sysfs, ka hoʻokō ʻana i ka hoʻomaka palaualelo, ka hana ʻana i kahi mea hoʻokele no blk-mq, a me ka hoʻāʻo ʻana me ka hoʻohana ʻana i kahi kumu hoʻolālā asynchronous no queue_rq.

Eia hou, hiki iā mākou ke nānā i nā hoʻokolohua i hana ʻia e ka NCC Group e hoʻomohala i nā mea hoʻokele ma ka ʻōlelo Rust no ka kernel FreeBSD. No ka laʻana, nānā mākou i kahi mea hoʻokele echo maʻalahi e hoʻihoʻi i ka ʻikepili i kākau ʻia i ka faila /dev/rustmodule. Ma ka hana aʻe o ka hoʻokolohua, ke noʻonoʻo nei ka NCC Group i ka hiki ke hana hou i nā ʻāpana koʻikoʻi o ka kernel ma ka ʻōlelo Rust e hoʻomaikaʻi i ka palekana o ka pūnaewele a me nā hana faila.

Eia naʻe, ʻoiai ua hōʻike ʻia he hiki ke hana i nā modula maʻalahi i ka ʻōlelo Rust, ʻoi aku ka paʻa o ka hoʻohui ʻana o Rust i ka kernel FreeBSD e koi i ka hana hou. No ka laʻana, haʻi lākou i ka pono e hana i kahi hoʻonohonoho o nā papa abstraction ma luna o nā subsystems a me nā hale kernel, e like me nā mea hoʻohui i hoʻomākaukau ʻia e ka papahana Rust no Linux. I ka wā e hiki mai ana, hoʻolālā mākou e hana i nā hoʻokolohua like me ka kernel Illumos a ʻike i nā abstractions maʻamau i Rust i hiki ke hoʻohana ʻia i nā mea hoʻokele i kākau ʻia ma Rust no Linux, BSD a me Illumos.

Wahi a Microsoft a me Google, ma kahi o 70% o nā nāwaliwali o kā lākou huahana polokalamu ke kumu o ka mālama ʻana i ka hoʻomanaʻo palekana. Manaʻo ʻia ʻo ka hoʻohana ʻana i ka ʻōlelo Rust e hōʻemi i ka pilikia o nā nāwaliwali i hana ʻia e ka hana palekana me ka hoʻomanaʻo, a e hoʻopau i ka hiki ʻana mai o nā hewa e like me ke komo ʻana i kahi wahi hoʻomanaʻo ma hope o ka hoʻokuʻu ʻia ʻana a me ka hoʻonui ʻana i ka buffer.

Hāʻawi ʻia ka mālama mālama hoʻomanaʻo ma Rust i ka manawa hōʻuluʻulu ma o ka nānā ʻana i nā kuhikuhi, ka mālama ʻana i ka mea nona ka mea a me ke ola o ka mea (scope), a ma o ka loiloi ʻana i ka pololei o ke komo ʻana i ka hoʻomanaʻo i ka wā o ka hoʻokō code. Hāʻawi pū ʻo Rust i ka pale ʻana i ka integer overflows, koi pono i ka hoʻomaka mua ʻana o nā waiwai hoʻololi ma mua o ka hoʻohana ʻana, ʻoi aku ka maikaʻi o ka hoʻohana ʻana i nā hewa i loko o ka waihona maʻamau, pili i ka manaʻo o nā kuhikuhi immutable a me nā loli ma ke ʻano maʻamau, hāʻawi i ka paʻi static ikaika e hōʻemi i nā hewa loiloi.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka