Patch edisi kaping papat kanggo kernel Linux kanthi dhukungan kanggo basa Rust

Miguel Ojeda, penulis proyek Rust-for-Linux, ngusulake versi papat komponen kanggo ngembangake driver piranti ing basa Rust kanggo dipikirake dening pangembang kernel Linux. Dhukungan teyeng dianggep minangka eksperimen, nanging wis disepakati kanggo dilebokake ing cabang linux-sabanjurΓ© lan cukup diwasa kanggo miwiti gawΓ© lapisan abstraksi liwat subsistem kernel, uga nulis driver lan modul. Pangembangan kasebut didanai dening Google lan ISRG (Internet Security Research Group), sing dadi pendiri proyek Let's Encrypt lan promosi HTTPS lan pangembangan teknologi kanggo nambah keamanan Internet.

Elinga yen owah-owahan sing diusulake bisa nggunakake Rust minangka basa liya kanggo ngembangake driver lan modul kernel. Dhukungan Rust ditampilake minangka pilihan sing ora diaktifake kanthi standar lan ora nyebabake Rust kalebu minangka ketergantungan mbangun sing dibutuhake kanggo kernel. Nggunakake Rust kanggo pangembangan driver bakal ngidini sampeyan nggawe driver sing luwih aman lan luwih apik kanthi gaweyan minimal, bebas saka masalah kayata akses memori sawise dibebasake, dereferensi null pointer, lan overruns buffer.

Penanganan memori-aman diwenehake ing Rust ing wektu kompilasi liwat mriksa referensi, nglacak kepemilikan obyek lan umur obyek (skop), uga liwat evaluasi bener saka akses memori sak eksekusi kode. Rust uga menehi pangayoman marang overflows integer, mbutuhake initialization prentah saka nilai variabel sadurunge digunakake, Ngalahake kasalahan luwih apik ing perpustakaan standar, ditrapake konsep referensi immutable lan variabel minangka standar, nawakake typing statis kuwat kanggo nyilikake kesalahan logis.

Versi anyar saka tembelan terus ngilangi komentar sing digawe sajrone diskusi babagan tembelan pisanan, kapindho lan katelu. Ing versi anyar:

  • Transisi kanggo nggunakake release stabil Rust 1.58.0 minangka compiler referensi wis digawe. Antarane owah-owahan sing perlu kanggo proyek, sing durung kalebu ing toolkit Rust utama, flag "-Zsymbol-mangling-version = v0" (kaarep ing Rust 1.59.0) lan mode "mungkin_uninit_extra" (karepake ing Rust 1.60.0). .XNUMX) dicathet.
  • Nambahake mriksa otomatis kanggo kasedhiyan alat Rust sing cocog lan nambah kemampuan kanggo nguji dhukungan Rust ing sistem kasebut.
  • Abstraksi anyar wis diusulake kanggo ngakses tabel pengenal piranti ("IdArray" lan "IdTable") saka kode Rust.
  • Lapisan sing ditambahake kanggo ngakses fungsi sing gegandhengan karo wektu (kerangka jam).
  • Pembalap platform saiki ditetepake liwat implementasi sipat.
  • Makro anyar wis ditambahake kanggo nyederhanakake registrasi driver platform, lan template driver umum anyar wis diusulake.
  • Nambahake makro kanggo struktur "dev_*".
  • Nambahake metode "{maca, nulis} * _santai" kanggo jinis IoMem .
  • Mbusak properti FileOpener kanggo nyederhanakake operasi file.
  • Parameter "Modul Iki" wis ditambahake menyang argumen sing diterusake nalika ndhaptar driver.
  • Cithakan standar kanggo nggawe modul kernel ing basa Rust diusulake.

Source: opennet.ru

Add a comment