Yr wythfed fersiwn o glytiau ar gyfer y cnewyllyn Linux gyda chefnogaeth i'r iaith Rust

Cynigiodd Miguel Ojeda, awdur y prosiect Rust-for-Linux, ryddhau cydrannau v8 ar gyfer datblygu gyrwyr dyfeisiau yn yr iaith Rust i'w hystyried gan ddatblygwyr cnewyllyn Linux. Dyma'r fersiwn ddiwygiedig o'r clytiau, gan gymryd i ystyriaeth y fersiwn gyntaf, a gyhoeddwyd heb rif fersiwn. Ystyrir bod cefnogaeth rhwd yn arbrofol, ond mae eisoes wedi'i gynnwys yn y gangen linux-nesaf, yn honni ei fod wedi'i integreiddio i ryddhad cwymp 5.20 / 6.0, ac mae'n ddigon aeddfed i ddechrau gweithio ar greu haenau tynnu dros is-systemau cnewyllyn, yn ogystal ag ysgrifennu gyrwyr a modiwlau. Ariennir y datblygiad gan Google a'r ISRG (Internet Security Research Group), sef sylfaenydd y prosiect Let's Encrypt ac sy'n hyrwyddo HTTPS a datblygiad technolegau i wella diogelwch Rhyngrwyd.

Yn y fersiwn newydd:

  • Mae'r pecyn cymorth ac amrywiad o'r llyfrgell aloc, yn rhydd o genhedlaeth bosibl o gyflwr "panig" pan fydd gwallau'n digwydd, wedi'u diweddaru ar gyfer rhyddhau Rust 1.62. O'i gymharu â'r fersiwn a ddefnyddiwyd yn flaenorol, mae pecyn cymorth Rust wedi sefydlogi cefnogaeth ar gyfer y swyddogaeth const_fn_trait_bound a ddefnyddir mewn clytiau cnewyllyn.
  • Mae'r cod rhwymo wedi'i wahanu'n becyn crât ar wahân “rhwymiadau”, sy'n symleiddio ailadeiladu os gwneir newidiadau i'r prif becyn “cnewyllyn” yn unig.
  • Gweithredu'r macro “concat_idents!” wedi'i ailysgrifennu ar ffurf macro gweithdrefnol nad yw'n gysylltiedig â'r swyddogaeth concat_idents ac sy'n caniatáu defnyddio cyfeiriadau at newidynnau lleol.
  • Mae’r macro “static_assert!” wedi’i ailysgrifennu, gan ganiatáu defnyddio “craidd::sert!()” mewn unrhyw gyd-destun yn lle cysonion.
  • Macro "build_error!" wedi'i addasu i weithio pan fydd y modd “RUST_BUILD_ASSERT_{WARN,ALLOW}” wedi'i osod ar gyfer modiwlau.
  • Ychwanegwyd ffeil ar wahân gyda gosodiadau “kernel/configs/rust.config”.
  • Mae'r ffeiliau “*.i” a broseswyd mewn amnewidiadau macro wedi'u hail-enwi i “*.rsi”.
  • Mae cefnogaeth ar gyfer adeiladu cydrannau Rust gyda lefelau optimeiddio sy'n wahanol i'r rhai a ddefnyddir ar gyfer cod C wedi dod i ben.
  • Ychwanegwyd modiwl fs, sy'n darparu rhwymiadau ar gyfer gweithio gyda systemau ffeiliau. Darperir enghraifft o system ffeiliau syml a ysgrifennwyd yn Rust.
  • Ychwanegwyd modiwl ciw gwaith ar gyfer gweithio gyda chiwiau system (yn darparu rhwymiadau dros strwythurau cnewyllyn work_struct a workqueue_struct).
  • Parhaodd datblygiad y modiwl kasync gyda gweithredu dulliau rhaglennu asyncronig (async). Ychwanegwyd enghraifft o weinydd TCP lefel graidd a ysgrifennwyd yn Rust.
  • Ychwanegwyd y gallu i drin ymyriadau yn yr iaith Rust gan ddefnyddio'r mathau o Drinwyr [Threaded] a'r mathau o Gofrestru [Edafedd].
  • Ychwanegwyd macro gweithdrefnol "#[vtable]" i'w gwneud yn haws gweithio gyda thablau o awgrymiadau swyddogaeth, megis y strwythur file_operations.
  • Ychwanegwyd gweithredu rhestrau deugyfeiriadol cysylltiedig "unsafe_list::List".
  • Ychwanegwyd cefnogaeth gychwynnol ar gyfer RCU (Darllen-copi-diweddariad) a math Guard i wirio a yw clo darllen yn rhwym i'r edefyn cyfredol.
  • Tasg Ychwanegwyd:: swyddogaeth silio () i greu a chychwyn edafedd cnewyllyn yn awtomatig. Ychwanegwyd y dull Tasg::wake_up() hefyd.
  • Ychwanegwyd modiwl oedi sy'n eich galluogi i ddefnyddio oedi (lapiwr dros msleep ()).

Mae'r newidiadau arfaethedig yn ei gwneud hi'n bosibl defnyddio Rust fel ail iaith ar gyfer datblygu gyrwyr a modiwlau cnewyllyn. Cyflwynir cefnogaeth rust fel opsiwn nad yw'n cael ei alluogi yn ddiofyn ac nad yw'n arwain at gynnwys Rust ymhlith y dibyniaethau adeiladu gofynnol ar gyfer y cnewyllyn. Bydd defnyddio Rust i ddatblygu gyrwyr yn caniatáu ichi greu gyrwyr mwy diogel a gwell heb fawr o ymdrech, yn rhydd o broblemau fel cyrchu man cof ar ôl iddo gael ei ryddhau, dadgyfeirio awgrymiadau nwl, a gor-redeg byffer.

Darperir diogelwch cof yn Rust ar amser llunio trwy wirio cyfeiriadau, cadw golwg ar berchnogaeth gwrthrych ac oes gwrthrych (cwmpas), yn ogystal â thrwy werthuso cywirdeb mynediad cof wrth weithredu cod. Mae Rust hefyd yn darparu amddiffyniad rhag gorlifiadau cyfanrif, yn gofyn am ymgychwyn gorfodol o werthoedd amrywiol cyn ei ddefnyddio, yn trin gwallau yn well yn y llyfrgell safonol, yn cymhwyso'r cysyniad o gyfeiriadau a newidynnau digyfnewid yn ddiofyn, yn cynnig teipio statig cryf i leihau gwallau rhesymegol.

Ffynhonnell: opennet.ru

Ychwanegu sylw