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

Miguel Ojeda, penulis proyek Rust-for-Linux, ngusulake komponen versi kaping lima kanggo ngembangake driver piranti ing basa Rust kanggo dipikirake dening pangembang kernel Linux. Dhukungan teyeng dianggep minangka eksperimen, nanging wis kalebu ing cabang linux-sabanjuré lan cukup dikembangaké 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, kaloro, katelu lan kaping papat. Ing versi anyar:

  • Pengujian komponen kanggo dhukungan Rust wis ditambahake menyang sistem integrasi terus-terusan adhedhasar bot 0DAY / LKP sing didhukung Intel lan publikasi laporan pengujian wis diwiwiti. Kita siyap kanggo nggabungake dhukungan Rust menyang sistem tes otomatis KernelCI. Pengujian adhedhasar GitHub CI wis ditransfer menyang panggunaan wadhah.
  • Modul kernel karat dibebasake saka kabutuhan kanggo nemtokake atribut peti "#! [no_std]" lan "#! [fitur (...)]".
  • Dhukungan ditambahake kanggo target perakitan siji (.o, .s, .ll lan .i).
  • Pedoman kode nemtokake aturan kanggo misahake komentar ("//") lan kode dokumentasi ("//").
  • Skrip is_rust_module.sh wis digarap maneh.
  • Dhukungan ditambahake kanggo primitif sinkronisasi statis (variabel bareng global) adhedhasar implementasine "CONFIG_CONSTRUCTORS".
  • Manajemen kunci disederhanakake: Guard lan GuardMut digabungake lan siji jinis parameter.
  • Sampeyan bisa nemtokake paramèter tambahan nalika ndhaptar piranti.
  • Added "RwSemaphore" abstraksi, kang tumindak minangka pambungkus liwat rw_semaphore struktur C.
  • Kanggo nggunakake mmap, modul mm anyar lan abstraksi VMA wis ditambahake (pambungkus liwat struktur vm_area_struct).
  • Pembalap GPIO PL061 wis dialihake nggunakake makro "dev_ *!".
  • Pembersihan umum kode kasebut ditindakake.

Source: opennet.ru

Add a comment