Linux kernelerako adabakien bosgarren edizioa Rust hizkuntzarako laguntzarekin

Miguel Ojedak, Rust-for-Linux proiektuaren egileak, Rust hizkuntzan gailu kontrolatzaileak garatzeko osagaien bosgarren bertsioa proposatu zuen Linux kerneleko garatzaileek kontuan izan dezaten. Rust euskarria esperimentaltzat hartzen da, baina dagoeneko linux-next adarrean sartuta dago eta nahiko garatuta dago nukleoaren azpisistemen gainean abstrakzio-geruzak sortzeko lanean hasteko, baita kontrolatzaileak eta moduluak idazten ere. Garapena Googlek eta ISRGk (Internet Security Research Group) finantzatzen dute, Let's Encrypt proiektuaren sortzailea dena eta HTTPS eta Interneteko segurtasuna hobetzeko teknologien garapena sustatzen du.

Gogoratu proposatutako aldaketek Rust bigarren hizkuntza gisa erabiltzeko aukera ematen dutela kontrolatzaileak eta nukleoaren moduluak garatzeko. Rust-en euskarria lehenespenez gaituta ez dagoen aukera gisa aurkezten da eta ez du eragiten Rust nukleorako beharrezko eraikitze-menpekotasun gisa sartzea. Rust kontrolatzaileak garatzeko erabiltzeak gidari seguruagoak eta hobeak sortzea ahalbidetuko du esfortzu minimoarekin, askatu ondoren memoriarako sarbidea, erakusle nuluen deserreferentziak eta buffer gainditzeak bezalako arazorik gabe.

Memoria segurua den manipulazioa Rust-en eskaintzen da konpilazio garaian erreferentziak egiaztatzen, objektuen jabetzaren eta objektuaren bizitzaren (esparrua) jarraipena eginez, baita kodearen exekuzioan memoriarako sarbidearen zuzentasunaren ebaluazioaren bidez ere. Rust-ek osoko gainezkatzeen aurkako babesa eskaintzen du, erabili aurretik aldagaien balioak derrigorrezko hasieratzea eskatzen du, liburutegi estandarrean akatsak hobeto kudeatzen ditu, erreferentzia eta aldagai aldaezinen kontzeptua lehenespenez aplikatzen du, idazketa estatiko sendoa eskaintzen du akats logikoak minimizatzeko.

Adabakien bertsio berriak adabakien lehen, bigarren, hirugarren eta laugarren edizioen eztabaidan egindako iruzkinak ezabatzen jarraitzen du. Bertsio berrian:

  • Rust laguntzarako osagaien probak gehitu dira Intel-ek onartzen duen 0DAY/LKP bot-ean oinarritutako etengabeko integrazio sisteman eta proba-txostenak argitaratzen hasi da. Rust laguntza KernelCI proba automatikoen sisteman integratzeko prestatzen ari gara. GitHub CI-n oinarritutako probak edukiontzien erabilerara pasatu dira.
  • Rust kernelaren moduluak β€œ#![no_std]” eta β€œ#![feature(…)]” kaxa-atributuak definitzeko beharretik libratzen dira.
  • Mihise bakarreko helburuetarako euskarria gehitu da (.o, .s, .ll eta .i).
  • Kodeen jarraibideek iruzkinak ("//") eta kodea dokumentatzeko ("///") bereizteko arauak definitzen dituzte.
  • is_rust_module.sh script-a berritu da.
  • "CONFIG_CONSTRUCTORS" inplementazioan oinarritutako sinkronizazio primitibo estatikoetarako (aldagai partekatu globala) euskarria gehitu da.
  • Blokeoen kudeaketa sinplifikatu egiten da: Guard eta GuardMut konbinatzen dira eta parametrizatutako mota bat.
  • Gailuak erregistratzean parametro osagarriak defini daitezke.
  • "RwSemaphore" abstrakzioa gehitu da, rw_semaphore C egituraren gainean bilgarri gisa jarduten duena.
  • mmap erabiltzeko, mm modulu berri bat eta VMA abstrakzio bat gehitu dira (vm_area_struct egituraren gaineko bilgarri bat).
  • GPIO PL061 kontrolatzailea "dev_*!" makroa erabiltzera aldatu da.
  • Kodearen garbiketa orokorra egin zen.

Iturria: opennet.ru

Gehitu iruzkin berria