NĂ« listĂ«n e shpĂ«rndarjes sĂ« zhvilluesve tĂ« bĂ«rthamĂ«s Linux janĂ« publikuar patch-e me implementimin e arkitekturĂ«s âWasmâ pĂ«r bĂ«rthamĂ«n Linux, qĂ« lejon pĂ«rpunimin e bĂ«rthamĂ«s nĂ« kodin e ndĂ«rmjetĂ«m WebAssembly pĂ«r ekzekutimin e drejtpĂ«rdrejtĂ« nĂ« shfletuesin web pa nevojĂ«n pĂ«r emulatorĂ«. PĂ«r mĂ« tepĂ«r, projekti ka implementuar mundĂ«sinĂ« pĂ«r tĂ« drejtuar skedare ekzekutues nĂ« formatin â.wasmâ dhe ka pĂ«rgatitur njĂ« driver âweb consoleâ pĂ«r simuluar ndĂ«rveprimin me konsolĂ«n nĂ« shfletues. Po ashtu, Ă«shtĂ« pĂ«rgatitur njĂ« mjet pĂ«r lehtĂ«simin e ndĂ«rtimit tĂ« mjediseve shoqĂ«ruese qĂ« ekzekutohen nĂ« shfletues.
Si njĂ« shembull, Ă«shtĂ« formuar njĂ« mjedis mbi bazĂ«n e grupeve tĂ« utiliteteve BusyBox tĂ« kompiluar nĂ« WebAssembly dhe bibliotekĂ«s sistemore musl. Si njĂ« emulator terminali pĂ«r punĂ«n me njĂ« mjedis tĂ« tillĂ« Ă«shtĂ« pĂ«rdorur Xterm.js. Veçmas Ă«shtĂ« aktivizuar njĂ« faqe demonstrimi, qĂ« lejon tĂ« vlerĂ«sohet puna e portit pa nevojĂ«n pĂ«r kompilim tĂ« vetĂ«. ĂshtĂ« shpallur mbĂ«shtetje e plotĂ« pĂ«r shfletuesit nĂ« motorin Chromium dhe mbĂ«shtetje e pjesshme pĂ«r Firefox, nĂ« tĂ« cilin janĂ« tĂ« kufizuara mundĂ«sitĂ« pĂ«r debug. NĂ« kompjuterat modern, ngarkimi i ndĂ«rtimit tĂ« Wasm tĂ« bĂ«rthamĂ«s nĂ« shfletues zgjat mĂ« pak se njĂ« sekondĂ«.
Projekti është duke u zhvilluar për rreth dy vjet dhe në këtë fazë lejon ngarkimin e bërthamës në shfletues dhe ekzekutimin e programeve tipike. Puna akoma nuk ka përfunduar dhe porta ka disa probleme dhe kufizime të veçanta. Për shembull, ende nuk është realizuar mbështetje për thirrjet vfork dhe longjmp (patch-e janë aplikuar për BusyBox për të punuar pa to), ka mungesë të mundësisë për ndërprerjen e detyrave, MMU nuk është i disponueshëm (bërthama dhe proceset punojnë në të njëjtin hapësirë adresimi), nuk është e mundur të modifikohet kodi që është ngarkuar tashmë, dhe konsola ka tendencën për t'u ngadalësuar pas rreth 5 minutash për shkak të problemeve me timerin. Raportohet se kufizimet ekzistuese janë të kapërcyeshme, por për disa prej tyre kërkohet implementim i zgjerimeve shtesë në shfletues për WebAssembly. Të tilla zgjerime janë propozuar për MMU dhe pezullimin e rrjedhave.
Impossibilitatea de a suspenda execuÈia firelor Ăźn WebAssembly nu se integreazÄ cu funcÈionarea programatorului de sarcini din kernel, dar multitasking-ul a fost realizat pe ocolit, prin legarea fiecÄrui fir/sarcinÄ la propriul sÄu CPU virtual, procesat Ăźntr-un Web Worker separat. Ăn acest fel, s-a reuÈit obÈinerea execuÈiei paralele a proceselor datoritÄ motorului browserului Èi kernelului sistemului de operare gazdÄ, fÄrÄ utilizarea multitasking-ului prin preemptare Èi fÄrÄ schimbarea sarcinilor Ăźn kernelul rulat Ăźn browser. InterrupÈiile Èi semnalele Ăźn acest sistem nu funcÈioneazÄ pe deplin, iar pentru livrarea Ăźntreruperilor temporizatorului Èi IPI (Inter-Processor Interrupt) este folosit un CPU virtual separat.
Domeniul de aplicare al proiectului depÄÈeÈte simpla lansare a mediilor Linux Ăźn browsere. De exemplu, portul poate fi folosit pentru a crea programe WebAssembly multiplataformÄ, care utilizeazÄ apeluri de sistem specifice Linux. Implementarea acestor apeluri de sistem poate fi convertitÄ separat Ăźn WebAssembly Èi ataÈatÄ aplicaÈiei, ceea ce va permite utilizarea acesteia fÄrÄ legare la kernelul de sistem. Portul va fi, de asemenea, util pentru organizarea execuÈiei izolate a aplicaÈiilor prin intermediul WASI (WebAssembly System Interface).
Din planuri se menÈioneazÄ experimente cu implementarea suportului grafic Ăźn medii cu kernel construit Ăźn WebAssembly â pe baza API-ului browserului WebGL se preconizeazÄ implementarea EGL Èi asigurarea funcÈionÄrii OpenGL ES. De asemenea, se planificÄ implementarea suportului pentru formatul de depanare Dwarf pentru depanarea linie cu linie a codului.
Burimi: opennet.ru
