Áttunda útgáfan af plástrum fyrir Linux kjarna með stuðningi fyrir Rust tungumálið

Miguel Ojeda, höfundur Rust-for-Linux verkefnisins, lagði til útgáfu v8 íhluta til að þróa tækjarekla á Rust tungumálinu til athugunar fyrir Linux kjarnahönnuði. Þetta er endurskoðuð útgáfa plástra, að teknu tilliti til fyrstu útgáfunnar, gefin út án útgáfunúmers. Ryðstuðningur er talinn tilraunakenndur, en er þegar innifalinn í Linux-next greininni, segist vera samþættur í haustútgáfu 5.20/6.0 og er nógu þroskaður til að hefja vinnu við að búa til abstraktlög yfir kjarna undirkerfi, auk þess að skrifa rekla. og einingar. Þróunin er styrkt af Google og ISRG (Internet Security Research Group), sem er stofnandi Let's Encrypt verkefnisins og stuðlar að HTTPS og þróun tækni til að bæta netöryggi.

Í nýju útgáfunni:

  • Verkfærakistan og afbrigði af alloc bókasafninu, laus við hugsanlega mynd af „læti“ ástandi þegar villur eiga sér stað, hefur verið uppfært fyrir útgáfu Rust 1.62. Í samanburði við áður notaða útgáfu, hefur Rust verkfærakistan stöðugan stuðning fyrir const_fn_trait_bound virkni sem notuð er í kjarnaplástrum.
  • Bindarkóðinn er aðskilinn í sérstakan „bindingar“ í kassapakkanum, sem einfaldar endurbyggingu ef breytingar eru aðeins gerðar á aðalpakkanum „kjarna“.
  • Útfærsla á makróinu „concat_idents!” endurskrifað í formi málsmeðferðarfjölvi sem er ekki bundið við concat_idents virknina og leyfir notkun tilvísana í staðbundnar breytur.
  • „Static_assert!“ fjölvi hefur verið endurskrifað, sem gerir kleift að nota „core::assert!()“ í hvaða samhengi sem er í stað fasta.
  • Fjölva "build_error!" lagað til að virka þegar „RUST_BUILD_ASSERT_{WARN,ALLOW}“ hamurinn er stilltur fyrir einingar.
  • Bætti við sérstakri skrá með stillingunum „kernel/configs/rust.config“.
  • „*.i“ skrárnar sem unnið er með í fjölviskiptum hefur verið breytt í „*.rsi“.
  • Stuðningur við smíði Ryðhluta með öðrum hagræðingarstigum en þeim sem notuð eru fyrir C kóða hefur verið hætt.
  • Bætt við fs einingu, sem veitir bindingar til að vinna með skráarkerfi. Dæmi um einfalt skráarkerfi skrifað í Rust er gefið.
  • Bætt við vinnuröðareiningu til að vinna með kerfisraðir (veitir bindingar yfir kjarnabyggingarnar work_struct og workqueue_struct).
  • Þróun kasync einingarinnar hélt áfram með innleiðingu ósamstilltra forritunaraðferða (async). Bætti við dæmi um TCP netþjón á kjarnastigi sem skrifaður er í Rust.
  • Bætti við hæfileikanum til að meðhöndla truflanir á Rust tungumálinu með því að nota [Threaded]Handler tegundir og [Threaded]Registration` tegundir.
  • Bætti við málsmeðferðarfjölva „#[vtable]“ til að auðvelda vinnu með töflur með aðgerðabendingum, eins og file_operations uppbyggingu.
  • Bætt við útfærslu á tvíátta tengdum listum „unsafe_list::List“.
  • Bætti við upphafsstuðningi fyrir RCU (Read-copy-update) og Guard gerð til að athuga hvort leslás sé bundin við núverandi þráð.
  • Bætt við Task::spawn() aðgerð til að búa til og ræsa kjarnaþræði sjálfkrafa. Bætti einnig við Task::wake_up() aðferðinni.
  • Bætti við tafaeiningu sem gerir þér kleift að nota tafir (umbúðir yfir msleep()).

Fyrirhugaðar breytingar gera það mögulegt að nota Rust sem annað tungumál til að þróa rekla og kjarnaeiningar. Ryðstuðningur er settur fram sem valkostur sem er ekki virkur sjálfgefið og leiðir ekki til þess að Rust sé innifalinn sem nauðsynleg byggingarháð fyrir kjarnann. Með því að nota Rust fyrir þróun ökumanns geturðu búið til öruggari og betri ökumenn með lágmarks fyrirhöfn, laus við vandamál eins og minnisaðgang eftir losun, frávísanir á núllbendingu og yfirkeyrsla á biðminni.

Minnisörugg meðhöndlun er veitt í Rust á samantektartíma með tilvísunarathugun, með því að halda utan um eignarhald og endingartíma hluta (umfang), sem og með mati á réttmæti minnisaðgangs við keyrslu kóða. Ryð veitir einnig vernd gegn heiltöluflæði, krefst skyldubundinnar frumstillingar breytugilda fyrir notkun, meðhöndlar villur betur í stöðluðu bókasafni, beitir hugmyndinni um óbreytanlegar tilvísanir og breytur sjálfgefið, býður upp á sterka truflanir innsláttar til að lágmarka rökvillur.

Heimild: opennet.ru

Bæta við athugasemd