Ẹda karun ti awọn abulẹ fun ekuro Linux pẹlu atilẹyin fun ede Rust

Miguel Ojeda, onkọwe ti iṣẹ akanṣe Rust-for-Linux, ti dabaa ẹya karun ti awọn paati fun idagbasoke awakọ ẹrọ ni ede Rust fun ero nipasẹ awọn olupilẹṣẹ ekuro Linux. Atilẹyin ipata ni a ka si esiperimenta, ṣugbọn o ti wa tẹlẹ ninu ẹka ti o tẹle linux ati pe o ti ni idagbasoke to lati bẹrẹ iṣẹ lori ṣiṣẹda awọn fẹlẹfẹlẹ abstraction lori awọn eto inu ekuro, ati awọn awakọ kikọ ati awọn modulu. Idagbasoke naa jẹ agbateru nipasẹ Google ati ISRG (Ẹgbẹ Iwadi Aabo Intanẹẹti), eyiti o jẹ oludasile iṣẹ akanṣe Let's Encrypt ati igbega HTTPS ati idagbasoke awọn imọ-ẹrọ lati mu aabo Intanẹẹti dara si.

Ranti pe awọn iyipada ti a dabaa jẹ ki o ṣee ṣe lati lo Rust bi ede keji fun idagbasoke awakọ ati awọn modulu ekuro. Atilẹyin ipata ni a gbekalẹ bi aṣayan ti ko ṣiṣẹ nipasẹ aiyipada ati pe ko ja si ni ipata ti o wa bi igbẹkẹle kikọ ti o nilo fun ekuro. Lilo Rust fun idagbasoke awakọ yoo gba ọ laaye lati ṣẹda ailewu ati awọn awakọ to dara julọ pẹlu ipa diẹ, ọfẹ lati awọn iṣoro bii iraye si iranti lẹhin didi, awọn ifọkasi itọka asan, ati awọn ifasilẹ ifipamọ.

Mimu ailewu iranti ni a pese ni ipata ni akoko iṣakojọpọ nipasẹ iṣayẹwo itọkasi, ṣiṣe itọju ohun-ini ohun ati igbesi aye ohun (opin), ati nipasẹ igbelewọn ti deede wiwọle iranti lakoko ṣiṣe koodu. Ipata tun pese aabo lodi si ṣiṣan odidi odidi, nilo ipilẹṣẹ dandan ti awọn iye oniyipada ṣaaju lilo, mu awọn aṣiṣe dara julọ ni ile-ikawe boṣewa, lo imọran ti awọn itọkasi ailagbara ati awọn oniyipada nipasẹ aiyipada, nfunni titẹ aimi to lagbara lati dinku awọn aṣiṣe ọgbọn.

Ẹya tuntun ti awọn abulẹ tẹsiwaju lati yọkuro awọn asọye ti a ṣe lakoko ijiroro ti akọkọ, keji, kẹta ati awọn ẹya kẹrin ti awọn abulẹ. Ninu ẹya tuntun:

  • Idanwo paati fun atilẹyin Rust ni a ti ṣafikun si eto isọpọ igbagbogbo ti o da lori bot 0DAY/LKP atilẹyin Intel ati titẹjade awọn ijabọ idanwo ti bẹrẹ. A n murasilẹ lati ṣepọ atilẹyin Rust sinu eto idanwo adaṣe adaṣe KernelCI. Idanwo ti o da lori GitHub CI ti gbe lọ si lilo awọn apoti.
  • Awọn modulu ekuro ipata ti ni ominira lati iwulo lati ṣalaye awọn abuda crate “#![ko_std]” ati “#![ẹya-ara (…)]”.
  • Atilẹyin ti a ṣafikun fun awọn ibi-afẹde apejọ kan ṣoṣo (.o, .s, .ll ati .i).
  • Awọn itọnisọna koodu ṣalaye awọn ofin fun yiya sọtọ awọn asọye (“//”) ati koodu kikọ (“///”).
  • Iwe afọwọkọ is_rust_module.sh ti tun ṣiṣẹ.
  • Atilẹyin ti a ṣafikun fun aimi (oniyipada pinpin agbaye) amuṣiṣẹpọ awọn ipilẹṣẹ ti o da lori imuse “CONFIG_CONSTRUCTORS”.
  • Ṣiṣakoso titiipa jẹ irọrun: Guard ati GuardMut ni idapo ati iru paramita kan.
  • O ṣee ṣe lati ṣalaye awọn paramita afikun nigbati awọn ẹrọ fiforukọṣilẹ.
  • Ṣafikun “RwSemaphore” abstraction, eyiti o ṣiṣẹ bi ipari lori eto rw_semaphore C.
  • Lati lo mmap, module mm tuntun ati abstraction VMA kan ti fi kun (apapọ lori eto vm_area_struct).
  • Awakọ GPIO PL061 ti yipada si lilo “dev_*!” Makiro.
  • Isọdi mimọ gbogbogbo ti koodu naa ni a ṣe.

orisun: opennet.ru

Fi ọrọìwòye kun