ສະບັບໃຫມ່ຂອງ patches ສໍາລັບ Linux kernel ສະຫນັບສະຫນູນພາສາ Rust

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

ຈື່ໄວ້ວ່າການປ່ຽນແປງທີ່ສະເຫນີເຮັດໃຫ້ມັນສາມາດນໍາໃຊ້ Rust ເປັນພາສາທີສອງສໍາລັບການພັດທະນາໄດເວີແລະໂມດູນ kernel. ການສະຫນັບສະຫນູນ Rust ໄດ້ຖືກນໍາສະເຫນີເປັນທາງເລືອກທີ່ບໍ່ໄດ້ເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນແລະບໍ່ໄດ້ສົ່ງຜົນໃຫ້ Rust ຖືກລວມເຂົ້າໃນການກໍ່ສ້າງທີ່ຕ້ອງການສໍາລັບ kernel. ການນໍາໃຊ້ Rust ສໍາລັບການພັດທະນາຄົນຂັບຈະຊ່ວຍໃຫ້ທ່ານສ້າງໄດເວີທີ່ປອດໄພແລະດີກວ່າດ້ວຍຄວາມພະຍາຍາມຫນ້ອຍທີ່ສຸດ, ໂດຍບໍ່ມີບັນຫາເຊັ່ນ: ການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາຫຼັງຈາກການປ່ອຍຕົວ, ການປະຕິເສດຕົວຊີ້ null, ແລະ buffer overruns.

Rust ບັງຄັບໃຊ້ຄວາມປອດໄພຂອງຫນ່ວຍຄວາມຈໍາໃນເວລາລວບລວມໂດຍຜ່ານການກວດສອບການອ້າງອິງ, ການເປັນເຈົ້າຂອງວັດຖຸແລະການຕິດຕາມຕະຫຼອດຊີວິດຂອງວັດຖຸ (ຂອບເຂດ), ແລະໂດຍການປະເມີນຄວາມຖືກຕ້ອງຂອງການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາໃນເວລາແລ່ນ. Rust ຍັງສະຫນອງການປ້ອງກັນການ overflows integer, ຮຽກຮ້ອງໃຫ້ຄ່າຕົວແປໄດ້ຖືກເລີ່ມຕົ້ນກ່ອນທີ່ຈະນໍາໃຊ້, ມີການຈັດການຄວາມຜິດພາດທີ່ດີກວ່າໃນຫ້ອງສະຫມຸດມາດຕະຖານ, ໃຊ້ແນວຄວາມຄິດຂອງການອ້າງອີງທີ່ບໍ່ປ່ຽນແປງແລະຕົວແປໂດຍຄ່າເລີ່ມຕົ້ນ, ແລະສະຫນອງການພິມຄົງທີ່ທີ່ເຂັ້ມແຂງເພື່ອຫຼຸດຜ່ອນຄວາມຜິດພາດຢ່າງມີເຫດຜົນ.

В новом варианте патчей продолжено устранение замечаний, высказанных в процессе обсуждения первой, второй, третьей, четвёртой и пятой редакций патчей. В новой версии:

  • Инструментарий обновлён до выпуска Rust 1.59.0. С новой версией Rust также синхронизирован вариант библиотеки alloc, избавленный от возможных генераций состояния «panic» при возникновении ошибок, таких как нехватка памяти. Стабилизирована возможность использования ассемблерных вставок («feature(global_asm)»).
  • Добавлена поддержка создания на языке Rust хостовых программ, используемых в процессе компиляции ядра.
  • Вместо поставки заранее созданных файлов со спецификацией целевых платформ обеспечена их динамическая генерация на основе конфигурации ядра.
  • Добавлен параметр ядра HAVE_RUST, включаемый для архитектур, на которых поддерживается Rust.
  • Предложены абстракции для использования в коде на языке Rust аппаратного генератора псевдослучайных чисел.
  • Разрешено использование кодов ошибок без префикса «Error::» (например, «return Err(EINVAL)») для приближения к обработке кодов ошибок на Си.
  • Добавлен тип «CString» для собственных Си-строк. Объединены типы Formatter и Buffer.
  • Добавлены типажи Bool и LockInfo.
  • Упрощена реализация spin-блокировок.

ແຫຼ່ງຂໍ້ມູນ: opennet.ru

ເພີ່ມຄວາມຄິດເຫັນ