Mbipụta nke abụọ nke patches maka Linux kernel na nkwado maka asụsụ Rust

Miguel Ojeda, onye odee nke Rust-for-Linux project, tụpụtara ụdị akụrụngwa emelitere maka mmepe ndị ọkwọ ụgbọ ala n'asụsụ Rust maka nleba anya nke ndị nrụpụta Linux kernel. A na-ewere nkwado nchara dị ka nnwale, mana ekwenyelarị maka itinye na ngalaba na-esote Linux. Ụdị ọhụrụ ahụ na-ewepụ ihe ndị e kwuru n'oge mkparịta ụka nke ụdị mbụ nke patches. Linus Torvalds abanyelarị na mkparịta ụka ahụ wee tụpụta ịgbanwe mgbagha maka ịhazi ụfọdụ arụmọrụ.

Cheta na mgbanwe ndị a tụrụ aro na-eme ka o kwe omume iji Rust dị ka asụsụ nke abụọ maka mmepe ọkwọ ụgbọala na modul kernel. A na-egosi nkwado nchara dị ka nhọrọ nke anaghị enyere ya aka na ndabara na anaghị eme ka nchara nchara dị ka ihe ndabere achọrọ maka kernel. Iji nchara maka mmepe ọkwọ ụgbọ ala ga-enye gị ohere ịmepụta ndị ọkwọ ụgbọ ala dị nchebe ma dị mma na obere mbọ, na-enwere onwe ya pụọ ​​​​na nsogbu dị ka ịnweta ebe nchekwa mgbe ahapụchara ya, enweghị ntụpọ pointer, na ihe nchekwa nchekwa.

A na-enye nchekwa nchekwa na nchara n'oge a na-achịkọta site na ntụle ntụaka, na-edobe ihe nwe ihe na oge ndụ ihe (oke), yana site na nyocha nke izi ezi nke ịnweta ebe nchekwa n'oge mmebe koodu. Nchara na-enyekwa nchebe pụọ na integer njupụta, na-achọ mmalite mmalite nke ụkpụrụ agbanwe agbanwe tupu eji ya, na-edozi njehie nke ọma n'ọbá akwụkwọ ọkọlọtọ, na-etinye echiche nke ntụgharị na mgbanwe na-adịghị agbanwe agbanwe na ndabara, na-enye akara static siri ike iji belata njehie ezi uche dị na ya.

Mgbanwe kacha pụta ìhè na ụdị ọhụrụ nke patches:

  • A tọhapụrụ koodu nkesa ebe nchekwa site n'ịwepụta ọnọdụ "ụjọ" mgbe mperi dị ka enweghị ebe nchekwa mere. A na-etinye ụdị dị iche iche nke ọba akwụkwọ Rust alloc, nke na-emegharị koodu ahụ iji dozie ọdịda, mana ihe mgbaru ọsọ kachasị bụ ịnyefe njirimara niile achọrọ maka kernel na mbipụta isi nke alloc (mgbanwe ndị ahụ edoziworị ma bufee ya na ọkọlọtọ. Ọbá akwụkwọ nchara).
  • Kama ịrụ ụlọ n'abalị, ị nwere ike iji mwepụta beta na mwepụta kwụsiri ike nke rustc compiler iji chịkọta kernel site na nkwado Rust. Ugbu a, a na-eji rustc 1.54-beta1 dị ka onye nchịkọta ntụaka, mana mgbe ahapụchara 1.54 na njedebe nke ọnwa, a ga-akwado ya dị ka onye nchịkọta ntụaka.
  • Nkwado agbakwunyere maka nyocha ederede site na iji njirimara ọkọlọtọ "#[ule]" maka nchara yana ikike iji doctests depụta ule.
  • Nkwado agbakwunyere maka ụlọ ọrụ ARM32 na RISCV na mgbakwunye na nkwado x86_64 na ARM64.
  • Mmelite nke GCC Rust (GCC frontend for Rust) na rustc_codegen_gcc (rustc backend maka GCC), nke na-agafe ule niile bụ isi ugbu a.
  • A na-atụpụta ọkwa abstraction ọhụrụ maka iji na mmemme Rust nke usoro kernel edere na C, dị ka osisi ojii na-acha uhie uhie, ihe ndị a na-agụtụ aka, imepụta nkọwa faịlụ, ọrụ, faịlụ, na vectors I/O.
  • Akụkụ mmepe nke ndị ọkwọ ụgbọ ala akwalitela nkwado maka modul file_operations, modul! nnukwu, ndebanye aha nnukwu na ndị ọkwọ ụgbọ ala (nyocha na wepu).
  • Binder na-akwado ndị na-akọwa faịlụ na-agafe na nko LSM.
  • A na-atụpụta ihe atụ na-arụ ọrụ nke onye ọkwọ ụgbọ ala nchara - bcm2835-rng maka igwe na-emepụta nọmba random ngwaike nke bọọdụ Raspberry Pi.

Na mgbakwunye, ụfọdụ ọrụ ụlọ ọrụ metụtara iji rust na kernel ka a kpọtụrụ aha:

  • Microsoft ekwupụtala mmasị na isonye na ọrụ ahụ iji jikọta nkwado Rust na Linux kernel ma dị njikere ịnye mmejuputa ọkwọ ụgbọala maka Hyper-V na Rust n'ọnwa ndị na-abịa.
  • ARM na-arụ ọrụ iji melite nkwado Rust maka sistemụ dabere na ARM. Ọrụ Rust ewepụtalarị mgbanwe ndị ga-eme sistemụ ARM 64-bit ka ọ bụrụ usoro Tier 1.
  • Google na-enye nkwado ozugbo maka ọrụ Rust maka Linux, na-emepe emepe ọhụrụ nke usoro nkwurịta okwu Binder interprocess na Rust, ma na-atụle ohere nke ịmegharị ndị ọkwọ ụgbọala dị iche iche na Rust. Site na ISRG (Internet Security Research Group), Google nyere ego maka ọrụ iji tinye nkwado Rust n'ime kernel Linux.
  • IBM emejuputala nkwado kernel maka Rust maka sistemu PowerPC.
  • Ụlọ nyocha LSE (Systems Research Laboratory) ewepụtala onye ọkwọ ụgbọ ala SPI na Rust.

isi: opennet.ru

Tinye a comment