Kerla: jauns kodols, kas rakstīts Rust un saderīgs ar Linux ABI

Nesen tika publicēta informācija par Kerla projektu. Kerla tiek izstrādāta kā operētājsistēmas kodols, kas rakstīts Rust valodā. Kods tiek izplatīts saskaņā ar Apache 2.0 un MIT licencēm. Projektu izstrādā japāņu izstrādātājs Seija Nuta, kas pazīstams ar Resea mikrokodola operētājsistēmas, kas rakstīta C valodā, izveidi.

Jaunā kodola sākotnējais mērķis ir nodrošināt saderību ar Linux kodolu ABI līmenī, ļaujot nemodificētiem binārie failiem, kas izveidoti Linux, darboties Kerla balstītā vidē.

Par Keralu

Kerla ir monolīta operētājsistēmas kodols, kas veidots no nulles Rust valodā. Pašreizējā izstrādes stadijā Kerla var darboties tikai x86_64 sistēmās un īsteno pamata sistēmas izsaukumus, piemēram, write, stat, mmap, pipe un poll. Tā atbalsta signālus, nenosauktus kanālus un konteksta slēdžus. Izsaukumi, piemēram, fork, wait4 un execve, tiek izmantoti procesu vadībai. Ir atbalsts tty un pseidotermināļiem (pty). Joprojām tiek atbalstītas initramfs (izmanto saknes failu sistēmas pievienošanai), tmpfs un devfs failu sistēmas.

Tiek nodrošināts arī tīkla steks ar TCP un UDP ligzdu atbalstu, kas balstīts uz smoltcp bibliotēku. Izstrādātājs ir sagatavojis sāknēšanas vidi, kas darbojas QEMU vai Firecracker virtuālajās mašīnās, izmantojot virtio-net draiveri, ar kuru jau var izveidot savienojumu, izmantojot SSH . Musl tiek izmantots kā sistēmas bibliotēka, bet BusyBox kā lietotāja utilīta . Ir sagatavota Docker balstīta būvēšanas sistēma, kas ļauj izveidot savus sāknēšanas initramfs, izmantojot Kerla kodolu.

Pagaidām ir sniegta neliela informācija par tā jauno kodolu, taču visvairāk uzmanības pievērš Kerlas funkcijām fakts, ka tas ir rakstīts Rust valodā. Tātad, vai tā rakstīšanai Rust ir kādas priekšrocības salīdzinājumā ar citām valodām vai esošo kodu? Daudzi uz šo jautājumu atbildēja apstiprinoši, uzsverot atmiņas drošības priekšrocības, ko sniedz valoda.

Tas tiek nodrošināts arī, novērtējot atmiņas piekļuves precizitāti izpildes laikā. Turklāt Mozilla uzskata, ka Rust piedāvā aizsardzību pret veselu skaitļu pārpildīšanu , pieprasa obligātu mainīgo vērtību inicializāciju pirms lietošanas, pēc noklusējuma pieņem atsauču un nemaināmo mainīgo koncepciju, piedāvā spēcīgu statisko tipizāciju, lai samazinātu loģiskās kļūdas, un vienkāršo ievades apstrādi, izmantojot modeļu saskaņošanu.

Starp priekšrocībām mēs izceļam integrētos rīkus koda kvalitātes novērtēšanai un vienības testu izveidei, kurus var palaist ne tikai uz reālas aparatūras, bet arī QEMU. Būtībā Mozilla uzskata, ka Rust ir vieglāk atkļūdot, jo kompilators noraidīs kļūdas. Tomēr testi norādīja uz dažiem Rust trūkumiem.

“Tāpat kā ar C ++, ir gandrīz neiespējami rakstīt idiomātisku Rust, neizmantojot veidnes, tāpēc tai ir uzpūsti binārie faili un lēni kompilēšanas laiki. Par visām šīm kompilēšanas laika pārbaudēm arī ir jāmaksā. Turklāt, ja kaut ko pārrakstāt, jūs zaudējat veco nobriedušo kodu bāzi, un jūs nevarat izveidot līdzīgas kvalitātes kodu bāzi saprātīgā laika periodā; daudz labāk ir paplašināt, nevis pārrakstīt programmu Rust. Labāk ir paplašināt programmu, nevis pārrakstīt to Rust, ”saka programmatūras inženieris.

Pēc tā veidotāja teiktā, tieši tāpēc Linux izstrādātāji, īpaši pats Linuss Torvalds, noraidīja ideju pārrakstīt visu kodolu Rust valodā.

“Paveiciet kādu darbu, lai izveidotu drošas saites, pēc tam ierakstiet papildu kodu Rust un joprojām varēsiet izbaudīt šo nobriedušo kodu. (Tas ir tas, ko dara Linux, tiek mēģināts pievienot iespēju Rust rakstīt kodola moduli), ”viņš piebilda. Linux izstrādātāji apmēram trīs gadus ir pētījuši iespējas rakstīt noteiktus jaunus kodola moduļus, izmantojot Rust valodu. Tas radīja projektu "Rust for Linux".

Visbeidzot, ja vēlaties uzzināt vairāk, informāciju varat atrast tālāk norādītajā saitē.


Pievienot kā vēlamo avotu pakalpojumā Google