Informații despre proiectul Kerla au fost publicate recent. Kerla este dezvoltat ca un kernel de sistem de operare scris în Rust. Codul este distribuit sub licențele Apache 2.0 și MIT. Proiectul este dezvoltat de dezvoltatorul japonez Seiya Nuta, cunoscut pentru crearea sistemului de operare microkernel Resea, scris în C.
Noul kernel își propune inițial să asigure compatibilitatea cu kernelul Linux la nivel ABI, permițând binarelor nemodificate create pentru Linux să ruleze într-un mediu bazat pe Kerla.
Despre Kerala
Kerla este un kernel de sistem de operare monolitic construit de la zero în Rust. În stadiul actual de dezvoltare, Kerla poate rula doar pe sisteme x86_64 și implementează apeluri de sistem de bază, cum ar fi write, stat, mmap, pipe și poll. Acceptă semnale, pipe-uri fără nume și comutatoare de context. Apeluri precum fork, wait4 și execve sunt folosite pentru a controla procesele. Există suport pentru tty și pseudo-terminale (pty). Sistemele de fișiere initramfs (folosit pentru montarea sistemului de fișiere rădăcină), tmpfs și devfs sunt încă suportate.
De asemenea, este furnizată o stivă de rețea cu suport pentru socket-uri TCP și UDP, bazată pe biblioteca smoltcp. Dezvoltatorul a pregătit un mediu de boot care funcționează în mașini virtuale QEMU sau Firecracker folosind driverul virtio-net, la care vă puteți conecta deja prin SSH . Musl este utilizat ca bibliotecă de sistem, iar BusyBox ca utilitar pentru utilizator . A fost pregătit un sistem de compilare bazat pe Docker, care vă permite să creați propriile fișiere initramf de boot folosind kernelul Kerla.
Până acum, s-au oferit puține detalii despre noul său nucleu, dar ceea ce atrage cel mai mult atenția asupra caracteristicilor lui Kerla este faptul că este scris în Rust. Deci scrierea în Rust are vreun avantaj față de alte limbi sau de codul existent? Mulți au răspuns afirmativ la această întrebare, subliniind beneficiile de siguranță a memoriei pe care le oferă limbajul.
De asemenea, este furnizat la evaluarea preciziei acceselor la memorie în timpul execuției. În plus , Mozilla consideră că Rust oferă protecție împotriva depășirilor de numere întregi , necesită inițializarea obligatorie a valorilor variabilelor înainte de utilizare, adoptă implicit conceptul de referințe și variabile imuabile, oferă o tastare statică puternică pentru a minimiza erorile logice și simplifică procesarea intrărilor prin potrivirea modelelor.
Printre avantaje, evidențiem instrumentele integrate pentru evaluarea calității codului și crearea de teste unitare care pot fi rulate nu doar pe hardware real, ci și în QEMU. În esență, Mozilla consideră că Rust este mai ușor de depanat, deoarece compilatorul va respinge erorile. Cu toate acestea, testele au evidențiat unele dezavantaje ale Rust.
„Ca și în cazul C++, este aproape imposibil să scrii Rust idiomatic fără a folosi șabloane, așa că ai binare umflate și timpi de construcție lenți. Toate aceste verificări la compilare au, de asemenea, un cost. De asemenea, dacă rescrii ceva, pierzi vechiul cod matur și nu poți produce o bază de cod de calitate similară într-o perioadă rezonabilă de timp; Este mult mai bine să extinzi, mai degrabă decât să rescrii, programul în Rust. Este mai bine să extindeți programul decât să-l rescrieți în Rust”, spune un inginer software.
Potrivit creatorului său, acesta este motivul pentru care dezvoltatorii Linux, în special Linus Torvalds însuși, au respins ideea de a rescrie întregul kernel în Rust.
„Lucrați puțin pentru a crea legături securizate, apoi scrieți codul suplimentar în Rust și vă puteți bucura în continuare de acel cod matur. (Așa face Linux, există eforturi pentru a adăuga capacitatea de a scrie un modul kernel în Rust)”, a adăugat el. Dezvoltatorii Linux au explorat posibilitățile de a scrie anumite module noi de kernel folosind limbajul Rust de aproximativ trei ani. Acest lucru a dat naștere proiectului „Rust for Linux”.
În final, dacă sunteți interesați să aflați mai multe, puteți găsi detalii la linkul următor.