Ika-apat na edisyon ng mga patch para sa Linux kernel na may suporta para sa Rust na wika

Si Miguel Ojeda, may-akda ng proyektong Rust-for-Linux, ay nagmungkahi ng ikaapat na bersyon ng mga bahagi para sa pagbuo ng mga driver ng device sa Rust na wika para sa pagsasaalang-alang ng mga developer ng Linux kernel. Ang suporta sa kalawang ay itinuturing na pang-eksperimento, ngunit napagkasunduan na para sa pagsasama sa susunod na sangay ng linux at sapat na ang gulang upang simulan ang paggawa ng mga abstraction layer sa mga kernel subsystem, gayundin ang pagsusulat ng mga driver at module. Ang pagpapaunlad ay pinondohan ng Google at ng ISRG (Internet Security Research Group), na siyang nagtatag ng proyektong Let's Encrypt at nagpo-promote ng HTTPS at ang pagbuo ng mga teknolohiya upang mapabuti ang seguridad sa Internet.

Alalahanin na ang mga iminungkahing pagbabago ay ginagawang posible na gamitin ang Rust bilang pangalawang wika para sa pagbuo ng mga driver at kernel module. Ang suporta sa kalawang ay ipinakita bilang isang opsyon na hindi pinagana bilang default at hindi nagreresulta sa pagsasama ng Rust bilang isang kinakailangang build dependency para sa kernel. Ang paggamit ng Rust para sa pag-develop ng driver ay magbibigay-daan sa iyo na lumikha ng mas ligtas at mas mahusay na mga driver na may kaunting pagsisikap, walang mga problema tulad ng pag-access sa memorya pagkatapos ng pagbabakante, mga hindi pagtukoy sa null pointer, at mga buffer overrun.

Ang kaligtasan ng memorya ay ibinibigay sa Rust sa oras ng pag-compile sa pamamagitan ng pagsuri sa sanggunian, pagsubaybay sa pagmamay-ari ng bagay at panghabambuhay ng bagay (saklaw), gayundin sa pamamagitan ng pagsusuri ng kawastuhan ng pag-access sa memorya sa panahon ng pagpapatupad ng code. Nagbibigay din ang kalawang ng proteksyon laban sa mga overflow ng integer, nangangailangan ng mandatoryong pagsisimula ng mga variable na halaga bago gamitin, mas mahusay na pinangangasiwaan ang mga error sa karaniwang library, inilalapat ang konsepto ng hindi nababagong mga sanggunian at mga variable bilang default, nag-aalok ng malakas na static na pag-type upang mabawasan ang mga lohikal na error.

Ang bagong bersyon ng mga patch ay patuloy na inaalis ang mga komentong ginawa sa panahon ng talakayan ng una, pangalawa at pangatlong edisyon ng mga patch. Sa bagong bersyon:

  • Ang paglipat sa paggamit ng matatag na paglabas ng Rust 1.58.0 bilang reference compiler ay ginawa. Kabilang sa mga pagbabagong kailangan para sa proyekto, na hindi pa kasama sa pangunahing toolkit ng Rust, ang flag na "-Zsymbol-mangling-version=v0" (inaasahan sa Rust 1.59.0) at ang mode na "maybe_uninit_extra" (inaasahan sa Rust 1.60.0 .XNUMX) ay nabanggit. .
  • Nagdagdag ng mga awtomatikong pagsusuri para sa pagkakaroon ng angkop na mga tool sa Rust at pinalawak ang kakayahang subukan ang suporta sa Rust sa system.
  • Ang mga bagong abstraction ay iminungkahi para sa pag-access sa mga talahanayan ng pagkakakilanlan ng device (β€œIdArray” at β€œIdTable”) mula sa Rust code.
  • Nagdagdag ng mga layer para sa pag-access ng mga function na nauugnay sa timer (framework ng orasan).
  • Ang mga driver ng platform ay tinukoy na ngayon sa pamamagitan ng mga pagpapatupad ng katangian.
  • Isang bagong macro ang idinagdag upang pasimplehin ang pagpaparehistro ng mga driver ng platform, at isang bagong generic na template ng driver ang iminungkahi.
  • Nagdagdag ng mga macro para sa mga istrukturang "dev_*".
  • Nagdagdag ng "{read,write}*_relaxed" na mga pamamaraan para sa uri ng IoMem .
  • Inalis ang pag-aari ng FileOpener upang pasimplehin ang mga pagpapatakbo ng file.
  • Ang parameter na "ThisModule" ay idinagdag sa mga argumentong naipasa kapag nagrerehistro ng driver.
  • Ang isang karaniwang template para sa paglikha ng mga kernel module sa Rust na wika ay iminungkahi.

Pinagmulan: opennet.ru

Magdagdag ng komento