Ny dikan-teny fahavalo amin'ny patch ho an'ny kernel Linux miaraka amin'ny fanohanana ny fiteny Rust

Miguel Ojeda, mpanoratra ny tetikasa Rust-for-Linux, dia nanolotra ny famoahana ireo singa v8 ho an'ny fampivoarana ireo mpamily fitaovana amin'ny fiteny Rust mba hodinihin'ireo mpamorona kernel Linux. Ity no dikan-teny nohavaozina amin'ny patch, raha raisina ny dikan-teny voalohany, navoaka tsy misy laharana dikan-teny. Ny fanohanan'ny harafesina dia heverina ho fanandramana, saingy efa tafiditra ao amin'ny sampana manaraka linux, milaza fa tafiditra ao anatin'ny famoahana ny fararano 5.20 / 6.0, ary efa matotra mba hanomboka hiasa amin'ny famoronana sosona abstraction amin'ny subsystems kernel, ary koa ny mpamily fanoratana sy modules. Ny fampandrosoana dia vatsian'ny Google sy ny ISRG (Internet Security Research Group), izay mpanorina ny tetikasa Let's Encrypt ary mampiroborobo ny HTTPS sy ny fampivoarana ny teknolojia hanatsarana ny fiarovana amin'ny Internet.

Ao amin'ny dikan-teny vaovao:

  • Ny kitapom-pitaovana sy ny variana amin'ny tranomboky alloc, tsy misy mety hiteraka fanjakana "sahiran-tsaina" rehefa misy lesoka, dia nohavaozina ho an'ny famoahana ny Rust 1.62. Raha ampitahaina amin'ny dikan-teny teo aloha, ny fitaovana Rust dia nanamafy ny fanohanana ny const_fn_trait_bound fampiasa ampiasaina amin'ny paty kernel.
  • Ny kaody mifamatotra dia misaraka amin'ny fonosana "famatotra" misaraka, izay manamora ny fanamboarana raha tsy misy fanovana natao afa-tsy amin'ny fonosana lehibe "kernel".
  • Fampiharana ny macro "concat_idents!" nosoratana indray amin'ny endrika macro procedural izay tsy mifamatotra amin'ny fampiasa concat_idents ary mamela ny fampiasana references amin'ny variables eo an-toerana.
  • Ny macro "static_assert!" dia naverina nosoratana, mamela ny fampiasana ny "core::assert!()" amin'ny toe-javatra rehetra fa tsy constants.
  • Macro "build_error!" ampifanarahana amin'ny fiasa rehefa napetraka ho an'ny maody ny maody "RUST_BUILD_ASSERT_{WARN,ALLOW}".
  • Nampiana rakitra misaraka miaraka amin'ny fikandrana "kernel/configs/rust.config".
  • Ny rakitra "*.i" voahodina amin'ny fanoloana macro dia novana anarana ho "*.rsi".
  • Ny fanohanana ny fananganana singa Rust miaraka amin'ny haavon'ny fanatsarana tsy mitovy amin'ireo ampiasaina amin'ny kaody C dia natsahatra.
  • Nampiana fs module, izay manome fatorana amin'ny fiasana amin'ny rafi-drakitra. Ohatra iray amin'ny rafitra rakitra tsotra voasoratra amin'ny Rust no omena.
  • Module workqueue fanampiny ho an'ny fiasana amin'ny filaharana rafitra (manome fatorana amin'ny rafitra kernel work_struct sy workqueue_struct).
  • Nitohy tamin'ny fampiharana ny fomba fandaharana asynchronous (async) ny fampandrosoana ny maody kasync. Nampiana ohatra iray amin'ny mpizara TCP ambaratonga fototra voasoratra amin'ny Rust.
  • Nampiana ny fahafahana mitantana ny fiatoana amin'ny fiteny Rust amin'ny fampiasana ny karazana [Threaded]Handler sy [Threaded]Registration`.
  • Nampiana macro procedural "#[vtable]" mba hanamora ny fiasana amin'ny tabilao misy tondro fiasa, toy ny firafitry ny fichier_operations.
  • Nampiana ny fampiharana ny lisitra mifandray roa tondro "unsafe_list::List".
  • Nampiana fanohanana voalohany ho an'ny RCU (Read-copy-update) sy karazana Guard mba hanamarinana raha misy hidin-trano mifatotra amin'ny kofehy ankehitriny.
  • Added Task :: spawn() miasa hamorona sy manomboka ho azy ireo kofehy kernel. Nampiana ihany koa ny fomba Task :: wake_up().
  • Nampiana maody fahatarana izay ahafahanao mampiasa fahatarana (famonoana amin'ny msleep()).

Ny fanovana naroso dia ahafahana mampiasa ny Rust ho fiteny faharoa amin'ny famolavolana mpamily sy maody kernel. Ny fanohanan'ny Rust dia aseho ho toy ny safidy tsy avela amin'ny alΓ lan'ny default ary tsy miteraka ny Rust ho tafiditra ho fiankinan-doha ilaina amin'ny kernel. Ny fampiasana Rust ho an'ny fampandrosoana ny mpamily dia ahafahanao mamorona mpamily azo antoka kokoa sy tsara kokoa miaraka amin'ny ezaka kely indrindra, tsy misy olana toy ny fidirana amin'ny fahatsiarovana aorian'ny fanafahana, ny tsy fahampian'ny pointer tsy misy dikany ary ny fihoaran'ny buffer.

Ny harafesina dia manery ny fiarovana ny fitadidiana amin'ny fotoana fanangonana amin'ny alΓ lan'ny fanamarinana reference, ny fananana zavatra ary ny fanaraha-maso mandritra ny androm-piainana (scopes), ary amin'ny fanombanana ny fahamarinan'ny fidirana amin'ny fitadidiana amin'ny fotoana fandehanana. Ny Rust koa dia manome fiarovana amin'ny fihoaran'ny integer, mitaky ny fanombohana ny soatoavina miovaova alohan'ny hampiasana azy, manana fikarakarana fahadisoana tsara kokoa ao amin'ny tranomboky mahazatra, mampiasa ny foto-kevitry ny fanondroana sy ny fari-pitsipika tsy azo ovaina amin'ny alΓ lan'ny default, ary manolotra sora-baventy matanjaka mba hampihenana ny lesoka lojika.

Source: opennet.ru

Add a comment