Khatiso ea boraro ea li-patches bakeng sa kernel ea Linux ka tšehetso bakeng sa puo ea Rust

Miguel Ojeda, sengoli sa morero oa Rust-for-Linux, o khothalelitse khetho ea karolo ea boraro bakeng sa ho nts'etsapele bakhanni ba lisebelisoa ka puo ea Rust bakeng sa baetsi ba kernel ba Linux hore ba nahane. Tšehetso ea mafome e nkoa e le liteko, empa e se e lumellane ka hore e kenyelelitsoe lekaleng le latelang la linux. Ntlafatso ena e tšehelitsoe ka lichelete ke Google le ISRG (Internet Security Research Group), e leng mothehi oa morero oa Let's Encrypt le ho khothaletsa HTTPS le nts'etsopele ea mahlale a ho ntlafatsa ts'ireletso ea Marang-rang.

Hopola hore liphetoho tse reriloeng li etsa hore ho khonehe ho sebelisa Rust e le puo ea bobeli bakeng sa ho ntlafatsa bakhanni le li-module tsa kernel. Tšehetso ea mafome e hlahisoa e le khetho e sa sebetseng ka ho sa feleng 'me e sa etse hore Rust e kenyelelitsoe e le ho itšetleha ho hlokahalang bakeng sa kernel. Ho sebelisa Rust bakeng sa nts'etsopele ea mokhanni ho tla u lumella ho theha bakhanni ba sireletsehileng le ba betere ka boikitlaetso bo fokolang, ntle le mathata a joalo ka phihlello ea mohopolo ka mor'a ho lokolla, li-null pointer dereferences, le buffer overruns.

Ho sebetsa ka mokhoa o sireletsehileng oa memori ho fanoa ka Rust ka nako ea ho bokella ka ho hlahloba litšupiso, ho boloka tlaleho ea botho ba ntho le nako ea bophelo ba ntho (scope), hammoho le ka tlhahlobo ea ho nepahala ha phihlello ea mohopolo nakong ea ts'ebetso ea khoutu. Rust e boetse e fana ka ts'ireletso khahlano le phallo e felletseng, e hloka ho qalisoa ha boleng bo fapaneng pele e sebelisoa, e sebetsana le liphoso hantle laeboraring e tloaelehileng, e sebelisa mohopolo oa litšupiso tse ke keng tsa fetoha le tse fapaneng ka mokhoa o ikhethileng, e fana ka ho thaepa ho tiileng ho fokotsa liphoso tse utloahalang.

Phetolelo e ncha ea li-patches e ntse e tsoela pele ho felisa litlhaloso tse entsoeng nakong ea lipuisano tsa liphetolelo tsa pele le tsa bobeli tsa li-patches. Liphetoho tse hlokomelehang haholo:

  • Ho entsoe phetoho ea ho sebelisa tokollo e tsitsitseng ea Rust 1.57 e le mohlophisi oa litšupiso le sehokelo sa khatiso e tsitsitseng ea puo ea Rust 2021. Pejana, li-patches li ne li tlameletsoe lekaleng la beta la Rust 'me li sebelisa likarolo tse ling tsa puo tseo li ne li khetholloa e le tse sa tsitsang. Phetoho ho tlhaloso ea Rust 2021 e re lumelletse ho qala mosebetsi ho qoba tšebeliso ea likarolo tse sa tsitsang ho li-patches tse kang const_fn_transmute, const_panic, const_unavailable_unchecked le core_panic le try_reserve.
  • Nts'etsopele ea mofuta oa laeborari ea Rust alloc e kenyellelitsoeng lipacheng e ntse e tsoela pele, e fetotsoe ho tlosa mesebetsi ea kabo ea memori ea ho hlahisa boemo ba "tšabo" ha liphoso li etsahala, joalo ka ho hloka mohopolo. Mofuta o mocha o sebelisa likhetho tsa "no_rc" le "no_sync" ho tima ts'ebetso e sa sebelisoeng ho kernel Rust code, ho etsa hore laeborari e be modular haholoanyane. Mosebetsi o ntse o tsoela pele ka baetsi ba mantlha ba alloc, ba ikemiselitseng ho fetisetsa liphetoho tse hlokahalang bakeng sa kernel ho laeborari e kholo. Khetho ea "no_fp_fmt_parse", e hlokahalang hore laeborari e sebetse boemong ba kernel, e isitsoe laebraring ea Rust base (core).
  • Khoutu e hloekisitsoe ho tlosa litemoso tse ka bang teng ha u theha kernel ka mokhoa oa CONFIG_WERROR. Ha ho aha khoutu ho Rust, mekhoa e meng ea tlhahlobo ea li-compiler le litemoso tsa Clippy linter lia lumelloa.
  • Lits'oants'o li reriloe hore li sebelisoe ho Rust code bakeng sa seqlocks (liloko tsa tatellano), mehala ea callback bakeng sa taolo ea matla, Memory ea I/O (readX/writeX), li-interrupt and thread handlers, GPIO, phihlello ea lisebelisoa, bakhanni le lintlha.
  • Lisebelisoa tsa nts'etsopele ea bakhanni li ekelitsoe ho kenyelletsa limumu tse fetisetsoang sebakeng se seng, li-bit iterator, li-pointer tse nolofalitsoeng tse tlamang, tlhahlobo e ntlafalitsoeng ea tlhahlobo ea liphoso, le lisebelisoa tse ikemetseng tsa libese.
  • Mosebetsi o ntlafalitsoeng o nang le likhokahano o sebelisa mofuta o nolofalitsoeng oa Ref, o ipapisitse le refcount_t backend, e sebelisang kernel API ea lebitso le tšoanang ho bala litšupiso. Tšehetso ea mefuta ea Arc le Rc e fanoeng laebraring e tloaelehileng ea alloc e tlositsoe 'me ha e fumanehe ka khoutu e entsoeng boemong ba kernel (likhetho li lokiselitsoe laebrari ka boeona e thibelang mefuta ena).
  • Li-patches li kenyelletsa mofuta oa mokhanni oa PL061 GPIO, o ngotsoeng hape ho Rust. Tšobotsi e khethehileng ea mokhanni ke hore ts'ebetsong ea eona hoo e batlang e le mola ka mola o pheta mokhanni oa GPIO ea teng ka puo ea C. Bakeng sa bahlahisi ba batlang ho tloaelana le ho theha bakhanni ho Rust, ho lokiselitsoe papiso ea line-by-line e ba lumellang ho utloisisa hore na ke li-constructs life ho Rust khoutu ea C e fetoletsoeng.
  • Rust codebase e kholo e amohetse rustc_codegen_gcc, rustc backend bakeng sa GCC e sebelisang pokello ea nako e tlang pele (AOT) e sebelisa laeborari ea libgccjit. Ka nts'etsopele e nepahetseng ea backend, e tla u lumella ho bokella khoutu ea Rust e amehang kernel u sebelisa GCC.
  • Ntle le ARM, Google le Microsoft, Red Hat e bontšitse thahasello ea ho sebelisa puo ea Rust ka har'a kernel ea Linux. A re hopoleng hore Google e fana ka ts'ehetso ka kotloloho bakeng sa morero oa Rust bakeng sa Linux, e nts'etsapele ts'ebetsong e ncha ea mokhoa oa puisano oa Binder interprocess ho Rust, 'me e nahana ka monyetla oa ho lokisa bakhanni ba fapaneng ba Rust. Microsoft e se e qalile ho kenya ts'ebetsong bakhanni ba Hyper-V ho Rust. ARM e sebetsa ho ntlafatsa tšehetso ea Rust bakeng sa litsamaiso tse thehiloeng ho ARM. IBM e kentse ts'ehetso ea Rust kernel bakeng sa litsamaiso tsa PowerPC.

Source: opennet.ru

Eketsa ka tlhaloso