Portál AbcLinuxu, 8. května 2025 14:34
unsafe
bloky aby to dělalo víc než hello world Já vidím problém ještě o krok dřív. Když si přečtu zprávičku nebo popis na Githubu, vybaví se mi okamžitě Zdeněk Pohlreich se svou oblíbenou otázkou "Jaký je vlastně koncept toho vašeho podniku?" A tady odpověď nevidím. V diskusi, na kteorou jsem se dostal odkazem z nedávné debaty o Rustu, někdo velmi výstižně napsal, že nový operační systém má šanci jen v případě, že je v něčem výrazně lepší než stávající a/nebo přináší něco nového.
Vzhledem k tomu, co jako přednost Rustu uvádějí jeho příznivci, a sázce na mikrojádro bych očekával, že tím tahákem bude bezpečnost. Proč ne, OpenBSD se svým "to se u nás stává maximálně… kolikrát, sestro?… šestkrát za deset let" už se trochu přežilo, takže prostor tu je. Nenecháme prostor pro buffer overflow a race conditions při přístupu k datům, důsledně oddělíme core kernel od modulů, výkon sice nebude nic moc, ale bude to ultra bezpečné. Jenže pak si přečtu, že kvůli výkonu poběží i moduly v ring 0 a všechno to bude v jednom paměťovém prostoru. A jak se zdá, ta principiální bezpečnost Rustu se také pošle k vodě, jakmile se nehodí. Tak proč si potom vůbec komplikovat život mikrojádrem?
Podle tohoto dokumentu je cílem výkon a prý
With the minimized system call overhead and potential for faster-than-native performance under certain workloads, Nebulet could be a more performant server os than linux.
Co znamená "faster-than-native", to moc netuším, ale s ohledem na to, že cíl pro nejbližší období je zvládnout 100 Mb/s (aspoň doufám, že opravdu nemyslel "mbps") síťového provozu, mám obavu, že nemá moc představu, do čeho se pouští.
Jenže pak si přečtu, že kvůli výkonu poběží i moduly v ring 0 a všechno to bude v jednom paměťovém prostoru.Ten napad na prvni pohled zni blbeji nez asi ve skutecnosti je. V podstate prebira myslenku, kterou meli pred lety lidi s Microsoft Research, ze pokud mas jistotu (dukaz, nejlepe formalni), ze kod nehrabe kam nema, muzes jej s klidem pustit do ring0 a usetrit si hromadu syscallu, ostatni ale musi byt izolovane v ring3. Microsoft kolem toho mel rozpravovanou celou vedu a sadu komplexnich nastroju a vlastne vsechno, vcetne programovacich jazyku pro bezpecnou implementaci OS si psal od zacatku. Z tohoto pohledu, napad vzit Rust + nejaky byte-code, u ktereho je zajistene, ze bude radne omezen, mi prijde jako rozumne reseni, ktere ma minimalni naklady. A je mozne na nem vyzkouset, co pujde a co ne. Jeste dva roky zpatky bych asi rekl, proc ne, pri trose snahy by to mohlo fungovat. Ale po serii chyb tu Meltdown, SpectreXY, ... mam trochu pochybnosti, ze pujde udelat kod, u nehoz jde dokazat, ze se bude v ring0 chovat sporadane.
mám obavu, že nemá moc představu, do čeho se pouští.Ano, zkouska je prvni krok k neuspechu, ale proc to nevyzkouset? GitHub je plny projektu, ktere skoncily jeste v rannejsi fazi. Minimalne se s tim projektem dostal dal nez zdejsi komunita pisici CAD.
V podstate prebira myslenku, kterou meli pred lety lidi s Microsoft Research, ze pokud mas jistotu (dukaz, nejlepe formalni), ze kod nehrabe kam nema, muzes jej s klidem pustit do ring0 a usetrit si hromadu syscallu, ostatni ale musi byt izolovane v ring3Ne, to nestaci. Design byl zalozen minimalne na predpokladu:
Libi se mi, ze se mnou nesouhlasis, abys pak upresnil, co tvrdim.ze kod nehrabe kam nema, muzes jej s klidem pustit do ring0Ne, to nestaci. Design byl zalozen minimalne na predpokladu:
(a) [Type] safe instrukcniho setu/ABI (pouzili subset MSIL instrukcniho setu).V podobnem duchu by nemelo nic branit pouziti podmnoziny wasm, kde je mozne dobrat se nejakych garanci.
(b) Silnou/garantovanou izolaci komunikujich procesu v prostoru a case.Toho by se melo dat dosahnout rozumne navrzenym ABI, ktere bude davat potrebne garance.
Pouziti Rustu s Wasm na standardnim HW neresi ani prvni, ani druhe.Pouziti jakehokoliv bezneho jazyka (vcetne C/C++) to taky neresi. A? Jazyk je jen prostredek, ne cil.* *Ale jsou evidentne situace, kdy Rust funguje zaroven i jako cerveny hadr.
Libi se mi, ze se mnou nesouhlasis, abys pak upresnil, co tvrdim.Rikam, ze to co jste popsal nestaci.
V podobnem duchu by nemelo nic branit pouziti podmnoziny wasm, kde je mozne dobrat se nejakych garanci.Souhlas, i kdyz si nejsem jist s wasm memory modelem, ale asi ano.
Pouziti jakehokoliv bezneho jazyka (vcetne C/C++) to taky neresi.Souhlas.
A?Opodstatnovat reseni v ring 0 na zaklade zkusenosti ze Singularity (a Midori), kde cely OS byl napsan v bezpecnema jazyce a provozovan na bezpecnem [virtualnim] HW, tedy prerekvizity ktere Nebulet nanaplnuje, moc nejde. Jinak myslenka mikrokernelu s wasm nahore se mi jako takova libi, a bral bych i universalni wasm binarku, kterou by slo spoustet na vsech architekturach pres standardni execve() jako treba skripty.
Fakt super ten "dokonalý" Rust (podle tvrzení jeho komunity), když to musí být procpánoNebulet!unsafe
bloky aby to dělalo víc než hello world![]()
unsafe
nebude? Potom by to o niečom svedčilo :).. Minimálne o tom, že si mal o ruste nerealistické predstavy dokonalosti.
Zásada číslo 1: Nebulet. I když se všechno posere, prostě nebulet, brát to jako drsňák.
NebuletNebulet, přec slzy jako hrachy,
Nebát seposral jsem se strachy
Nekrásta ukradl ti prachy.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.