Ikaduha nga edisyon sa mga patch alang sa Linux kernel nga adunay suporta alang sa Rust nga pinulongan

Si Miguel Ojeda, tagsulat sa Rust-for-Linux nga proyekto, misugyot og updated nga bersyon sa mga component para sa pagpalambo sa device drivers sa Rust nga pinulongan aron konsiderahon sa Linux kernel developers. Ang suporta sa Rust giisip nga eksperimento, apan gikasabutan na alang sa paglakip sa sunod nga sanga sa linux. Giwagtang sa bag-ong bersyon ang mga komento nga gihimo sa panahon sa paghisgot sa unang bersyon sa mga patch. Si Linus Torvalds miapil na sa diskusyon ug nagsugyot sa pagbag-o sa lohika alang sa pagproseso sa pipila ka gamay nga operasyon.

Hinumdomi nga ang gisugyot nga mga pagbag-o nagpaposible sa paggamit sa Rust isip ikaduha nga pinulongan alang sa pagpalambo sa mga drayber ug kernel modules. Ang suporta sa Rust gipresentar isip usa ka opsyon nga dili mahimo pinaagi sa default ug dili moresulta sa Rust nga gilakip isip usa ka gikinahanglan nga pagsalig sa pagtukod alang sa kernel. Ang paggamit sa Rust alang sa pagpalambo sa drayber magtugot kanimo sa paghimo og mas luwas ug mas maayo nga mga drayber nga adunay gamay nga paningkamot, gawasnon sa mga problema sama sa pag-access sa memorya human sa pagpalaya, null pointer dereferences, ug buffer overruns.

Ang pagdumala nga luwas sa memorya gihatag sa Rust sa oras sa pag-compile pinaagi sa pagsusi sa pakisayran, pagsubay sa pagpanag-iya sa butang ug kinabuhi sa butang (sangkap), ingon man pinaagi sa pagtimbang-timbang sa pagkahusto sa pag-access sa memorya sa panahon sa pagpatuman sa code. Naghatag usab ang Rust og proteksyon batok sa pag-awas sa integer, nanginahanglan mandatory nga pagsugod sa mga variable nga kantidad sa wala pa gamiton, pagdumala sa mga sayup nga mas maayo sa standard nga librarya, gipadapat ang konsepto sa dili mausab nga mga pakisayran ug mga variable nga default, nagtanyag kusog nga static nga pag-type aron maminusan ang mga lohikal nga sayup.

Ang labing mamatikdan nga mga pagbag-o sa bag-ong bersyon sa mga patch:

  • Ang code sa alokasyon sa panumduman gipahigawas gikan sa posibleng pagmugna og "panic" nga kahimtang kung adunay mga sayup sama sa wala sa memorya nga mahitabo. Ang usa ka variant sa Rust alloc library gilakip, nga nag-rework sa code sa pagdumala sa mga kapakyasan, apan ang katapusang tumong mao ang pagbalhin sa tanan nga mga bahin nga gikinahanglan alang sa kernel ngadto sa nag-unang edisyon sa alloc (ang mga kausaban giandam na ug gibalhin ngadto sa standard Rust library).
  • Imbis nga gabii nga pagtukod, mahimo nimong gamiton ang beta releases ug stable nga pagpagawas sa rustc compiler aron mag-compile og kernel nga adunay suporta sa Rust. Sa pagkakaron, ang rustc 1.54-beta1 gigamit isip reference compiler, apan human ang 1.54 release ipagawas sa katapusan sa bulan, kini suportahan isip reference compiler.
  • Gidugang nga suporta alang sa pagsulat sa mga pagsulay gamit ang standard nga "#[test]" nga attribute para sa Rust ug ang abilidad sa paggamit sa mga doctest sa pagdokumento sa mga pagsulay.
  • Gidugang nga suporta alang sa ARM32 ug RISCV nga mga arkitektura dugang sa gisuportahan kaniadto nga x86_64 ug ARM64.
  • Gipauswag nga pagpatuman sa GCC Rust (GCC frontend para sa Rust) ug rustc_codegen_gcc (rustc backend para sa GCC), nga karon nakapasar na sa tanang batakang pagsulay.
  • Usa ka bag-ong lebel sa abstraction ang gisugyot alang sa paggamit sa Rust nga mga programa sa mga mekanismo sa kernel nga gisulat sa C, sama sa pula-itom nga mga kahoy, mga butang nga giihap sa pakisayran, paghimo sa deskriptor sa file, mga buluhaton, mga file, ug mga vector sa I/O.
  • Ang mga component sa pagpalambo sa drayber nakapauswag sa suporta para sa file_operations module, ang module!
  • Gisuportahan na karon sa Binder ang pagpasa sa mga deskriptor sa file ug mga kaw-it sa LSM.
  • Ang usa ka mas praktikal nga pananglitan sa usa ka Rust nga drayber gisugyot - bcm2835-rng alang sa hardware random number generator sa Raspberry Pi boards.

Dugang pa, ang mga proyekto sa pipila ka mga kompanya nga may kalabotan sa paggamit sa Rust sa kernel gihisgutan:

  • Nagpahayag ang Microsoft og interes sa pag-apil sa trabaho aron mahiusa ang suporta sa Rust sa kernel sa Linux ug andam nga maghatag mga pagpatuman sa drayber alang sa Hyper-V sa Rust sa umaabot nga mga bulan.
  • Ang ARM nagtrabaho aron mapaayo ang suporta sa Rust alang sa mga sistema nga nakabase sa ARM. Ang Rust nga proyekto nagsugyot na sa mga pagbag-o nga maghimo sa 64-bit nga mga sistema sa ARM nga usa ka Tier 1 nga plataporma.
  • Ang Google direkta nga naghatag suporta alang sa Rust alang sa Linux nga proyekto, nagpalambo sa usa ka bag-ong pagpatuman sa Binder interprocess nga mekanismo sa komunikasyon sa Rust, ug gikonsiderar ang posibilidad sa pag-rework sa lainlaing mga drayber sa Rust. Pinaagi sa ISRG (Internet Security Research Group), ang Google naghatag og pondo alang sa trabaho aron mahiusa ang Rust nga suporta ngadto sa Linux kernel.
  • Gipatuman sa IBM ang suporta sa kernel alang sa Rust alang sa mga sistema sa PowerPC.
  • Ang laboratoryo sa LSE (Systems Research Laboratory) nakahimo og driver sa SPI sa Rust.

Source: opennet.ru

Idugang sa usa ka comment