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
