Podpora za Rust za jedro Linuxa se sooča s kritiko Torvaldsa

Linus Torvalds je pregledal popravke, ki so omogočili ustvarjanje gonilnikov v jeziku Rust za jedro Linuxa, in podal nekaj kritičnih komentarjev.

Največ pritožb je povzročila potencialna možnost panike() v situacijah napake, na primer v situaciji pomanjkanja pomnilnika, ko lahko operacije dinamičnega dodeljevanja pomnilnika, tudi znotraj jedra, ne uspejo. Torvalds je izjavil, da je takšen pristop v jedru načeloma nesprejemljiv in, če te točke ne razume, lahko popolnoma razbije vsako kodo, ki poskuša uporabiti takšen pristop. Po drugi strani pa se je razvijalec popravkov strinjal s to težavo in meni, da je rešljiva.

Druga težava so bili poskusi uporabe plavajoče vejice ali 128-bitnih tipov, ki niso sprejemljivi za okolja, kot je jedro Linuxa. To se je izkazalo za resnejšo težavo, saj je trenutno jedro knjižnice Rust nedeljivo in predstavlja en velik blob - ni mogoče zahtevati samo nekaterih funkcij, kar bi preprečilo uporabo ene ali druge problematične funkcionalnosti. Reševanje težave lahko zahteva spremembe prevajalnika rust in knjižnic, čeprav ekipa trenutno še nima strategije za implementacijo modularizacije jezikovnih knjižnic.

Poleg tega je Torvalds opozoril, da je predloženi primer gonilnika neuporaben, in nam svetoval, naj kot primer uporabimo gonilnik, ki rešuje eno od resničnih težav.

Posodobitev: Google je napovedal svoje sodelovanje pri pobudi za vključitev podpore za Rust v jedro Linuxa in navedel tehnične razloge za uvedbo Rusta za boj proti težavam, ki izhajajo iz napak v pomnilniku. Google verjame, da se je Rust pripravljen pridružiti jeziku C kot jeziku za razvoj komponent jedra Linuxa. Članek vsebuje tudi primere uporabe jezika Rust za razvoj gonilnikov jedra v kontekstu njihove uporabe na platformi Android (Rust je priznan kot uradno podprt jezik za razvoj Android).

Opozoriti je treba, da je Google pripravil začetni prototip gonilnika, napisanega v Rustu za medprocesni komunikacijski mehanizem Binder, ki bo omogočil podrobno primerjavo zmogljivosti in varnosti implementacij Binderja v C in Rust. V trenutni obliki delo še ni končano, vendar so za skoraj vse osnovne abstrakcije funkcionalnosti jedra, potrebne za delovanje Binderja, pripravljene plasti za uporabo teh abstrakcij v kodi Rust.

Vir: opennet.ru

Dodaj komentar