Rust хэлний дэмжлэгтэй Линуксийн цөмийн засваруудын дөрөв дэх хэвлэл

Линуксийн хувьд Rust төслийн зохиогч Мигель Ожеда Linux цөмийн хөгжүүлэгчдийн авч үзэхийн тулд Rust хэл дээрх төхөөрөмжийн драйверуудыг хөгжүүлэх бүрэлдэхүүн хэсгүүдийн дөрөв дэх хувилбарыг санал болгов. Rust дэмжлэгийг туршилтын гэж үздэг боловч Linux-дараагийн салбарт оруулахаар аль хэдийн тохиролцсон бөгөөд цөмийн дэд системүүд дээр хийсвэрлэх давхарга үүсгэх, драйвер, модулиудыг бичих ажлыг эхлүүлэхэд хангалттай боловсорсон. Энэхүү бүтээн байгуулалтыг Google болон ISRG (Интернетийн аюулгүй байдлын судалгааны групп) санхүүжүүлдэг бөгөөд энэ нь Let's Encrypt төслийн үүсгэн байгуулагч бөгөөд HTTPS болон интернетийн аюулгүй байдлыг сайжруулах технологийн хөгжлийг дэмждэг.

Санал болгож буй өөрчлөлтүүд нь Rust хэлийг драйверууд болон цөмийн модулиудыг хөгжүүлэх хоёр дахь хэл болгон ашиглах боломжтой гэдгийг санаарай. Rust-ийн дэмжлэгийг анхдагчаар идэвхжүүлээгүй сонголт хэлбэрээр танилцуулж байгаа бөгөөд зэв нь цөмийн хувьд шаардлагатай бүтээх хамаарал болгон оруулахад хүргэдэггүй. Драйвер хөгжүүлэхэд Rust-ийг ашигласнаар санах ойд нэвтрэх эрх чөлөөлсний дараа санах ойд нэвтрэх, хоосон заагч хаягжилт, буфер хэт ачаалал гэх мэт асуудлуудаас ангид, хамгийн бага хүчин чармайлтаар илүү аюулгүй, илүү сайн драйверуудыг бий болгох боломжтой болно.

Санах ойн аюулгүй ажиллагааг Rust-д хөрвүүлэх үед лавлагаа шалгах, объектын эзэмшил болон объектын ашиглалтын хугацааг (хамрах хүрээ) хянах, мөн кодыг гүйцэтгэх явцад санах ойд нэвтрэх зөв эсэхийг үнэлэх замаар хангадаг. Rust нь бүхэл тоон хэтрэхээс хамгаалж, ашиглахын өмнө хувьсагчийн утгыг заавал эхлүүлэх шаардлагатай, стандарт номын санд алдааг илүү сайн зохицуулдаг, өөрчлөгддөггүй лавлагаа, хувьсагчийн ойлголтыг анхдагчаар ашигладаг, логик алдааг багасгахын тулд хүчтэй статик бичихийг санал болгодог.

Засваруудын шинэ хувилбар нь засваруудын эхний, хоёр, гурав дахь хэвлэлийг хэлэлцэх явцад гарсан сэтгэгдлийг арилгасаар байна. Шинэ хувилбарт:

  • Rust 1.58.0-ийн тогтвортой хувилбарыг лавлагаа хөрвүүлэгч болгон ашиглахад шилжилт хийсэн. Rust-ийн үндсэн хэрэгсэлд хараахан ороогүй байгаа төсөлд шаардлагатай өөрчлөлтүүдийн дотроос “-Zsymbol-mangling-version=v0” туг (Rust 1.59.0-д хүлээгдэж буй) болон “maybe_uninit_extra” горим (Rust 1.60.0-д хүлээгдэж буй) .XNUMX) тэмдэглэсэн байна.
  • Тохиромжтой Rust хэрэгслүүд байгаа эсэхийг шалгах автомат шалгалтыг нэмж, Rust дэмжлэгийг системд турших боломжийг өргөжүүлсэн.
  • Rust кодоос төхөөрөмжийн таних хүснэгтэд (“IdArray” болон “IdTable”) хандах шинэ хийсвэрлэлүүдийг санал болгов.
  • Цаг хэмжигчтэй холбоотой функцүүдэд (цагийн хүрээ) хандах давхаргууд нэмэгдсэн.
  • Одоо платформын драйверуудыг шинж чанарын хэрэгжилтээр тодорхойлдог.
  • Платформын драйверуудын бүртгэлийг хялбарчлах зорилгоор шинэ макро нэмж, шинэ ерөнхий драйвер загварыг санал болгов.
  • "dev_*" бүтцэд зориулсан макро нэмсэн.
  • IoMem төрөлд "{унших, бичих}*_тайвшрах" аргуудыг нэмсэн .
  • Файлын үйлдлийг хялбарчлахын тулд FileOpener шинж чанарыг устгасан.
  • Драйверыг бүртгэх үед дамжуулсан аргументуудад "ThisModule" параметрийг нэмсэн.
  • Rust хэл дээр цөмийн модулиудыг бий болгох стандарт загварыг санал болгож байна.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх