Édisi kaopat patch pikeun kernel Linux kalayan dukungan pikeun basa Rust

Miguel Ojeda, panulis proyék Rust-for-Linux, ngusulkeun vérsi kaopat komponén pikeun ngembangkeun drivers alat dina basa Rust pikeun tinimbangan ku pamekar kernel Linux. Pangrojong karat dianggap ékspérimén, tapi parantos disatujuan pikeun dilebetkeun kana cabang linux-hareup sareng cukup dewasa pikeun ngamimitian damel dina nyiptakeun lapisan abstraksi dina subsistem kernel, ogé nyerat supir sareng modul. Pangwangunan ieu dibiayaan ku Google sareng ISRG (Internet Security Research Group), anu mangrupikeun pangadeg proyék Let's Encrypt sareng promosi HTTPS sareng pamekaran téknologi pikeun ningkatkeun kaamanan Internét.

Émut yén parobihan anu diusulkeun ngamungkinkeun ngagunakeun Rust salaku basa kadua pikeun ngembangkeun supir sareng modul kernel. Pangrojong karat dibere salaku pilihan anu henteu diaktipkeun sacara standar sareng henteu nyababkeun Karat kalebet salaku katergantungan ngawangun anu diperyogikeun pikeun kernel. Ngagunakeun Rust pikeun ngembangkeun supir bakal ngidinan Anjeun pikeun nyieun drivers aman tur hadé kalawan usaha minimal, bébas tina masalah kayaning aksés memori sanggeus freeing, null pointer dereferences, sarta overruns panyangga.

Kasalametan memori disadiakeun dina Rust dina waktos compile ngaliwatan mariksa rujukan, ngalacak kapamilikan obyék sarta hirupna objék (wengkuan), kitu ogé ngaliwatan evaluasi correctness aksés memori salila palaksanaan kode. Karat ogé nyadiakeun panyalindungan ngalawan overflows integer, merlukeun variabel bisa initialized saméméh pamakéan, handles kasalahan hadé dina perpustakaan baku, nerapkeun konsép rujukan immutable sarta variabel sacara standar, sarta nawarkeun ketikan statik kuat pikeun ngaleutikan kasalahan logis.

Versi anyar tina patches terus ngaleungitkeun komentar dijieun salila sawala ngeunaan édisi kahiji, kadua jeung katilu tina patch. Dina versi anyar:

  • Transisi pikeun ngagunakeun release stabil tina Rust 1.58.0 salaku compiler rujukan geus dijieun. Diantara parobihan anu dipikabutuh pikeun proyék, anu henteu acan kalebet kana toolkit Rust utama, bendera "-Zsymbol-mangling-version = v0" (diperkirakeun dina Rust 1.59.0) sareng modeu "meureun_uninit_extra" (diperkirakeun dina Rust 1.60.0). .XNUMX) dicatet. .
  • Ditambahkeun cék otomatis pikeun kasadiaan alat Karat anu cocog sareng ngalegaan kamampuan pikeun nguji dukungan Karat dina sistem.
  • Abstraksi anyar geus diajukeun pikeun ngakses tabel identifier alat ("IdArray" jeung "IdTable") tina kode Rust.
  • Lapisan ditambahkeun pikeun ngakses fungsi nu patali jeung timer (kerangka jam).
  • Panggerak platform ayeuna ditetepkeun ngaliwatan palaksanaan tret.
  • A makro anyar geus ditambahkeun kana simplify pendaptaran panggerak platform, sarta template supir generik anyar geus diajukeun.
  • Ditambahkeun makro pikeun struktur "dev_*".
  • Ditambahkeun metode "{baca, tulis} * _santai" pikeun jinis IoMem .
  • Dipiceun sipat FileOpener pikeun mempermudah operasi file.
  • Parameter "ThisModule" geus ditambahkeun kana argumen diliwatan nalika ngadaptar supir.
  • A template baku pikeun nyieun modul kernel dina basa Rust diusulkeun.

sumber: opennet.ru

Tambahkeun komentar