Kvina eldono de flikoj por la Linukso-kerno kun subteno por la Rust-lingvo

Miguel Ojeda, verkinto de la Rust-for-Linux-projekto, proponis kvinan version de komponentoj por evoluigado de aparataj peliloj en la Rust-lingvo por konsidero de Linuksaj kernaj programistoj. Rust-subteno estas konsiderita eksperimenta, sed jam estas inkluzivita en la linukso-sekva branĉo kaj estas sufiĉe evoluigita por komenci laboron pri kreado de abstraktaj tavoloj super kernaj subsistemoj, same kiel skribado de ŝoforoj kaj moduloj. La disvolviĝo estas financita de Google kaj la ISRG (Interreta Sekureco-Esplorgrupo), kiu estas la fondinto de la projekto Let's Encrypt kaj antaŭenigas HTTPS kaj la evoluon de teknologioj por plibonigi la interretan sekurecon.

Memoru, ke la proponitaj ŝanĝoj ebligas uzi Ruston kiel duan lingvon por disvolvi ŝoforojn kaj kernajn modulojn. Rust-subteno estas prezentita kiel opcio, kiu ne estas ebligita defaŭlte kaj ne rezultigas, ke Rust estas inkluzivita kiel postulata konstrua dependeco por la kerno. Uzado de Rust por ŝofor-disvolviĝo permesos al vi krei pli sekurajn kaj pli bonajn ŝoforojn kun minimuma peno, liberaj de problemoj kiel memoraliro post liberigo, nulaj montriloj dereferencoj kaj bufro-tropasoj.

Memorsekureco estas disponigita en Rust ĉe kompiltempo per referenckontrolado, konservante trakon de objektoposedo kaj objektvivdaŭro (amplekso), same kiel tra taksado de la ĝusteco de memoraliro dum kodekzekuto. Rusto ankaŭ provizas protekton kontraŭ entjeraj superfluoj, postulas devigan inicialigon de variaj valoroj antaŭ uzo, pli bone pritraktas erarojn en la norma biblioteko, aplikas la koncepton de neŝanĝeblaj referencoj kaj variabloj defaŭlte, ofertas fortan senmovan tajpadon por minimumigi logikajn erarojn.

La nova versio de la flikoj daŭre forigas la komentojn faritajn dum la diskuto de la unua, dua, tria kaj kvara eldonoj de la flikoj. En la nova versio:

  • Testado de komponantoj por Rust-subteno estis aldonita al la kontinua integriga sistemo bazita sur la roboto 0DAY/LKP subtenata de Intel kaj la publikigo de testaj raportoj komenciĝis. Ni preparas integri Rust-subtenon en la aŭtomatigitan testan sistemon KernelCI. Testado bazita sur GitHub CI estis transdonita al la uzo de ujoj.
  • Rustaj kernaj moduloj estas liberigitaj de la bezono difini la kestajn atributojn "#![no_std]" kaj "#![trajto(...)]".
  • Aldonita subteno por unuopaj asembleaj celoj (.o, .s, .ll kaj .i).
  • Kodgvidlinioj difinas regulojn por apartigi komentojn ("//") kaj dokumenti kodon ("///").
  • La skripto is_rust_module.sh estis reverkita.
  • Aldonita subteno por senmovaj (tutmonda komuna variablo) sinkronigaj primitivoj bazitaj sur la efektivigo "CONFIG_CONSTRUCTORS".
  • Seruradministrado estas simpligita: Gardisto kaj GuardMut estas kombinitaj kaj unu parametra tipo.
  • Eblas difini pliajn parametrojn dum registrado de aparatoj.
  • Aldonita la "RwSemaphore" abstraktado, kiu funkcias kiel envolvaĵo super la rw_semaphore C-strukturo.
  • Por uzi mmap, nova mm-modulo kaj VMA-abstraktaĵo estis aldonitaj (envolvaĵo super la vm_area_struct-strukturo).
  • La GPIO PL061-ŝoforo estis ŝanĝita al uzado de la makroo "dev_*!".
  • Ĝenerala purigado de la kodo estis farita.

fonto: opennet.ru

Aldoni komenton