Kjo përfshin portin e bërthamës Linux për WebAssembly, i cili funksionon në shfletues.

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

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster