Toleo la pili la viraka kwa kinu cha Linux kwa kutumia lugha ya Rust

Miguel Ojeda, mwandishi wa mradi wa Rust-for-Linux, alipendekeza toleo lililosasishwa la vipengee vya kutengeneza viendesha kifaa katika lugha ya Rust ili kuzingatiwa na watengenezaji wa Linux kernel. Msaada wa kutu unachukuliwa kuwa wa majaribio, lakini tayari umekubaliwa kujumuishwa katika tawi linalofuata la linux. Toleo jipya linaondoa maoni yaliyotolewa wakati wa majadiliano ya toleo la kwanza la viraka. Linus Torvalds tayari amejiunga na mjadala na kupendekeza kubadilisha mantiki kwa ajili ya kuchakata baadhi ya shughuli kidogo.

Kumbuka kwamba mabadiliko yaliyopendekezwa hufanya iwezekane kutumia Rust kama lugha ya pili kwa kukuza 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 Rust 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 vielekezi, 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.

Mabadiliko yanayoonekana zaidi katika toleo jipya la viraka:

  • Nambari ya mgao wa kumbukumbu imeachiliwa kutokana na uwezekano wa kutoa hali ya "hofu" wakati hitilafu kama vile kutoka kwa kumbukumbu hutokea. Lahaja ya maktaba ya Rust alloc imejumuishwa, ambayo hurekebisha msimbo kushughulikia mapungufu, lakini lengo kuu ni kuhamisha huduma zote zinazohitajika kwa kernel hadi toleo kuu la alloc (mabadiliko tayari yametayarishwa na kuhamishiwa kwa kiwango. maktaba ya kutu).
  • Badala ya miundo ya usiku, sasa unaweza kutumia matoleo ya beta na matoleo thabiti ya mkusanyaji wa rustc kukusanya kernel kwa usaidizi wa Rust. Kwa sasa, rustc 1.54-beta1 inatumika kama mkusanyaji wa marejeleo, lakini baada ya toleo la 1.54 kutolewa mwishoni mwa mwezi, itatumika kama mkusanyaji wa marejeleo.
  • Umeongeza uwezo wa kuandika majaribio kwa kutumia sifa ya kawaida ya "#[test]" ya Rust na uwezo wa kutumia doctest kuandika majaribio.
  • Usaidizi umeongezwa kwa usanifu wa ARM32 na RISCV pamoja na x86_64 na ARM64 iliyokuwa ikitumika hapo awali.
  • Utekelezaji ulioboreshwa wa GCC Rust (GCC frontend for Rust) na rustc_codegen_gcc (rustc backend for GCC), ambayo sasa inapitisha majaribio yote ya kimsingi.
  • Kiwango kipya cha uondoaji kinapendekezwa kwa matumizi katika programu za Rust za njia za kernel zilizoandikwa katika C, kama vile miti-nyeusi-nyeusi, vitu vilivyohesabiwa kwa marejeleo, uundaji wa maelezo ya faili, kazi, faili na vekta za I/O.
  • Vipengee vya ukuzaji wa viendeshi vimeboresha usaidizi wa moduli ya_operesheni, moduli! Usajili wa jumla, wa jumla, na viendeshaji vya kawaida (chunguza na ondoa).
  • Binder sasa inasaidia kupitisha maelezo ya faili na ndoano za LSM.
  • Mfano unaofanya kazi zaidi wa kiendesha Rust unapendekezwa - bcm2835-rng kwa jenereta ya nambari isiyo ya kawaida ya vifaa vya bodi za Raspberry Pi.

Kwa kuongeza, miradi ya kampuni zingine zinazohusiana na utumiaji wa kutu kwenye kernel imetajwa:

  • Microsoft imeonyesha nia ya kushiriki katika kazi ya kuunganisha usaidizi wa Rust kwenye kinu cha Linux na iko tayari kutoa utekelezaji wa viendeshaji kwa Hyper-V on Rust katika miezi ijayo.
  • ARM inafanya kazi ili kuboresha usaidizi wa Rust kwa mifumo inayotegemea ARM. Mradi wa Rust tayari umependekeza mabadiliko ambayo yangefanya mifumo ya ARM ya 64-bit kuwa jukwaa la Tier 1.
  • Google hutoa usaidizi wa moja kwa moja kwa mradi wa Rust for Linux, inatayarisha utekelezaji mpya wa utaratibu wa mawasiliano ya Binder katika Rust, na inazingatia uwezekano wa kurekebisha viendeshaji mbalimbali katika Rust. Kupitia ISRG (Kikundi cha Utafiti wa Usalama wa Mtandao), Google ilitoa ufadhili wa kazi ili kuunganisha usaidizi wa Rust kwenye kernel ya Linux.
  • IBM imetekeleza usaidizi wa kernel kwa Rust kwa mifumo ya PowerPC.
  • Maabara ya LSE (Maabara ya Utafiti wa Mifumo) imeunda kiendeshi cha SPI huko Rust.

Chanzo: opennet.ru

Kuongeza maoni