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

Si Miguel Ojeda, ang tagsulat sa Rust-for-Linux nga proyekto, misugyot og ikalimang bersyon sa mga component alang sa pagpalambo sa mga device driver sa Rust nga pinulongan aron konsiderahon sa Linux kernel developers. Ang suporta sa Rust giisip nga eksperimento, apan gilakip na sa sunod nga sanga sa linux ug igo nga naugmad aron magsugod sa pagtrabaho sa paghimo sa mga abstraction layer sa mga subsystem sa kernel, ingon man ang pagsulat sa mga drayber ug module. Ang kalamboan gipondohan sa Google ug sa ISRG (Internet Security Research Group), nga mao ang nagtukod sa Let's Encrypt nga proyekto ug nagpasiugda sa HTTPS ug sa pagpalambo sa mga teknolohiya aron mapausbaw ang seguridad sa Internet.

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 bag-ong bersyon sa mga patch nagpadayon sa pagwagtang sa mga komento nga gihimo sa panahon sa paghisgot sa una, ikaduha, ikatulo ug ikaupat nga edisyon sa mga patch. Sa bag-ong bersyon:

  • Ang component testing para sa Rust nga suporta gidugang sa padayon nga integration system base sa Intel-supported 0DAY/LKP bot ug ang pagmantala sa testing reports nagsugod na. Nangandam kami sa paghiusa sa suporta sa Rust ngadto sa KernelCI automated testing system. Ang pagsulay base sa GitHub CI gibalhin sa paggamit sa mga sudlanan.
  • Ang Rust kernel modules gibuhian gikan sa panginahanglan sa paghubit sa crate attributes "#![no_std]" ug "#![feature(...)]".
  • Gidugang nga suporta alang sa usa ka target nga asembliya (.o, .s, .ll ug .i).
  • Ang mga giya sa code naghubit sa mga lagda alang sa pagbulag sa mga komento (β€œ//”) ug code sa pagdokumento (β€œ///”).
  • Ang is_rust_module.sh nga script gi-rework na.
  • Gidugang nga suporta alang sa static (global shared variable) nga mga primitibo sa pag-synchronize base sa pagpatuman sa "CONFIG_CONSTRUCTORS".
  • Ang pagdumala sa lock gipasayon: Ang Guard ug GuardMut gihiusa ug usa ka parameterized type.
  • Posible nga mahibal-an ang dugang nga mga parameter kung nagparehistro sa mga aparato.
  • Gidugang ang abstraction nga "RwSemaphore", nga naglihok isip wrapper sa rw_semaphore C structure.
  • Sa paggamit sa mmap, usa ka bag-ong mm module ug usa ka VMA abstraction ang gidugang (usa ka wrapper sa vm_area_struct structure).
  • Ang drayber sa GPIO PL061 gibalhin sa paggamit sa "dev_*!" macro.
  • Usa ka kinatibuk-ang paglimpyo sa code ang gihimo.

Source: opennet.ru

Idugang sa usa ka comment