» »

Kdaj bo Linuxovo jedro dvojezično v C-ju in Rustu

Kdaj bo Linuxovo jedro dvojezično v C-ju in Rustu

Slo-Tech - Da je Linuxovo jedro napisano v C-ju, je bil zelo dolgo eden izmed aksiomov računalništva, a se to utegne kmalu dopolniti. Že dlje časa potekajo prizadevanja, da bi v jedro vključili tudi Rust, kar podpira tudi Google. To seveda ne pomeni, da bi prepisali celotno jedro v Rust, bi pa v njem lahko nastajala nova koda. Razlogov za spremembo je kar nekaj, med njimi tudi boljše upravljanje pomnilnika, kar bi zmanjšalo verjetnost za vnos varnostnih ranljivosti iz tega naslova. Ocenjujejo, da je upravljanje s pomnilnikom razlog za približno dve tretjini varnostnih lukenj. Sedaj je Rust še korak bliže jedru.

Ena izmed pomembnih sprememb je uporaba stabilnega prevajalnika. Doslej so uporabljali beta verzije, odslej pa bo Rust on Linux uporabljal vsakokratno stabilno verzijo (trenutno Rust 1.57.0). Miguel Ojeda, vodja projekta Rust on Linux, pojasnjuje, da so s tem odstranili nekaj nestabilnih funkcij in povečali stabilnost kode. Starosta razvoja Linuxovega jedra Greg Kroah-Hartman dodaja, da bodo verjetno gonilniki ena izmed prvih komponent, ki bo napisana v Rustu. Gonilniki so odvisni od ostale kode v jedru, medtem ko od njihove kode drugih odvisnosti ni.

Rustu je naklonjen tudi oče Linuxa Linus Torvalds, ki se zavzema za počasen pristop k vključevanju Rusta. Pravi sicer, da ni nujno, da bo na koncu obveljal prav Rust, a ni dvoma, da C ne bo ostal edini programski jezik.

Če bo šlo vse po načrtih, pa bi lahko prihodnje leto videli prve vrstice kode v Rustu. Ojeda je minuli teden pripravil popravek, ki v jedro dodaja podporo za Rust.

30 komentarjev

sbawe64 ::

Zakaj Rust (in ne kaj drugega) in kaj s tem linux jedro pridobi ?
2020 is new 1984
Corona World order

Zgodovina sprememb…

  • spremenilo: sbawe64 ()

phantom ::

sbawe64 je izjavil:

Zakaj Rust (in ne kaj drugega) in kaj s tem linux jedro pridobi ?

Ker je po performanceu primeljiv s C in C++ in v varni kodi prepreči vse memory-related buge (memory leaki, neveljavni pointerji, buffer overflowi ...). Tega ne zmore noben drug meni znan jezik. Upam, da tudi drugje začne čim prej uspešno izpodrivati C in C++.
~
~
:wq

joebanana ::

sbawe64 je izjavil:

Zakaj Rust (in ne kaj drugega) in kaj s tem linux jedro pridobi ?


Memory safety.

Lonsarg ::

Low-level languagi imajo ponavadi daljšo življensko dobo. Ampak tudi ti se morajo kdaj menjati ja.

mr_chai ::

Ha, kokr jst poznam Linusa Torvaldsa, se bo močno uprl temu.

win64 ::

mr_chai je izjavil:

Ha, kokr jst poznam Linusa Torvaldsa, se bo močno uprl temu.

V novici je napisano ravno obratno. Pa še vir je podan.

srus ::

Kot embedded softwerašu mi je C++ všeč predvsem zato, ker mi je "zrihtal" ogromno posla. Ker pač ni vedno primeren jezik za embedded sisteme, navkljub trmarjenju naročnikovih razvojnikov.

Enako pričakujem tudi od Rust.

Karamelo ::

While Linus Torvalds is sure, Linux won't end up being written in Rust. But then, that's not the goal. No one's going to rewrite the kernel's 25 million lines of C in Rust.


človek ne, bo pa to naredil AI

naruto1 ::

Saj sicer veste, da se C uporablja zato, ker obstaja prakticno povsod, Rust pa ne?

Karamelo je izjavil:

While Linus Torvalds is sure, Linux won't end up being written in Rust. But then, that's not the goal. No one's going to rewrite the kernel's 25 million lines of C in Rust.


človek ne, bo pa to naredil AI


Ja, samo se to rabimo, linux kernel, ki bo z 94% pravilno preveden v Rust ;((

Bolje, da za vedno ostane v Cju.

Zgodovina sprememb…

  • spremenilo: naruto1 ()

naruto1 ::

Verjetno bojo implementirali neke platformske specifike, za set platform, ki jih Rust podpira, vse ostalo se bo naprej razvijalo v Cju.

anoq ::

phantom je izjavil:

sbawe64 je izjavil:

Zakaj Rust (in ne kaj drugega) in kaj s tem linux jedro pridobi ?

... memory-related buge (memory leaki, neveljavni pointerji, buffer overflowi ...). Tega ne zmore noben drug meni znan jezik.

To seveda ne drži povsem. V C++ imaš memory safe primitive npr. smart pointer-je, potem imaš optimizirane kontejnerje kot npr. std::vector in podobno..., ki ti dajo iste memory safety varovalke kot Rust.

Prednost Rust-a bi bila npr. v tem, da že sam prevajalnik sili programerja, da piše varno kodo, do čim v C++ imaš proste roke in lahko uporabiš kar hočeš. Seveda tudi pri C++ ti določeni prevajalniki (clang) omogočajo, da si nastaviš restrikcijo in se na ta način približaš Rust-ovem modelu. Druga mogoče "prednost" Rust-a v nekaterih primerih pa je npr. thread memory sfety, kjer privzeto vsaka nit ima lastništvo nad objektom in si ga ne delijo med sabo (object passing). Seveda to omogoča tudi C++, samo mora programer biti tisti, ki zna to spisat. Pri Rustu pride to privzeto v paketu. Zdaj a je to prednost ali slabost je odvisno od primera. Predvsem ponavadi tukaj igra glavno vlogo hitrost, latency in poraba pomnilnika.

Zimonem ::

alokatoerje kateri mu niso bili včeč so za uporabo v jedru že zdavnaj prilagodili.

Zimonem ::

anoq je izjavil:

phantom je izjavil:

sbawe64 je izjavil:

Zakaj Rust (in ne kaj drugega) in kaj s tem linux jedro pridobi ?

... memory-related buge (memory leaki, neveljavni pointerji, buffer overflowi ...). Tega ne zmore noben drug meni znan jezik.

To seveda ne drži povsem. V C++ imaš memory safe primitive npr. smart pointer-je, potem imaš optimizirane kontejnerje kot npr. std::vector in podobno..., ki ti dajo iste memory safety varovalke kot Rust.

Prednost Rust-a bi bila npr. v tem, da že sam prevajalnik sili programerja, da piše varno kodo, do čim v C++ imaš proste roke in lahko uporabiš kar hočeš. Seveda tudi pri C++ ti določeni prevajalniki (clang) omogočajo, da si nastaviš restrikcijo in se na ta način približaš Rust-ovem modelu. Druga mogoče "prednost" Rust-a v nekaterih primerih pa je npr. thread memory sfety, kjer privzeto vsaka nit ima lastništvo nad objektom in si ga ne delijo med sabo (object passing). Seveda to omogoča tudi C++, samo mora programer biti tisti, ki zna to spisat. Pri Rustu pride to privzeto v paketu. Zdaj a je to prednost ali slabost je odvisno od primera. Predvsem ponavadi tukaj igra glavno vlogo hitrost, latency in poraba pomnilnika.

Rustov pristop k upravljanju pomnilnika je formalno dokazan. Tu leži bistvena razlika.
C++ je pa v supportih najbolj osovražen jezik.

pegasus ::

anoq je izjavil:

Prednost Rust-a bi bila npr. v tem, da že sam prevajalnik sili programerja, da piše varno kodo,
Če bi si programerji tega res želeli, bi vsi že zdavnaj programirali v spark dialektu ade. Pa večina niti ne pozna spark ade, kaj šele da bi jo uporabljali ... Ker so ljudje raje svobodni da serjejo kakor jim paše, kot pa da bi trpeli neko "prisilo" delati pravilno in po reglcih.

anoq ::

Zimonem je izjavil:

anoq je izjavil:

phantom je izjavil:

sbawe64 je izjavil:

Zakaj Rust (in ne kaj drugega) in kaj s tem linux jedro pridobi ?

... memory-related buge (memory leaki, neveljavni pointerji, buffer overflowi ...). Tega ne zmore noben drug meni znan jezik.

To seveda ne drži povsem. V C++ imaš memory safe primitive npr. smart pointer-je, potem imaš optimizirane kontejnerje kot npr. std::vector in podobno..., ki ti dajo iste memory safety varovalke kot Rust.

Prednost Rust-a bi bila npr. v tem, da že sam prevajalnik sili programerja, da piše varno kodo, do čim v C++ imaš proste roke in lahko uporabiš kar hočeš. Seveda tudi pri C++ ti določeni prevajalniki (clang) omogočajo, da si nastaviš restrikcijo in se na ta način približaš Rust-ovem modelu. Druga mogoče "prednost" Rust-a v nekaterih primerih pa je npr. thread memory sfety, kjer privzeto vsaka nit ima lastništvo nad objektom in si ga ne delijo med sabo (object passing). Seveda to omogoča tudi C++, samo mora programer biti tisti, ki zna to spisat. Pri Rustu pride to privzeto v paketu. Zdaj a je to prednost ali slabost je odvisno od primera. Predvsem ponavadi tukaj igra glavno vlogo hitrost, latency in poraba pomnilnika.

Rustov pristop k upravljanju pomnilnika je formalno dokazan. Tu leži bistvena razlika.
C++ je pa v supportih najbolj osovražen jezik.


Niti ne, če se skoncentrirava na moderni C++ imaš lahko enaki memory model, kot Rust samo morš znat uporabit. To, da bi bil C++ najbol osovražen jezik prvič slišim. Definitivno pa ni lih programski jezik za novince ali pa script kiddie (javascript :D).

pegasus je izjavil:

anoq je izjavil:

Prednost Rust-a bi bila npr. v tem, da že sam prevajalnik sili programerja, da piše varno kodo,
Če bi si programerji tega res želeli, bi vsi že zdavnaj programirali v spark dialektu ade. Pa večina niti ne pozna spark ade, kaj šele da bi jo uporabljali ... Ker so ljudje raje svobodni da serjejo kakor jim paše, kot pa da bi trpeli neko "prisilo" delati pravilno in po reglcih.

Tega je zdaj skoz več, sploh managed jezikov, ki te silijo v določeno smer razmišlanja.
Tako, da Rust se bo pomoje s časom kar fajn zasidrov, sploh pri low-level/embedded programerjih.

Zgodovina sprememb…

  • spremenilo: anoq ()

MrStein ::

pegasus je izjavil:

anoq je izjavil:

Prednost Rust-a bi bila npr. v tem, da že sam prevajalnik sili programerja, da piše varno kodo,
Če bi si programerji tega res želeli, bi vsi že zdavnaj programirali v spark dialektu ade. Pa večina niti ne pozna spark ade, kaj šele da bi jo uporabljali ... Ker so ljudje raje svobodni da serjejo kakor jim paše, kot pa da bi trpeli neko "prisilo" delati pravilno in po reglcih.

Seveda, razen po peti uri debugiranja C++ kode, ki še vedno leaka... ;)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

mr_chai ::

Bjarn Straustrup bi moral pač ukinit nadaljni razvoj C++ in naredit nekega naslednika, ki ne bi bil backward compatible in to je to. Ampak s tem bi priznal, da je konec njegovega otročiča, česar pa nikoli ne bo priznal. Zdej na veliko prodaja neko statično analizo...ma booo hooo, prdec stari, spokaj se in pusti, da te novodobni jeziki pojedo.

Invictus ::

Zato pač še ne bo koenc vseh teh jezikov...

https://hackaday.com/2021/11/18/c-is-th...

Mularija pa je itak samo še script kiddies in nimajo pojma o malloc in free. Oz., sploh nimajo pojma, kako karkoli v računalništvu deluje, ker vsi drkajo web. Kar je meni super, dovolj dela zame do smrti...

Mene noben moderen jezik ni prav navdušil, čeprav jih znam nekaj po sili razmer...
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

MrStein ::

Invictus je izjavil:

Zato pač še ne bo koenc vseh teh jezikov...

https://hackaday.com/2021/11/18/c-is-th...

Java prehiti Pascal v energiji in hitrosti?
(v memoriji pričakovano zgubi)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

Zimonem ::

Invictus je izjavil:

Zato pač še ne bo koenc vseh teh jezikov...

https://hackaday.com/2021/11/18/c-is-th...

Mularija pa je itak samo še script kiddies in nimajo pojma o malloc in free. Oz., sploh nimajo pojma, kako karkoli v računalništvu deluje, ker vsi drkajo web. Kar je meni super, dovolj dela zame do smrti...

Mene noben moderen jezik ni prav navdušil, čeprav jih znam nekaj po sili razmer...

Še en superhuman, kateri verjame, da lahko bolje vodi računovodstvo lifetima , kot pa nek sodoben prevajalnik.sploh pa v Mt okoljih.

pegasus je izjavil:

anoq je izjavil:

Prednost Rust-a bi bila npr. v tem, da že sam prevajalnik sili programerja, da piše varno kodo,
Če bi si programerji tega res želeli, bi vsi že zdavnaj programirali v spark dialektu ade. Pa večina niti ne pozna spark ade, kaj šele da bi jo uporabljali ... Ker so ljudje raje svobodni da serjejo kakor jim paše, kot pa da bi trpeli neko "prisilo" delati pravilno in po reglcih.

Ada za varno dinamično upravljanje pomnilnika uporablja gc. Kontrakti so pa v rustu v obliki makro knjižnic.

Zgodovina sprememb…

  • spremenilo: Zimonem ()

driver_x ::

Kateri prevajalnik oz. IDE priporočate za preizkusiti par osnovnih zadev v Rust-u?

Invictus ::

driver_x je izjavil:

Kateri prevajalnik oz. IDE priporočate za preizkusiti par osnovnih zadev v Rust-u?

VSC...
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

Zimonem ::

Ali neovim. Na splošno pa vse kar podpira language server protocol. Ampak dosti klientov bi editorjih je precej švoh.
Nucaš za poganjanje rust-analyzerja in codelldb.

anoq ::

MrStein je izjavil:

pegasus je izjavil:

anoq je izjavil:

Prednost Rust-a bi bila npr. v tem, da že sam prevajalnik sili programerja, da piše varno kodo,
Če bi si programerji tega res želeli, bi vsi že zdavnaj programirali v spark dialektu ade. Pa večina niti ne pozna spark ade, kaj šele da bi jo uporabljali ... Ker so ljudje raje svobodni da serjejo kakor jim paše, kot pa da bi trpeli neko "prisilo" delati pravilno in po reglcih.

Seveda, razen po peti uri debugiranja C++ kode, ki še vedno leaka... ;)


To je čist odvisno od programerja, ki je spisal kodo ;).
Ko enkrat koda preraste v par tisoč vrstic, bp zgubiš par dni življenja z iskanjem hroščev v kodi, ki je napisana v bilo katerem programskem jeziku. Tukaj C++ ni izjema.

Zimonem ::

Je kar ekstremen primer. Ker je naložena paradigma na paradigmo. Sploh pri projektu kjer je več razvijalcev.
Tu imaš pa vse lepo formalno rešeno. Brez vseh kolobocij z stl-om.

Deli ki so označeni z unsafe so pa potem tarča za iskanje napak. Ali box:leak za resource.

Sicer pa c++ ne bo v jedru. Sprobano pa se ne obnese.
https://m.slashdot.org/story/384324

driver_x ::

Zimonem je izjavil:

Sicer pa c++ ne bo v jedru. Sprobano pa se ne obnese.
https://m.slashdot.org/story/384324


Ali s tem misliš, da C++ ni primeren za zadeve na najnižjem nivoju?

Invictus ::

A nisi prebral...

C++ ne rešuje problemov C-ja...
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

anoq ::

Zimonem je izjavil:


Deli ki so označeni z unsafe so pa potem tarča za iskanje napak. Ali box:leak za resource.

Sicer pa c++ ne bo v jedru. Sprobano pa se ne obnese.
https://m.slashdot.org/story/384324


Iz mojih začetniških izkušenj v Rustu so tudi tukaj kolobocije, ampak ja definitivno je prednost to, da te v Rustu privzeto prevajalnik sili, da moraš del kode zavestno eksplicitno označit kot nevarna ali pa, da je parameter funkcije privzeto konstanta. V C++ se da do določene mere to funkcionalnost tudi doseči s prevajalnikom in statičnim analizatorjem samo je programer tisti, ki mora to znat uporabit.

Btw v novejšem C++ po mojih izkušnjah niso tolko problem "obviseči" surovi pointerje, ker jih načeloma aktivno ne uporabljaš. Bolj so problem obviseče reference in ne-lastništvo nad referencami.

Zimonem ::

Kaj naj bi pomenilo, sodoben c++ ta Fama se vleče že 25 let vsaj. 15 let sva si rekla adijo. Sporadično se kdaj srečava , po sili razmer. Mas0hisem za poštukat zadeve.

15 let nazaj sva si z stroustrupovim bastardom zaželela srečno pot.

Kar se mazohizma tiče je odličen, ali ožemanja strank. Sicer pa Poden.

Rust je trenitno zmes in manjka kritična masa. Je pa vsaj jasen.

Sicer pa po starem c in modaliazcija na višjenivojske jezike

tony1 ::

srus je izjavil:

Kot embedded softwerašu mi je C++ všeč predvsem zato, ker mi je "zrihtal" ogromno posla. Ker pač ni vedno primeren jezik za embedded sisteme, navkljub trmarjenju naročnikovih razvojnikov.


Sliši se zabavno, se ti da napisati kaj več? :D


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Kdaj bo Linuxovo jedro dvojezično v C-ju in Rustu

Oddelek: Novice / Operacijski sistemi
307207 (3687) tony1
»

Firefox Quantum je kvantni skok naprej (strani: 1 2 3 4 5 )

Oddelek: Novice / Brskalniki
23563231 (48142) Apofis
»

Rust

Oddelek: Igre
305395 (3328) zeks14
»

Mozillin Quantum bo zamenjal Gecka (strani: 1 2 )

Oddelek: Novice / Brskalniki
6420881 (17267) BigWhale
»

Mozilla pripravila prvo verzijo brskalniškega pogona Servo

Oddelek: Novice / Brskalniki
85086 (3619) LightBit

Več podobnih tem