Twadde edysje fan patches foar de Linux-kernel mei stipe foar de Rust-taal

Miguel Ojeda, skriuwer fan it Rust-for-Linux-projekt, foarstelde in aktualisearre ferzje fan komponinten foar it ûntwikkeljen fan apparaatbestjoerders yn 'e Rust-taal foar konsideraasje troch Linux-kernel-ûntwikkelders. Rust-stipe wurdt as eksperiminteel beskôge, mar is al ôfpraat foar opname yn 'e linux-next branch. De nije ferzje elimineert de opmerkingen makke tidens de diskusje oer de earste ferzje fan de patches. Linus Torvalds hat al meidien oan 'e diskusje en stelde foar om de logika te feroarjen foar it ferwurkjen fan guon bitoperaasjes.

Tink derom dat de foarstelde wizigingen it mooglik meitsje om Rust as twadde taal te brûken foar it ûntwikkeljen fan bestjoerders en kernelmodules. Rust-stipe wurdt presintearre as in opsje dy't net standert ynskeakele is en net resultearret yn Rust wurdt opnommen as in fereaske build-ôfhinklikens foar de kernel. Troch Rust te brûken foar sjauffeurûntwikkeling kinne jo feiliger en bettere sjauffeurs meitsje mei minimale ynspanning, frij fan problemen lykas ûnthâld tagong nei it befrijen, nul oanwizer dereferences, en buffer oerrin.

Unthâld-feilige ôfhanneling wurdt foarsjoen yn Rust op it gearstallen tiid troch referinsje kontrôle, byhâlden fan foarwerp eigendom en foarwerp libben (omfang), likegoed as troch evaluaasje fan 'e korrektheid fan ûnthâld tagong ûnder koade útfiering. Rust leveret ek beskerming tsjin oerstreamingen fan heule getal, fereasket ferplichte inisjalisaasje fan fariabele wearden foar gebrûk, behannelet flaters better yn 'e standertbibleteek, tapast standert it konsept fan ûnferoarlike referinsjes en fariabelen, biedt sterke statyske typen om logyske flaters te minimalisearjen.

De meast opfallende feroarings yn 'e nije ferzje fan' e patches:

  • De ûnthâld tawizing koade wurdt befrijd fan it mooglik generearjen fan in "panyk" steat as flaters lykas sûnder ûnthâld foarkomme. In fariant fan 'e Rust alloc-bibleteek is opnommen, dy't de koade werwurket om mislearrings te behanneljen, mar it ultime doel is om alle funksjes dy't nedich binne foar de kernel oer te bringen nei de haadedysje fan alloc (de wizigingen binne al taret en oerbrocht nei de standert Rust bibleteek).
  • Ynstee fan nachtlike builds kinne jo no beta-releases en stabile releases fan 'e rustc-kompiler brûke om in kernel te kompilearjen mei Rust-stipe. Op it stuit wurdt rustc 1.54-beta1 brûkt as de referinsjekompiler, mar nei't de 1.54-útjefte oan 'e ein fan' e moanne frijlitten is, sil it wurde stipe as de referinsjekompiler.
  • Stipe tafoege foar it skriuwen fan tests mei it standert "#[test]"-attribút foar Rust en de mooglikheid om doctests te brûken om tests te dokumintearjen.
  • Stipe tafoege foar ARM32- en RISCV-arsjitektuer neist earder stipe x86_64 en ARM64.
  • Ferbettere ymplemintaasjes fan GCC Rust (GCC frontend foar Rust) en rustc_codegen_gcc (rustc backend foar GCC), dy't no alle basistests trochgiet.
  • In nij nivo fan abstraksje wurdt foarsteld foar gebrûk yn Rust-programma's fan kernelmeganismen skreaun yn C, lykas read-swarte beammen, referinsje-telde objekten, oanmeitsjen fan triembeskriuwing, taken, bestannen en I/O-fektors.
  • Komponinten foar bestjoerderûntwikkeling hawwe ferbettere stipe foar de file_operations-module, de module!-makro, makro-registraasje, en rudimentêre bestjoerders (probe en fuortsmite).
  • Binder stipet no trochjaan fan triembeskriuwers en LSM-haken.
  • In mear funksjoneel foarbyld fan in Rust-bestjoerder wurdt foarsteld - bcm2835-rng foar de hardware willekeurige nûmergenerator fan Raspberry Pi-boerden.

Derneist wurde projekten fan guon bedriuwen relatearre oan it gebrûk fan Rust yn 'e kernel neamd:

  • Microsoft hat ynteresse útsprutsen om diel te nimmen oan it wurk om Rust-stipe te yntegrearjen yn 'e Linux-kernel en is ree om yn 'e kommende moannen bestjoerdersimplementaasjes foar Hyper-V op Rust te leverjen.
  • ARM wurket oan it ferbetterjen fan Rust-stipe foar ARM-basearre systemen. It Rust-projekt hat al wizigingen foarsteld dy't 64-bit ARM-systemen in Tier 1-platfoarm meitsje soene.
  • Google leveret direkt stipe foar it Rust foar Linux-projekt, ûntwikkelet in nije ymplemintaasje fan it Binder-ynterproseskommunikaasjemeganisme yn Rust, en besjocht de mooglikheid om ferskate bestjoerders yn Rust te ferwurkjen. Fia ISRG (Internet Security Research Group) levere Google finansiering foar wurk om Rust-stipe te yntegrearjen yn 'e Linux-kernel.
  • IBM hat kernel-stipe ymplementearre foar Rust foar PowerPC-systemen.
  • It laboratoarium LSE (Systems Research Laboratory) hat in SPI-bestjoerder yn Rust ûntwikkele.

Boarne: opennet.ru

Add a comment