Ang ikatlong bersyon ng mga patch para sa Rust driver support sa Linux ay inilabas na

Anim na buwan pagkatapos ng publikasyon ng pangalawang bersyon, Miguel Ojeda, may-akda ng proyektong Rust-for-Linux, ipinaalam ang panukala ng ikatlong opsyon para sa pagbuo ng mga driver ng device sa Rust na wika sa Linux Kernel.

Ang suporta sa kalawang ay itinuturing na eksperimental, ngunit ang pagsasama nito sa linux-next branch ay napagkasunduan na. Ang pag-unlad ay pinondohan ng Google at ng ISRG (Internet Security Research Group) na organisasyon, na siyang nagtatag ng proyektong Let's Encrypt at nag-aambag sa pag-promote ng HTTPS at pagbuo ng mga teknolohiya upang mapabuti ang seguridad sa Internet.

Dapat tandaan na ang mga iminungkahing pagbabago ay nagpapahintulot sa Rust na magamit bilang pangalawang wika upang bumuo ng mga driver at module ng kernel.

Mga kalawang driver sa Linux
Kaugnay na artikulo:
Ang pangalawang bersyon ng mga patch para sa suporta ng driver ng Rust sa Linux ay naipadala na

Ang suporta sa kalawang ay ina-advertise bilang isang opsyon na hindi aktibo bilang default at hindi ito nagreresulta sa pagsasama ng Rust sa kinakailangang mga basic build dependencies. Ang paggamit ng Rust para sa pagpapaunlad ng driver ay magbibigay-daan sa iyo na lumikha ng mas mahusay at mas secure na mga driver na may kaunting pagsisikap, nang walang abala sa pag-access sa isang lugar ng memorya kapag napalaya na, pag-derefer ng mga null pointer, at paglampas sa mga limitasyon ng buffer.

Ang bagong bersyon ng mga patch ay patuloy na nag-aalis ng mga komentong ginawa sa panahon ng talakayan ng una at pangalawang bersyon ng mga patch at ang pinaka-kapansin-pansing mga pagbabago na makikita namin:

Inilipat sa Rust 1.57 stable na bersyon bilang isang reference compiler at binding sa stabilized na edisyon ng Rust 2021 na wika ay na-secure. Ang paglipat sa Rust 2021 p specificationpinapayagang magsimulang magtrabaho upang maiwasan ang paggamit ng mga hindi matatag na feature sa mga patch tulad ng const_fn_transmute, const_panic, const_unreachable_unchecked at core_panic at try_reserve.

Nakakatayo din yan ang pagbuo ng alloc na bersyon ay nagpatuloy mula sa Rust library, sa bagong bersyon, ang "no_rc" at "no_sync" na mga opsyon ay ipinatupad upang i-disable ang functionality na hindi ginagamit sa Rust code para sa kernel, na ginagawang mas modular ang library. Patuloy kaming nakikipagtulungan sa mga pangunahing developer ng alloc upang dalhin ang mga kinakailangang pagbabago sa kernel sa pangunahing aklatan. Ang opsyon na "no_fp_fmt_parse", na kinakailangan para gumana ang library sa antas ng kernel, ay inilipat sa base library (kernel) ng Rust.

Nilinis ang code upang alisin ang mga posibleng babala ng compiler kapag kino-compile ang kernel sa CONFIG_WERROR mode. Kapag ginawa ang code sa Rust, kasama ang mga karagdagang diagnostic compiler mode at Clippy linter na babala.

Nag-propose sila abstraction na gumamit ng seqlocks (sequence lock), callback calls para sa power management, memory I / O (readX / writeX), interrupt at thread handler, GPIO, access sa device, driver at mga kredensyal sa rust code.

Ang mga tool sa pagpapaunlad ng driver ay pinalawak gamit ang mga relocatable na mutex, bit iterator, pinasimple na binding sa mga pointer, pinahusay na fault diagnostics, at independiyenteng imprastraktura ng data bus.

Ang pagtatrabaho sa mga link ay napabuti gamit ang uri ng Ref pinasimple, batay sa refcount_t backend, na gumagamit ng gitnang API ng parehong pangalan upang magbilang ng mga sanggunian. Ang suporta para sa mga uri ng Arc at Rc na ibinigay sa karaniwang mapping library ay inalis at hindi magagamit sa code na naisakatuparan sa antas ng kernel (para sa library mismo, ang mga opsyon ay inihanda upang hindi paganahin ang mga ganitong uri).

Ang isang bersyon ng driver ng PL061 GPIO, na muling isinulat sa Rust, ay naidagdag sa mga patch. Ang isang tampok ng driver ay ang malapit na linya-by-line na pagpapatupad nito ay inuulit ang umiiral na driver ng C GPIO. Para sa mga developer na gustong makilala ang mga controllers ng gusali sa Rust, inihanda ang isang line-by-line na paghahambing, na nagbibigay ng insight kung saan nabuo sa Rust ang C code.

Ang pangunahing codebase ng Rust ay gumagamit ng rustc_codegen_gcc, isang rustc backend para sa GCC na nagpapatupad ng AOT compilation gamit ang libgccjit library. Sa wastong pag-unlad ng backend, ito ay magbibigay-daan sa iyong kolektahin ang Rust code na kasama sa kernel gamit ang GCC.
Bilang karagdagan sa ARM, Google, at Microsoft, ang Red Hat ay nagpahayag ng interes sa paggamit ng Rust sa Linux kernel.

Sa wakas, kung interesado kang malaman ang higit pa tungkol dito, maaari mong konsultahin ang mga detalye Sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.