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

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

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

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

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

  • Intel-ийн дэмжлэгтэй 0DAY/LKP бот дээр суурилсан тасралтгүй интеграцийн системд Rust дэмжлэгийн бүрэлдэхүүн хэсгийн туршилтыг нэмж, туршилтын тайланг нийтэлж эхэлсэн. Бид Rust дэмжлэгийг KernelCI автоматжуулсан туршилтын системд нэгтгэхээр бэлтгэж байна. GitHub CI дээр суурилсан туршилтыг савны хэрэглээнд шилжүүлсэн.
  • Rust цөмийн модулиуд нь “#![no_std]” болон “#![feature(…)]” хайрцагны шинж чанаруудыг тодорхойлох шаардлагаас чөлөөлөгдсөн.
  • Нэг угсралтын зорилтот (.o, .s, .ll болон .i) дэмжлэгийг нэмсэн.
  • Кодын удирдамж нь тайлбарыг тусгаарлах (“//”) болон кодыг баримтжуулах (“///”) дүрмийг тодорхойлдог.
  • is_rust_module.sh скриптийг дахин боловсруулсан.
  • "CONFIG_CONSTRUCTORS" хэрэгжүүлэлт дээр суурилсан статик (дэлхийн хуваалцсан хувьсагч) синхрончлолын командуудад дэмжлэг нэмсэн.
  • Түгжээний менежментийг хялбаршуулсан: Guard болон GuardMut нь хосолсон бөгөөд нэг параметртэй төрөл юм.
  • Төхөөрөмжүүдийг бүртгэхдээ нэмэлт параметрүүдийг тодорхойлох боломжтой.
  • "RwSemaphore" хийсвэрлэлийг нэмсэн бөгөөд энэ нь rw_semaphore C бүтэц дээр боодлын үүрэг гүйцэтгэдэг.
  • Mmap-г ашиглахын тулд шинэ мм модуль болон VMA хийсвэрлэл нэмэгдсэн (vm_area_struct бүтэц дээрх боодол).
  • GPIO PL061 драйвер нь “dev_*!” макро ашиглах горимд шилжсэн.
  • Кодын ерөнхий цэвэрлэгээ хийгдсэн.

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

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