Il-ħames edizzjoni ta 'garża għall-kernel tal-Linux b'appoġġ għall-lingwa Rust

Miguel Ojeda, awtur tal-proġett Rust-for-Linux, ippropona l-ħames verżjoni ta 'komponenti għall-iżvilupp ta' sewwieqa ta 'tagħmir fil-lingwa Rust għal konsiderazzjoni mill-iżviluppaturi tal-kernel Linux. L-appoġġ tas-sadid huwa kkunsidrat bħala sperimentali, iżda diġà huwa inkluż fil-fergħa linux-next u huwa żviluppat biżżejjed biex jibda x-xogħol fuq il-ħolqien ta 'saffi ta' astrazzjoni fuq sottosistemi tal-kernel, kif ukoll kitba ta 'sewwieqa u moduli. L-iżvilupp huwa ffinanzjat minn Google u l-ISRG (Internet Security Research Group), li huwa l-fundatur tal-proġett Let's Encrypt u jippromwovi HTTPS u l-iżvilupp ta 'teknoloġiji biex itejbu s-sigurtà tal-Internet.

Ifakkar li l-bidliet proposti jagħmluha possibbli li jintuża Rust bħala t-tieni lingwa għall-iżvilupp ta 'sewwieqa u moduli tal-kernel. L-appoġġ għas-sadid huwa ppreżentat bħala għażla li mhix attivata awtomatikament u ma tirriżultax fl-inklużjoni ta 'Rut fost id-dipendenzi tal-bini meħtieġa għall-kernel. L-użu ta' Rust biex tiżviluppa sewwieqa jippermettilek toħloq sewwieqa aktar sikuri u aħjar bi sforz minimu, ħielsa minn problemi bħall-aċċess għal żona tal-memorja wara li tiġi meħlusa, dereferencing null pointers, u buffer overruns.

Is-sikurezza tal-memorja hija pprovduta f'Rut fil-ħin tal-kompilazzjoni permezz ta 'verifika ta' referenza, iżżomm kont tal-proprjetà tal-oġġett u l-ħajja tal-oġġett (ambitu), kif ukoll permezz ta 'evalwazzjoni tal-korrettezza tal-aċċess għall-memorja waqt l-eżekuzzjoni tal-kodiċi. Rust jipprovdi wkoll protezzjoni kontra overflows integer, jeħtieġ inizjalizzazzjoni obbligatorja ta 'valuri varjabbli qabel l-użu, jimmaniġġja l-iżbalji aħjar fil-librerija standard, japplika l-kunċett ta' referenzi immutabbli u varjabbli b'mod awtomatiku, joffri tajpjar statiku qawwi biex jimminimizza l-iżbalji loġiċi.

Il-verżjoni l-ġdida tal-garżi tkompli telimina l-kummenti li saru waqt id-diskussjoni tal-ewwel, it-tieni, it-tielet u r-raba’ edizzjonijiet tal-garża. Fil-verżjoni l-ġdida:

  • L-ittestjar tal-komponenti għall-appoġġ Rust ġie miżjud mas-sistema ta 'integrazzjoni kontinwa bbażata fuq il-bot 0DAY/LKP appoġġjat minn Intel u bdiet il-pubblikazzjoni tar-rapporti tal-ittestjar. Qed nippreparaw biex nintegraw l-appoġġ Rust fis-sistema tal-ittestjar awtomatizzata KernelCI. L-ittestjar ibbażat fuq GitHub CI ġie trasferit għall-użu tal-kontenituri.
  • Il-moduli tal-qalba tas-sadid huma meħlusa mill-ħtieġa li jiġu definiti l-attributi taċ-ċestun "#![no_std]" u "#![karatteristika (...)]".
  • Appoġġ miżjud għal miri ta' assemblaġġ wieħed (.o, .s, .ll u .i).
  • Il-linji gwida tal-kodiċi jiddefinixxu regoli għas-separazzjoni tal-kummenti (“//”) u d-dokumentazzjoni tal-kodiċi (“///”).
  • L-iskript is_rust_module.sh inħadem mill-ġdid.
  • Appoġġ miżjud għal primittivi ta' sinkronizzazzjoni statiċi (varjabbli kondiviż globali) ibbażati fuq l-implimentazzjoni "CONFIG_CONSTRUCTORS".
  • Il-ġestjoni tal-lock hija ssimplifikata: Guard u GuardMut huma kkombinati u tip wieħed parametrizzat.
  • Huwa possibbli li jiġu definiti parametri addizzjonali meta jirreġistraw apparati.
  • Żid l-estrazzjoni "RwSemaphore", li taġixxi bħala tgeżwir fuq l-istruttura C rw_semaphore.
  • Biex tuża mmap, ġew miżjuda modulu mm ġdid u astrazzjoni VMA (wrapper fuq l-istruttura vm_area_struct).
  • Is-sewwieq GPIO PL061 ġie kkonvertit biex juża l-makro “dev_*!”.
  • Twettqet tindif ġenerali tal-kodiċi.

Sors: opennet.ru

Żid kumment