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

Miguel Ojeda, sengoli sa projeke ea Rust-for-Linux, o khothalelitse mofuta oa bohlano oa likarolo bakeng sa ho nts'etsapele bakhanni ba lisebelisoa ka puo ea Rust bakeng sa ho hlahlojoa ke baetsi ba Linux kernel. Ts'ehetso ea mafome e nkoa e le liteko, empa e se e kenyelelitsoe lekaleng le latelang la linux 'me e ntlafalitse ka ho lekaneng ho qala mosebetsi oa ho theha likarolo tse fokolang holim'a li-subsystems tsa kernel, hammoho le ho ngola bakhanni le li-module. 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 likhatiso tsa pele, tsa bobeli, tsa boraro le tsa bone tsa likhatiso. Khatisong e ncha:

  • Teko ea likarolo bakeng sa tšehetso ea Rust e kenyelelitsoe tsamaisong e tsoelang pele ea ho kopanya e thehiloeng ho Intel-supported 0DAY/LKP bot mme phatlalatso ea litlaleho tsa liteko e qalile. Re ntse re itokisetsa ho kenyelletsa tšehetso ea Rust ho sistimi ea tlhahlobo e ikemetseng ea KernelCI. Teko e thehiloeng ho GitHub CI e fetiselitsoe ts'ebelisong ea lijana.
  • Li-module tsa rust kernel li lokollotsoe tlhokong ea ho hlalosa litšobotsi tsa crate "#![no_std]" le "#![feature(…)]".
  • Tšehetso e ekelitsoeng bakeng sa lipakane tsa kopano e le 'ngoe (.o, .s, .ll le .i).
  • Litaelo tsa likhoutu li hlalosa melao ea ho arola maikutlo (“//”) le khoutu ea litokomane (“///”).
  • Sengoloa sa is_rust_module.sh se hlophisitsoe bocha.
  • Ts'ehetso e ekelitsoeng bakeng sa li-sync tsa pele tsa khokahano ea static (global shared variable) e ipapisitse le ts'ebetsong ea "CONFIG_CONSTRUCTORS".
  • Tsamaiso ea Lock e nolofalitsoe: Guard le GuardMut li kopantsoe 'me mofuta o le mong oa parameterized.
  • Hoa khoneha ho hlalosa li-parameter tse eketsehileng ha u ngolisa lisebelisoa.
  • E kentse "RwSemaphore" abstraction, e sebetsang e le sekoahelo holim'a sebopeho sa rw_semaphore C.
  • Ho sebelisa mmap, mojule o mocha oa mm le abstraction ea VMA li kentsoe (sephutheloana holim'a sebopeho sa vm_area_struct).
  • Mokhanni oa GPIO PL061 o fetoletsoe ho sebelisa "dev_*!" macro.
  • Ho ile ha etsoa tlhoekiso e akaretsang ea khoutu.

Source: opennet.ru

Eketsa ka tlhaloso