Цөмийн засваруудын шинэ хувилбар Linux Rust хэлний дэмжлэгтэй

"Rust-for-" төслийн зохиолч Мигель ОжедаLinux, цөмийн хөгжүүлэгчдийн хэлэлцэхээр санал болгосон Linux выпуск v5 компонентов для разработки драйверов устройств на языке Rust. Это шестая редакция патчей с учётом первого варианта, опубликованного без номера версии. Поддержка Rust рассматривается как экспериментальная, но уже включена в ветку linux-next и достаточно развита для начала работы по созданию слоёв абстракции над подсистемами ядра, а также для написания драйверов и модулей. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let’s Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета.

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

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

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

  • Хэрэгслийн хэлхээг Rust 1.59.0 болгон шинэчилсэн. Alloc сангийн хэрэгжилтийг мөн шинэ Rust хувилбартай синхрончилсон бөгөөд санах ойн дутагдал гэх мэт алдаанаас үүдэлтэй болзошгүй сандралыг арилгасан. Ассемблер тарилгыг ("feature(global_asm)") ашиглах чадварыг тогтворжуулсан.
  • Цөмийн хөрвүүлэлтийн үед ашигласан Rust хэл дээр хост програмуудыг үүсгэх дэмжлэгийг нэмсэн.
  • Урьдчилан үүсгэсэн зорилтот платформын тодорхойлолтын файлуудыг нийлүүлэхийн оронд тэдгээрийг одоо цөмийн тохиргоонд үндэслэн динамикаар үүсгэдэг.
  • Rust-г дэмждэг архитектуруудад идэвхжүүлсэн HAVE_RUST цөмийн параметрийг нэмсэн.
  • Тоног төхөөрөмжийн псевдо-санамсаргүй тоо үүсгэгчийн Rust кодонд ашиглахаар хийсвэрлэлүүдийг санал болгож байна.
  • Си хэл дээрх алдааны кодуудыг ойролцоогоор боловсруулахын тулд "Error::" угтваргүйгээр алдааны кодуудыг ашиглахыг зөвшөөрдөг (жишээ нь "return Err(EINVAL)").
  • Уугуул C тэмдэгт мөрүүдэд "CString" төрлийг нэмсэн. Форматлагч болон Буфер төрлүүдийг нэгтгэсэн.
  • Bool болон LockInfo төрлүүдийг нэмсэн.
  • Ээрэх түгжээний хэрэгжилтийг хялбаршуулсан.

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

DDoS хамгаалалт, VPS VDS сервер бүхий сайтуудад найдвартай хостинг худалдаж аваарай 🔥 DDoS хамгаалалттай, VPS VDS сервертэй найдвартай вэбсайт хостинг худалдаж аваарай | ProHoster