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

Miguel Ojeda, verkinto de la Rust-for-Linux-projekto, proponis ĝisdatigitan version de komponentoj por evoluigado de aparataj peliloj en la Rust-lingvo por konsidero de Linuksaj kernaj programistoj. Rust-subteno estas konsiderata eksperimenta, sed jam estis interkonsentita por inkludo en la linukso-sekva branĉo. La nova versio forigas la komentojn faritajn dum la diskuto pri la unua versio de la flikoj. Linus Torvalds jam aliĝis al la diskuto kaj proponis ŝanĝi la logikon por prilaborado de kelkaj bitoperacioj.

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 plej rimarkindaj ŝanĝoj en la nova versio de la flikoj:

  • La memorasignokodo estas liberigita de eble generado de "paniko-" ŝtato kiam eraroj kiel ekzemple el memoro okazas. Variaĵo de la Rust alloc-biblioteko estas inkluzivita, kiu reverkas la kodon por trakti malsukcesojn, sed la fina celo estas transdoni ĉiujn funkciojn necesajn por la kerno al la ĉefa eldono de alloc (la ŝanĝoj jam estis pretaj kaj transdonitaj al la normo. Rust-biblioteko).
  • Anstataŭ noktaj konstruoj, vi nun povas uzi beta-eldonojn kaj stabilajn eldonojn de la rustc-kompililo por kompili kernon kun Rust-subteno. Nuntempe, rustc 1.54-beta1 estas uzata kiel referenca kompililo, sed post kiam la 1.54-eldono estas publikigita fine de la monato, ĝi estos subtenata kiel referenca kompililo.
  • Aldonita subteno por verkado de testoj uzante la norman "#[testo]" atributon por Rust kaj la kapablo uzi doctests por dokumenti testojn.
  • Aldonita subteno por ARM32 kaj RISCV-arkitekturoj krom antaŭe subtenataj x86_64 kaj ARM64.
  • Plibonigitaj efektivigoj de GCC Rust (GCC-fasaĵo por Rust) kaj rustc_codegen_gcc (rustc-backend por GCC), kiuj nun trapasas ĉiujn bazajn testojn.
  • Nova nivelo de abstraktado estas proponita por uzo en Rust-programoj de kernmekanismoj skribitaj en C, kiel ekzemple ruĝ-nigraj arboj, referenc-nombritaj objektoj, dosierpriskribilo kreado, taskoj, dosieroj, kaj I/O-vektoroj.
  • Ŝofor-disvolvaj komponantoj plibonigis subtenon por la modulo file_operations, la macromodulo!, makroregistrado kaj rudimentaj peliloj (sondi kaj forigi).
  • Binder nun subtenas preterpasajn dosierpriskribilojn kaj LSM-hokojn.
  • Pli funkcia ekzemplo de Rust-ŝoforo estas proponita - bcm2835-rng por la aparataro hazarda nombrogeneratoro de Raspberry Pi-tabuloj.

Plie, la projektoj de kelkaj firmaoj ligitaj al la uzo de Rust en la kerno estas menciitaj:

  • Mikrosofto esprimis intereson partopreni en la laboro por integri Rust-subtenon en la Linuksan kernon kaj pretas disponigi ŝoforajn efektivigojn por Hyper-V sur Rust en la venontaj monatoj.
  • ARM laboras por plibonigi Rust-subtenon por ARM-bazitaj sistemoj. La Rust-projekto jam proponis ŝanĝojn, kiuj igus 64-bitajn ARM-sistemojn platformon de Tier 1.
  • Guglo rekte provizas subtenon por la projekto Rust por Linukso, disvolvas novan efektivigon de la interproceza komunikmekanismo de Binder en Rust, kaj pripensas la eblecon reverki diversajn ŝoforojn en Rust. Per ISRG (Interreta Sekureca Esplorgrupo), Google disponigis financadon por laboro por integri Rust-subtenon en la Linukso-kernon.
  • IBM efektivigis kernsubtenon por Rust por PowerPC-sistemoj.
  • La laboratorio de LSE (Systems Research Laboratory) evoluigis SPI-ŝoforon en Rust.

fonto: opennet.ru

Aldoni komenton