{"id":105081,"date":"2022-09-13T09:36:41","date_gmt":"2022-09-13T07:36:42","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/wd-razrabatyvaet-nvme-drajver-na-yazyke-rust-eksperimenty-s-rust-vo-freebsd"},"modified":"2022-09-13T09:36:41","modified_gmt":"2022-09-13T07:36:42","slug":"wd-razrabatyvaet-nvme-drajver-na-yazyke-rust-eksperimenty-s-rust-vo-freebsd","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/news\/wd-razrabatyvaet-nvme-drajver-na-yazyke-rust-eksperimenty-s-rust-vo-freebsd","title":{"rendered":"WD vyv\u00edj\u00ed NVMe ovlada\u010d v jazyce Rust. Experimenty s Rustem na FreeBSD","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Na konferenci Linux Plumbers 2022, kter\u00e1 prob\u00edh\u00e1 v t\u011bchto dnech, vystoupil in\u017een\u00fdr z firmy Western Digital s prezentac\u00ed o v\u00fdvoji experiment\u00e1ln\u00edho ovlada\u010de pro SSD disky s rozhran\u00edm NVM-Express (NVMe), napsan\u00e9ho v jazyce Rust a funguj\u00edc\u00edho na \u00farovni j\u00e1dra Linux. I kdy\u017e se projekt nach\u00e1z\u00ed teprve v ran\u00e9 f\u00e1zi, vykonan\u00e9 testy uk\u00e1zaly, \u017ee v\u00fdkon NVMe ovlada\u010de napsan\u00e9ho v jazyce Rust odpov\u00edd\u00e1 sou\u010dasn\u00e9mu ovlada\u010di NVMe v j\u00e1d\u0159e, napsan\u00e9mu v jazyce C.      <center><img decoding=\"async\" alt=\"WD vyv\u00edj\u00ed NVMe ovlada\u010d v jazyce Rust. Experimenty s Rustem na FreeBSD\" src=\"\/wp-content\/uploads\/2022\/09\/0c49f6bb2485871524d0f0427f41ad4d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <center><img decoding=\"async\" alt=\"WD vyv\u00edj\u00ed NVMe ovlada\u010d v jazyce Rust. Experimenty s Rustem na FreeBSD\" src=\"\/wp-content\/uploads\/2022\/09\/62fa18285c0eab993e911a5345e8e228.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Ve zpr\u00e1v\u011b se uv\u00e1d\u00ed, \u017ee sou\u010dasn\u00fd NVMe ovlada\u010d napsan\u00fd v jazyce C pln\u011b vyhovuje developer\u016fm, ale subsyst\u00e9m NVMe je dobrou platformou pro zkoum\u00e1n\u00ed proveditelnosti v\u00fdvoje ovlada\u010d\u016f v jazyce Rust, proto\u017ee je dostate\u010dn\u011b jednoduch\u00fd, \u0161iroce pou\u017e\u00edvan\u00fd a vy\u017eaduje vysok\u00fd v\u00fdkon, m\u00e1 ov\u011b\u0159enou referen\u010dn\u00ed implementaci pro srovn\u00e1n\u00ed a podporuje r\u016fzn\u00e1 rozhran\u00ed (dev, pci, dma, blk-mq, gendisk, sysfs).     <\/p>\n<p>Je zd\u016frazn\u011bno, \u017ee PCI NVMe ovlada\u010d v jazyce Rust ji\u017e poskytuje pot\u0159ebnou funk\u010dnost, ale nen\u00ed p\u0159ipraven pro \u0161irok\u00e9 pou\u017eit\u00ed, proto\u017ee vy\u017eaduje dal\u0161\u00ed \u00fapravy. Mezi pl\u00e1ny na budoucnost pat\u0159\u00ed odstran\u011bn\u00ed ne\u017e\u00e1douc\u00edch blok\u016f v k\u00f3du, podpora operac\u00ed odstran\u011bn\u00ed za\u0159\u00edzen\u00ed a vyjmut\u00ed ovlada\u010de, podpora rozhran\u00ed sysfs, implementace odlo\u017een\u00e9 iniciace, vytvo\u0159en\u00ed ovlada\u010de pro blk-mq a experimenty s pou\u017eit\u00edm asynchronn\u00edho modelu programov\u00e1n\u00ed pro queue_rq.        <center>  <div class=\"youtube-placeholder\" data-id=\"Xw9pKeJ-4Bw\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/Xw9pKeJ-4Bw\/hqdefault.jpg\" alt=\"P\u0159ehr\u00e1t video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div>  <\/center>    <\/p>\n<p>D\u00e1le lze zm\u00ednit experimenty, kter\u00e9 prov\u00e1d\u00ed spole\u010dnost NCC Group na v\u00fdvoji ovlada\u010d\u016f v jazyce Rust pro j\u00e1dro FreeBSD. Jako p\u0159\u00edklad je podrobn\u011b rozebr\u00e1n jednoduch\u00fd echo-ovlada\u010d, kter\u00fd vrac\u00ed data zapsan\u00e1 do souboru \/dev\/rustmodule. Na dal\u0161\u00edm stupni experiment\u016f zva\u017euje NCC Group mo\u017enost p\u0159epracov\u00e1n\u00ed z\u00e1kladn\u00edch komponent j\u00e1dra v jazyce Rust za \u00fa\u010delem zv\u00fd\u0161en\u00ed bezpe\u010dnosti s\u00ed\u0165ov\u00fdch a souborov\u00fdch operac\u00ed.     <\/p>\n<p>P\u0159esto\u017ee se ukazuje mo\u017enost vytv\u00e1\u0159en\u00ed jednoduch\u00fdch modul\u016f v jazyce Rust, bli\u017e\u0161\u00ed integrace Rustu do j\u00e1dra FreeBSD vy\u017eaduje dal\u0161\u00ed pr\u00e1ci. Nap\u0159\u00edklad se zmi\u0148uje pot\u0159eba vytv\u00e1\u0159en\u00ed sady abstrak\u010dn\u00edch vrstev nad podsouborov\u00fdmi syst\u00e9my a strukturami j\u00e1dra, podobn\u00fdch nadstavb\u00e1m, kter\u00e9 p\u0159ipravilo projektu Rust for Linux. V budoucnu se pl\u00e1nuj\u00ed podobn\u00e9 experimenty s j\u00e1drem Illumos a vy\u010dlen\u011bn\u00ed obecn\u00fdch abstrakc\u00ed v Rustu, kter\u00e9 by mohly b\u00fdt pou\u017eity v ovlada\u010d\u00edch napsan\u00fdch v Rustu pro Linux, BSD a Illumos.    <\/p>\n<p>Podle \u00fadaj\u016f spole\u010dnost\u00ed Microsoft a Google je p\u0159ibli\u017en\u011b 70 % zranitelnost\u00ed v jejich softwarov\u00fdch produktech zp\u016fsobeno nebezpe\u010dnou manipulac\u00ed s pam\u011bt\u00ed. P\u0159edpokl\u00e1d\u00e1 se, \u017ee pou\u017eit\u00ed jazyka Rust sn\u00ed\u017e\u00ed riziko vzniku zranitelnost\u00ed zp\u016fsoben\u00fdch nebezpe\u010dnou manipulac\u00ed s pam\u011bt\u00ed a vylou\u010d\u00ed vznik chyb, jako je p\u0159\u00edstup k oblasti pam\u011bti po jej\u00edm uvoln\u011bn\u00ed a p\u0159ete\u010den\u00ed bufferu.     <\/p>\n<p>Bezpe\u010dn\u00e1 pr\u00e1ce s pam\u011bt\u00ed je zaji\u0161t\u011bna v Rustu b\u011bhem kompilace prost\u0159ednictv\u00edm kontroly odkaz\u016f, sledov\u00e1n\u00ed vlastnictv\u00ed objekt\u016f a zohledn\u011bn\u00ed doby \u017eivota objekt\u016f (oblast\u00ed viditelnosti), stejn\u011b jako hodnocen\u00edm spr\u00e1vnosti p\u0159\u00edstupu k pam\u011bti b\u011bhem vykon\u00e1v\u00e1n\u00ed k\u00f3du. Rust tak\u00e9 poskytuje prost\u0159edky k ochran\u011b p\u0159ed p\u0159ete\u010den\u00edm celo\u010d\u00edseln\u00fdch hodnot, vy\u017eaduje povinnou inicializaci hodnot prom\u011bnn\u00fdch p\u0159ed pou\u017eit\u00edm, l\u00e9pe zpracov\u00e1v\u00e1 chyby ve standardn\u00ed knihovn\u011b, aplikuje koncept nem\u011bnnosti (immutable) odkaz\u016f a prom\u011bnn\u00fdch ve v\u00fdchoz\u00edm nastaven\u00ed, a nab\u00edz\u00ed silnou statickou typizaci pro minimalizaci logick\u00fdch chyb.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=57774\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0432 \u044d\u0442\u0438 \u0434\u043d\u0438 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 Linux Plumbers 2022 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Western Digital \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u043b \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u043c \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f SSD-\u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u0435\u0439 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c NVM-Express (NVMe), \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Rust \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u044f\u0434\u0440\u0430 Linux. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u043a\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u043d\u043d\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f, \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c NVMe-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043d\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":105082,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-105081","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0432 \u044d\u0442\u0438 \u0434\u043d\u0438 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 Linux Plumbers 2022 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Western Digital \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u043b \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u043c \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f SSD-\u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u0435\u0439 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c NVM-Express (NVMe).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/news\/wd-razrabatyvaet-nvme-drajver-na-yazyke-rust-eksperimenty-s-rust-vo-freebsd\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47WD \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 NVMe-\u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Rust. \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0441 Rust \u0432\u043e FreeBSD | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0432 \u044d\u0442\u0438 \u0434\u043d\u0438 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 Linux Plumbers 2022 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Western Digital \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u043b \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u043c \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f SSD-\u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u0435\u0439 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c NVM-Express (NVMe).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/news\/wd-razrabatyvaet-nvme-drajver-na-yazyke-rust-eksperimenty-s-rust-vo-freebsd\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2022-09-13T07:36:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2022-09-13T07:36:42+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47WD vyv\u00edj\u00ed NVMe ovlada\u010d v jazyce Rust. Experimenty s Rustem ve FreeBSD | ProHoster","description":"Na prob\u00edhaj\u00edc\u00ed konferenci Linux Plumbers 2022 in\u017een\u00fdr ze spole\u010dnosti Western Digital p\u0159ednesl refer\u00e1t o v\u00fdvoji experiment\u00e1ln\u00edho ovlada\u010de pro SSD disky s rozhran\u00edm NVM-Express (NVMe).","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/wd-razrabatyvaet-nvme-drajver-na-yazyke-rust-eksperimenty-s-rust-vo-freebsd","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47WD \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 NVMe-\u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Rust. \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0441 Rust \u0432\u043e FreeBSD | ProHoster","og:description":"\u041d\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0432 \u044d\u0442\u0438 \u0434\u043d\u0438 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 Linux Plumbers 2022 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Western Digital \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u043b \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u043c \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f SSD-\u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u0435\u0439 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c NVM-Express (NVMe).","og:url":"https:\/\/prohoster.info\/cs\/blog\/news\/wd-razrabatyvaet-nvme-drajver-na-yazyke-rust-eksperimenty-s-rust-vo-freebsd","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2022-09-13T07:36:42+00:00","article:modified_time":"2022-09-13T07:36:42+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/105081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=105081"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/105081\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/105082"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=105081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=105081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=105081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}