Rust хэлний дэмжлэгтэй Линуксийн цөмийн хоёр дахь хувилбар

Rust-for-Linux төслийн зохиогч Мигель Ожеда Linux цөмийн хөгжүүлэгчдийн авч үзэхийн тулд Rust хэл дээрх төхөөрөмжийн драйверуудыг хөгжүүлэх бүрэлдэхүүн хэсгүүдийн шинэчилсэн хувилбарыг санал болгов. Rust-ийн дэмжлэгийг туршилтын гэж үздэг боловч linux-next салбарт оруулахаар аль хэдийн тохиролцсон. Шинэ хувилбар нь засваруудын эхний хувилбарыг хэлэлцэх явцад гарсан тайлбарыг хассан. Линус Торвалдс аль хэдийн хэлэлцүүлэгт нэгдэж, зарим битийн үйлдлийг боловсруулах логикийг өөрчлөхийг санал болгов.

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

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

Засварын шинэ хувилбар дахь хамгийн мэдэгдэхүйц өөрчлөлтүүд:

  • Санах ойн хуваарилалтын код нь санах ой дууссан гэх мэт алдаа гарах үед "сандрах" төлөвийг үүсгэхээс чөлөөлөгдөнө. Rust alloc номын сангийн хувилбар багтсан бөгөөд энэ нь алдааг зохицуулах кодыг дахин боловсруулдаг боловч эцсийн зорилго нь цөмд шаардлагатай бүх функцийг alloc-ийн үндсэн хувилбар руу шилжүүлэх явдал юм (өөрчлөлтүүдийг аль хэдийн бэлтгэж, стандарт руу шилжүүлсэн) Зэв номын сан).
  • Шөнийн хувилбаруудын оронд Rust дэмжлэгтэйгээр цөмийг эмхэтгэхийн тулд rustc хөрвүүлэгчийн бета хувилбар болон тогтвортой хувилбаруудыг ашиглаж болно. Одоогоор rustc 1.54-beta1-ийг лавлагаа хөрвүүлэгч болгон ашиглаж байгаа боловч 1.54 хувилбарыг сарын сүүлээр гаргасны дараа лавлагаа хөрвүүлэгч болгон дэмжих болно.
  • Rust-д зориулсан стандарт "#[test]" шинж чанарыг ашиглан тест бичих дэмжлэг болон тестийг баримтжуулахын тулд doctests ашиглах чадварыг нэмсэн.
  • Өмнө нь дэмжиж байсан x32_86 болон ARM64-ээс гадна ARM64 болон RISCV архитектурын дэмжлэгийг нэмсэн.
  • GCC Rust (GCC frontend for Rust) болон rustc_codegen_gcc (GCC-д зориулсан rustc backend) програмуудын сайжруулсан хэрэгжилтүүд нь одоо бүх үндсэн шалгалтыг давсан.
  • Улаан хар мод, лавлагаагаар тоолсон объект, файлын тодорхойлогч үүсгэх, даалгавар, файл, оролт гаралтын вектор гэх мэт C хэл дээр бичигдсэн цөмийн механизмын Rust программуудад хийсвэрлэлийн шинэ түвшинг санал болгож байна.
  • Драйвер хөгжүүлэлтийн бүрэлдэхүүн хэсгүүд нь file_operations модуль, модуль! макро, макро бүртгэл болон энгийн драйверуудад (шинжилж, устгах) дэмжлэгийг сайжруулсан.
  • Биндэр одоо файлын тодорхойлогч болон LSM дэгээ дамжуулахыг дэмждэг.
  • Rust драйверын илүү ажиллагаатай жишээг санал болгож байна - Raspberry Pi хавтангийн техник хангамжийн санамсаргүй тоо үүсгэгчийн хувьд bcm2835-rng.

Нэмж дурдахад, цөмийн зэвсгийг ашиглахтай холбоотой зарим компаниудын төслүүдийг дурьдсан болно.

  • Майкрософт корпораци Rust дэмжлэгийг Линукс цөмд нэгтгэх ажилд оролцох сонирхолтой байгаагаа илэрхийлсэн бөгөөд ирэх саруудад Hyper-V on Rust-д драйверын хэрэгжилтийг хангахад бэлэн байна.
  • ARM нь ARM дээр суурилсан системүүдэд Rust дэмжлэгийг сайжруулахаар ажиллаж байна. Rust төсөл нь 64 битийн ARM системийг Tier 1 платформ болгох өөрчлөлтүүдийг аль хэдийн санал болгосон.
  • Google нь Rust for Linux төсөлд шууд дэмжлэг үзүүлж, Rust дахь Binder хоорондын харилцааны механизмын шинэ хэрэгжилтийг боловсруулж байгаа бөгөөд Rust дахь янз бүрийн драйверуудыг дахин боловсруулах боломжийг авч үзэж байна. Google нь ISRG (Интернетийн аюулгүй байдлын судалгааны групп) дамжуулан Linux цөмд Rust дэмжлэгийг нэгтгэх ажилд санхүүжилт олгосон.
  • IBM нь Rust for PowerPC системүүдийн цөмийн дэмжлэгийг хэрэгжүүлсэн.
  • LSE (Системийн судалгааны лаборатори) лаборатори нь Rust дахь SPI драйверийг бүтээжээ.

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

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