Toleo la nane la viraka kwa kinu cha Linux na msaada kwa lugha ya Rust

Miguel Ojeda, mwandishi wa mradi wa Rust-for-Linux, alipendekeza kutolewa kwa vipengee vya v8 kwa ajili ya kuendeleza viendesha kifaa katika lugha ya Rust ili kuzingatiwa na watengenezaji wa Linux kernel. Hii ni toleo la marekebisho la patches, kwa kuzingatia toleo la kwanza, lililochapishwa bila nambari ya toleo. Usaidizi wa kutu unachukuliwa kuwa wa majaribio, lakini tayari umejumuishwa katika tawi linalofuata la linux, inadai kuunganishwa katika toleo la 5.20/6.0, na imekomaa vya kutosha kuanza kazi ya kuunda tabaka za uondoaji juu ya mifumo ndogo ya kernel, na vile vile viendeshaji vya uandishi. na moduli. Maendeleo hayo yanafadhiliwa na Google na ISRG (Kikundi cha Utafiti wa Usalama wa Mtandao), ambao ndio waanzilishi wa mradi wa Let's Encrypt na kukuza HTTPS na uundaji wa teknolojia ili kuboresha usalama wa Mtandao.

Katika toleo jipya:

  • Zana ya zana na lahaja ya maktaba ya alloc, isiyo na uwezekano wa kutokea kwa hali ya "hofu" makosa yanapotokea, yamesasishwa kwa ajili ya kutolewa kwa Rust 1.62. Ikilinganishwa na toleo lililotumika hapo awali, Rust toolkit imeimarisha usaidizi kwa utendakazi wa const_fn_trait_bound unaotumika katika viraka vya kernel.
  • Nambari ya kumfunga imegawanywa katika "vifungo" vya kifurushi tofauti cha crate, ambacho hurahisisha uundaji upya ikiwa mabadiliko yanafanywa kwa "kernel" ya kifurushi kikuu pekee.
  • Utekelezaji wa jumla "concat_idents!" iliyoandikwa upya katika mfumo wa jumla wa utaratibu ambao haufungamani na utendakazi wa concat_idents na inaruhusu matumizi ya marejeleo kwa vigeu vya ndani.
  • Jumla ya "static_assert!" imeandikwa upya, ikiruhusu matumizi ya "msingi::assert!()" katika muktadha wowote badala ya viunga.
  • Macro "build_error!" inarekebishwa kufanya kazi wakati modi ya "RUST_BUILD_ASERT_{WARN,ALLOW}" imewekwa kwa ajili ya moduli.
  • Imeongeza faili tofauti na mipangilio "kernel/configs/rust.config".
  • Faili za "*.i" zilizochakatwa katika vibadala vikubwa zimebadilishwa jina na kuwa "*.rsi".
  • Usaidizi wa kuunda vipengee vya Rust na viwango vya uboreshaji tofauti na vile vinavyotumiwa kwa msimbo wa C umekatishwa.
  • Imeongeza moduli ya fs, ambayo hutoa vifungo vya kufanya kazi na mifumo ya faili. Mfano wa mfumo rahisi wa faili ulioandikwa katika Rust hutolewa.
  • Imeongeza moduli ya foleni ya kufanya kazi na foleni za mfumo (hutoa vifungo juu ya muundo wa kazi na muundo wa kernel ya kazi).
  • Uendelezaji wa moduli ya kasync uliendelea na utekelezaji wa mbinu za programu zisizo sawa (async). Imeongeza mfano wa seva ya TCP ya kiwango cha msingi iliyoandikwa kwa Rust.
  • Imeongeza uwezo wa kushughulikia ukatizaji katika lugha ya Kutu kwa kutumia [Nyezi]Aina za Vidhibiti na aina za [Nyezi] za Usajili`.
  • Imeongeza jumla ya kitaratibu "#[vtable]" ili kurahisisha kufanya kazi na majedwali ya viashiria vya utendakazi, kama vile muundo wa faili_uendeshaji.
  • Utekelezaji ulioongezwa wa orodha zilizounganishwa zenye mwelekeo mbili "unsafe_list::List".
  • Imeongeza usaidizi wa awali wa RCU (Soma-nakala-sasisho) na aina ya Walinzi ili kuangalia kama kufuli ya kusoma imefungwa kwenye mazungumzo ya sasa.
  • Kazi Iliyoongezwa::spawn() kazi ya kuunda na kuanzisha nyuzi kiotomatiki. Pia aliongeza Task::wake_up() mbinu.
  • Imeongeza sehemu ya kuchelewesha ambayo hukuruhusu kutumia ucheleweshaji (kifuniko juu ya msleep()).

Mabadiliko yaliyopendekezwa yanawezesha kutumia Rust kama lugha ya pili kwa kutengeneza viendeshaji na moduli za kernel. Usaidizi wa kutu unawasilishwa kama chaguo ambalo halijawezeshwa kwa chaguo-msingi na halisababishi Rust kujumuishwa kama tegemeo la ujenzi linalohitajika kwa kernel. Kutumia Kutu kwa ukuzaji wa viendeshaji kutakuruhusu kuunda viendeshaji salama na bora zaidi kwa juhudi kidogo, bila matatizo kama vile ufikiaji wa kumbukumbu baada ya kukomboa, vielekezo visivyofaa vya vielelezo, na ziada ya bafa.

Utunzaji wa kumbukumbu-salama hutolewa katika Rust wakati wa kukusanya kupitia ukaguzi wa kumbukumbu, kufuatilia umiliki wa kitu na maisha ya kitu (wigo), na pia kupitia tathmini ya usahihi wa ufikiaji wa kumbukumbu wakati wa utekelezaji wa nambari. Kutu pia hutoa ulinzi dhidi ya mafuriko kamili, inahitaji uanzishaji wa lazima wa maadili tofauti kabla ya matumizi, hushughulikia makosa vyema katika maktaba ya kawaida, hutumia dhana ya marejeleo yasiyobadilika na vigeu kwa chaguo-msingi, hutoa uchapaji thabiti wa tuli ili kupunguza makosa ya kimantiki.

Chanzo: opennet.ru

Kuongeza maoni