Në listën e shpërndarjes për zhvilluesit e bërthamës së Linux janë publikuar patches me realizimin e arkitekturës 'Wasm' për bërthamën e Linux, e cila lejon kompilimin e bërthamës në kodin përfundimtar WebAssembly për ekzekutimin e drejtpërdrejtë në shfletuesin web pa përdorur emulatorë. Përveç kësaj, për bërthamën e Linux, projekti ka realizuar mundësinë për të ekzekutuar skedarë në formatin '.wasm' dhe është përgatitur një drejtues 'web console' për simullimin e punës me konsolën në shfletues. Poashtu, është përgatitur një mjet pune për të thjeshtësuar ndërtimin e ambienteve sistemike që mund të ekzekutohen në shfletues.
Si fillim, është krijuar një ambient i bazuar në një grup utilitarësh të kompiluar në WebAssembly, BusyBox dhe bibliotekën sistemike musl. Si emulators terminali për të punuar me një ambient të tillë është përdorur Xterm.js. Ndërsa është aktivizuar një sit demonstrues, i cili lejon vlerësimin e funksionimit të portit pa nevojën e kompilimit të vet. Është deklaruar mbështetje e plotë për shfletuesit në motorin Chromium dhe mbështetje e pjesshme për Firefox, në të cilin mundësitë e debuggimit janë të kufizuara. Në kompjuterët modernë, ngarkimi i grumbullit Wasm të bërthamës në shfletues zgjat më pak se një sekondë.
Projekti ka qenë në zhvillim për rreth dy vjet dhe në fazën aktuale lejon ngarkimin e bërthamës në shfletues dhe ekzekutimin e programeve standarde. Puna ende nuk është përfunduar dhe porta ka probleme dhe kufizime të veçanta. Për shembull, mbështetje për thirrjet vfork dhe longjmp nuk është ende zbatuar (patch-e janë aplikuar në BusyBox për të punuar pa to), mungon mundësia për ta përfunduar detyrat, MMU nuk është i disponueshëm (bërthama dhe proceset punojnë në të njëjtin hapësirë adresash), nuk është e mundshme të ndryshohet kodi që është ngarkuar tashmë, dhe konsola has në ngecje pas rreth 5 minutash për shkak të problemeve me ndarjen e kohës. Këto kufizime janë të tejkalueshme, por për disa prej tyre kërkohet zbatimi i zgjerimeve të tjera në shfletues për WebAssembly. Zgjerime të tilla janë propozuar për MMU dhe pezullimin e thashethemeve.
Pamundësia për të pezulluar ekzekutimin e thread-eve në WebAssembly nuk përputhet me punën e planifikuesit të detyrave në bërthamë, por është arritur të realizohet shumëllojshmëria përmes një rruge alternative, duke lidhur çdo thread/detyra me CPU-në e saj virtuale, e cila përpunon në një Web Worker të veçantë. Në këtë mënyrë është arritur të sigurohet ekzekutimi paralel i proceseve falë motorit të shfletuesit dhe bërthamës së sistemit operativ host pa përdorimin e shumëllojshmërisë që zëvendëson dhe ndërrimin e detyrave në bërthamat që ekzekutohen në shfletues. Prerjet dhe sinjalet në këtë skemë nuk funksionojnë plotësisht, dhe për dërgimin e prerjeve të orës dhe IPI (Inter-Processor Interrupt) përfshihet një CPU virtuale e veçantë.
Fusha e aplikimit të projektit shkon përtej thjesht nxjerrjes së ambientëve Linux në kërkues. Për shembull, porti mund të përdoret për të krijuar programa shumëplatformat WebAssembly që përdorin thirrje specifike sistemore për Linux. Zbatimi i tillave të thirrjeve sistemore mund të konvertohet veçmas në WebAssembly dhe të bashkëngjitet me aplikacionin, duke lejuar përdorimin e tij pa u lidhur me bërthamën sistemore. Porti gjithashtu do të jetë i dobishëm për organizimin e ekzekutimit të izoluar të aplikacioneve përmes WASI (WebAssembly System Interface).
Nga planet përmenden eksperimente me zbatimin e mbështetjes për grafikë në ambientet me bërthamë të ndërtuar në WebAssembly — mbi API-në e shfletuesit WebGL planifikojnë të implementojnë EGL dhe të sigurojnë funksionimin e OpenGL ES. Po ashtu, është planifikuar të realizohet mbështetje për formatin e rikodimit Dwarf për debukimin linjë për linjë të kodit.
Burimi: opennet.ru
