Senkyèm edisyon patch pou nwayo Linux ak sipò pou lang Rust la

Miguel Ojeda, otè pwojè Rust-for-Linux, te pwopoze yon senkyèm vèsyon konpozan pou devlope chofè aparèy nan lang Rust pou konsiderasyon devlopè Linux Kernel. Yo konsidere sipò Rust kòm eksperimantal, men li deja enkli nan branch linux-next la epi li ase devlope pou kòmanse travay sou kreye kouch abstraksyon sou subsistèm nwayo, osi byen ke ekri chofè ak modil. Devlopman an finanse pa Google ak ISRG (Gwoup Rechèch Sekirite Entènèt), ki se fondatè pwojè Let's Encrypt epi ankouraje HTTPS ak devlopman teknoloji pou amelyore sekirite Entènèt.

Sonje byen, chanjman yo pwopoze yo fè li posib pou itilize Rust kòm yon dezyèm lang pou devlope chofè ak modil nwayo. Yo prezante sipò Rust kòm yon opsyon ki pa aktive pa default epi ki pa lakòz yo enkli Rust kòm yon depandans konstriksyon obligatwa pou nwayo a. Sèvi ak Rust pou devlopman chofè pral pèmèt ou kreye chofè ki pi an sekirite ak pi bon ak efò minim, san pwoblèm tankou aksè memwa apre yo fin libere, dereferans pointeur nil, ak depase tanpon.

Sekirite memwa yo bay nan Rust nan moman konpile atravè tcheke referans, kenbe tras nan pwopriyetè objè a ak tout lavi objè a (dimansyon), osi byen ke nan evalyasyon kòrèk aksè nan memwa pandan ekzekisyon kòd. Rust tou bay pwoteksyon kont debòde nonb antye relatif, mande pou inisyalizasyon obligatwa nan valè varyab anvan ou itilize, okipe erè pi byen nan bibliyotèk estanda a, aplike konsèp nan referans imuiabl ak varyab pa default, ofri fò sezisman estatik pou minimize erè lojik.

Nouvo vèsyon patch yo kontinye elimine kòmantè yo te fè pandan diskisyon premye, dezyèm, twazyèm ak katriyèm edisyon patch yo. Nan nouvo vèsyon an:

  • Yo te ajoute tès konpozan pou sipò Rust nan sistèm entegrasyon kontinyèl ki baze sou bot 0DAY/LKP Intel ki sipòte epi piblikasyon rapò tès yo te kòmanse. Nou ap prepare pou entegre sipò Rust nan sistèm tès otomatik KernelCI la. Tès ki baze sou GitHub CI yo te transfere nan itilizasyon resipyan yo.
  • Modil nwayo Rust yo libere de nesesite pou defini atribi kès "#![no_std]" ak "#![karakteristik(…)]".
  • Te ajoute sipò pou sib asanble sèl (.o, .s, .ll ak .i).
  • Gid Kòd defini règ pou separe kòmantè ("//") ak dokimante kòd ("///").
  • Yo te retravay script is_rust_module.sh.
  • Te ajoute sipò pou primitiv senkronizasyon estatik (global pataje varyab) ki baze sou aplikasyon "CONFIG_CONSTRUCTORS".
  • Se jesyon fèmen senplifye: Gad ak GuardMut yo konbine ak yon sèl kalite paramèt.
  • Li posib pou defini lòt paramèt lè w ap anrejistre aparèy yo.
  • Te ajoute abstraksyon "RwSemaphore", ki aji kòm yon anbalaj sou estrikti C rw_semaphore.
  • Pou itilize mmap, yo te ajoute yon nouvo modil mm ak yon abstraksyon VMA (yon wrapper sou estrikti vm_area_struct).
  • Yo chanje chofè GPIO PL061 pou itilize makro "dev_*!".
  • Yo te fè yon netwayaj jeneral nan kòd la.

Sous: opennet.ru

Add nouvo kòmantè