Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: okalousek 26. 05. 2020, 22:07:53

Název: WASM a nahrazení JS
Přispěvatel: okalousek 26. 05. 2020, 22:07:53
Zdravím. Měl bych takovou otázku. Není to úplně problém, jen by mě zajímalo něco o WASM. Hodně se o něm teď mluví a v souvislosti s tím se říká že (dle oficiálních stránek podpory WASM pro Rust kupříkladu) že není smysl WASM nahradit JS, ale doplnit ho. Chápu to na malých stránkách kde se klikají tlačítka, nějaké animace, ale když už ten WASM máme, proč v něm nedělat celé webové aplikace? Proč neposlat věci jako React.JS do důchodu a pustit se do věcí jako je Yew?

Mým úmyslem není tu rozpoutat nějakou hádku, ale zajímám se o to proč se tvrdí že WASM je k doplnění JS a proč ho nechtějí nahradit když to WASM dokáže.
Název: Re:WASM a nahrazení JS
Přispěvatel: Filip Jirsák 26. 05. 2020, 22:31:33
V současné době neumí WASM komunikovat s DOMem a jinými API prohlížeče, takže by to nešlo. WASM je teď jen úplně základní VM. Dneska se dá použít asi jen pro urychlení nějakých výpočtů.
Název: Re:WASM a nahrazení JS
Přispěvatel: NCC1701E 26. 05. 2020, 23:12:32
V současné době neumí WASM komunikovat s DOMem a jinými API prohlížeče, takže by to nešlo. WASM je teď jen úplně základní VM. Dneska se dá použít asi jen pro urychlení nějakých výpočtů.

To není pravda. Z WASM lze volat javascript, takže není problém manipulovat s libovolnou částí stránky a používat nativní API prohlížeče (například nativní crypto). Potíž bývá častěji v tom, že kód kompilovaný do WASM je synchronní, kdežto velká část JS API je asynchronní, takže se to špatně kombinuje (ale lze to).

Například QT lze zkompilovat do WASM a pak provozovat v prohlížeči (jak widgety, tak qml).
Výhodou je velmi snadný a rychlý vývoj (nesrovnatelné s běžnými webovými aplikacemi)
Nevýhodou je velká aplikace (i nejmenší QT aplikace bude mít přes 30MiB), což znamená, že je to nepoužitelné na mobilu (IOS například tak velkou aplikaci nezvládne, Android se skřípěním zubů ano).
Navíc na mobilu nefunguje SW klávesnice a nevím, jestli v dnes vydaném QT 5.15 už funguje integrovaná QT-VirtualKeyboard

Takže nelze jednoznačně odpovědět.
Pro desktopový prohlížeč ano, pro mobil ne.
Název: Re:WASM a nahrazení JS
Přispěvatel: fortran1986 27. 05. 2020, 02:26:17
Veľa o tom neviem, ak sa v niečom mýlim kludne ma opravte, tak len zhrniem čo viem:

Pre C++/C sa používa emscripten - toolchain pre LLVM (LLVM je medzijazyk pre clang) ktorý umožňuje kód kompilovať z C++, C po novom už aj Objective-C do kombinácie JS + WebAssembly. Ak chceme napísať aj niečo viac ako "Hello world" mala by tam byť aj štipka toho JS lebo WebAssembly sám o sebe má zatiaľ obmedzené možnosti (nevie pristupovať k DOM a ďalším API) preto sa zvykne kombinovať s JS, ale vo výsledku je WASM + JS - plnohodnotná náhrada za natívne binárky. Samozrejme má to obmedzenia kôli bezpečnosti.

Niekomu WebAssembly možno pripomenie staré dobré ActiveX z pred 20tich rokov, ktoré, ale ešte išlo o krok ďalej (a práve preto sa asi nepresadilo - bola to v prostredí webu jednoducho príliš veľká bezpečnostná hrozba)

Čo sa týka (môjho) .NET sveta
- Nad WebAssembly beží .NET (vďačí za to Blazor-u ktorý umožňuje písať isomorfné aplikácie napr. v jazyku . C#)
- pre funkcionálny jazyk F# je k dispoziícii framework Bolero ktoré používa Blazor, FABLE a framework Elmish.

Taktiež sa do WebAssembly s obľubou kompilujú jazyky Rust a Go

Nad WebAssembly + JS + WebGL môžu bežať aj niektoré 3D herné enginy ako:
- Unreal Engine < 4.23
- Unity
- Godot

ale v praxi všetko potrebné za teba vyrieši compiler a ty maximálne vieš že tam nejaký WASM je

Zhrunutie. Javascript (spolu s WebAssembly) naozaj má šancu pochovať sám seba. Síce z prehliadačov úplne nevymizne ale možno sa z neho stane len doplnkový medzijazyk k WebAssembly.
Název: Re:WASM a nahrazení JS
Přispěvatel: oss 27. 05. 2020, 07:17:05
Podla mna ma WASM potencial nahradit javascript, no dnes este nie.
Hlavne kvoli chybajucemu pristupu k DOMU a ostatnemu API browsera.

No mam pocit, ze WASM je sabotovane zo strany Googlu, na roadmape to je uz aspon 3 roky, hlavne ak si porovname co pribudlo za tie tri roky do JS a do WASM.
Název: Re:WASM a nahrazení JS
Přispěvatel: Filip Jirsák 27. 05. 2020, 08:02:26
To není pravda. Z WASM lze volat javascript, takže není problém manipulovat s libovolnou částí stránky a používat nativní API prohlížeče (například nativní crypto).
Děkuji za potvrzení toho, co jsem napsal. Příště bych doporučil přečíst si, na co odpovídáte.

WASM v současné době neumožňuje přímý přístup k DOMu a API prohlížeče, takže jím JavaScript nahradit nejde. Dnes nelze napsat React ve WASM bez JavaScriptu, protože React především manipuluje s DOMem.

Samozřejmě se plánuje, že WASM v budoucnosti bude mít přístup ke stejným API, jako má JavaScript, ale k tomu je ještě dlouhá cesta.
Název: Re:WASM a nahrazení JS
Přispěvatel: Filip Jirsák 27. 05. 2020, 08:08:31
Niekomu WebAssembly možno pripomenie staré dobré ActiveX z pred 20tich rokov, ktoré, ale ešte išlo o krok ďalej (a práve preto sa asi nepresadilo - bola to v prostredí webu jednoducho príliš veľká bezpečnostná hrozba)
WebAssembly a Active.X se vůbec nedá porovnávat. WebAssembly pořád běží v sandboxu prohlížeče, ani v budoucnosti nebude mít větší možnosti, než má dnešní JavaScript – je to v podstatě jen jiný jazyk, resp. by se na to dalo dívat jako na zveřejnění nižších vrstev virtuálního stroje, ve kterém JavaScript běží. Ve skutečnosti jsou dnešní implementace WASM psané od začátku, ale ta myšlenka za tím taková je – „dnes jiné jazyky překládáme do JavaScriptu, pojďme dát do prohlížeče něco nízkoúrovňovějšího, do čeho se bude překládat lépe, co ale bude mít vzhledem k okolnímu světu stejné možnosti, jako dnešní JavaScript“.

Active.X byl prostě nativní kód, který se spouštěl z prohlížeče, a mohl si tedy v systému dělat co chtěl, měl plná práva uživatele, který prohlížeč spustil.
Název: Re:WASM a nahrazení JS
Přispěvatel: Vantomas 27. 05. 2020, 08:32:13
WebAssembly a Active.X se vůbec nedá porovnávat. WebAssembly pořád běží v sandboxu prohlížeče, ani v budoucnosti nebude mít větší možnosti,  ......
Active.X byl prostě nativní kód, který se spouštěl z prohlížeče, a mohl si tedy v systému dělat co chtěl, měl plná práva uživatele, který prohlížeč spustil.

Ale tak to je spíš jen tak nějak důsledek doby, kdy se věci sandboxujou. NSAPI pluginy ještě sandbox stihly zažít a kdyby ActiveX přežilo do dnešní doby, bude úplně ve stejným sandboxu, jako jsou dnešní věci v dnešním browseru.
Název: Re:WASM a nahrazení JS
Přispěvatel: NCC1701E 27. 05. 2020, 15:11:17
To není pravda. Z WASM lze volat javascript, takže není problém manipulovat s libovolnou částí stránky a používat nativní API prohlížeče (například nativní crypto).
Děkuji za potvrzení toho, co jsem napsal. Příště bych doporučil přečíst si, na co odpovídáte.

WASM v současné době neumožňuje přímý přístup k DOMu a API prohlížeče, takže jím JavaScript nahradit nejde. Dnes nelze napsat React ve WASM bez JavaScriptu, protože React především manipuluje s DOMem.

Samozřejmě se plánuje, že WASM v budoucnosti bude mít přístup ke stejným API, jako má JavaScript, ale k tomu je ještě dlouhá cesta.

Ehm. Odpovídal jsem na tuto větu: V současné době neumí WASM komunikovat s DOMem a jinými API prohlížeče, takže by to nešlo. WASM je teď jen úplně základní VM. Dneska se dá použít asi jen pro urychlení nějakých výpočtů.

Není tam napsáno nic o přímém přístupu, ale jen že to nejde. Já jsem napsal, že to jde (pomocí volání javascriptu). Mohl bych citovat matku Forresta Gumpa, ale bylo by to zbytečné. Stejně jako fakt, že už jsem s využitím QML a WASM několik takových aplikací napsal. Ale možná se mi to jen zdálo, protože to nejde.  8)
Název: Re:WASM a nahrazení JS
Přispěvatel: AoK 27. 05. 2020, 15:39:44
To není pravda. Z WASM lze volat javascript, takže není problém manipulovat s libovolnou částí stránky a používat nativní API prohlížeče (například nativní crypto).
Děkuji za potvrzení toho, co jsem napsal. Příště bych doporučil přečíst si, na co odpovídáte.

WASM v současné době neumožňuje přímý přístup k DOMu a API prohlížeče, takže jím JavaScript nahradit nejde. Dnes nelze napsat React ve WASM bez JavaScriptu, protože React především manipuluje s DOMem.

Samozřejmě se plánuje, že WASM v budoucnosti bude mít přístup ke stejným API, jako má JavaScript, ale k tomu je ještě dlouhá cesta.

Ehm. Odpovídal jsem na tuto větu: V současné době neumí WASM komunikovat s DOMem a jinými API prohlížeče, takže by to nešlo. WASM je teď jen úplně základní VM. Dneska se dá použít asi jen pro urychlení nějakých výpočtů.

Není tam napsáno nic o přímém přístupu, ale jen že to nejde. Já jsem napsal, že to jde (pomocí volání javascriptu). Mohl bych citovat matku Forresta Gumpa, ale bylo by to zbytečné. Stejně jako fakt, že už jsem s využitím QML a WASM několik takových aplikací napsal. Ale možná se mi to jen zdálo, protože to nejde.  8)

ale víš, že původní dotaz zněl, jestli je možné nahradit JS pomocí wasm a Filip Jirsák na to správně odpověděl, že není, protože wasm neumí komunikovat s prohlížečem a DOMem. Tys vzal větu bez kontextu a hádáš, že komunikovat umí, ale jen přes JS...
Název: Re:WASM a nahrazení JS
Přispěvatel: Filip Jirsák 27. 05. 2020, 15:57:20
Ehm. Odpovídal jsem na tuto větu: V současné době neumí WASM komunikovat s DOMem a jinými API prohlížeče, takže by to nešlo. WASM je teď jen úplně základní VM. Dneska se dá použít asi jen pro urychlení nějakých výpočtů.

Není tam napsáno nic o přímém přístupu, ale jen že to nejde.
Není tam napsáno, že to nejde, je tam napsáno, že to neumí WASM. Což sám opakovaně potvrzujete, když píšete, že je potřeba z WASM volat javaScript, abyste k těmto API zprostředkovaně získal přístup.

Já jsem napsal, že to jde (pomocí volání javascriptu).
Ano, to jste napsal. Jenže okalousek se ptal, proč se WASM nepoužívá místo JavaScriptu. Takže vaše rada zní, že byste JavaScript nahradil – voláním JavaScriptu. Obávám se, že to okalouska moc nepotěší.

Mohl bych citovat matku Forresta Gumpa, ale bylo by to zbytečné.
Ano, bylo by to zbytečné. Naopak by bylo žádoucí, kdybyste si nejprve přečetl dotaz, a teprve pak psal odpověď.
Název: Re:WASM a nahrazení JS
Přispěvatel: okalousek 29. 05. 2020, 14:47:28
Ehm. Odpovídal jsem na tuto větu: V současné době neumí WASM komunikovat s DOMem a jinými API prohlížeče, takže by to nešlo. WASM je teď jen úplně základní VM. Dneska se dá použít asi jen pro urychlení nějakých výpočtů.

Není tam napsáno nic o přímém přístupu, ale jen že to nejde.
Není tam napsáno, že to nejde, je tam napsáno, že to neumí WASM. Což sám opakovaně potvrzujete, když píšete, že je potřeba z WASM volat javaScript, abyste k těmto API zprostředkovaně získal přístup.

Já jsem napsal, že to jde (pomocí volání javascriptu).
Ano, to jste napsal. Jenže okalousek se ptal, proč se WASM nepoužívá místo JavaScriptu. Takže vaše rada zní, že byste JavaScript nahradil – voláním JavaScriptu. Obávám se, že to okalouska moc nepotěší.

Mohl bych citovat matku Forresta Gumpa, ale bylo by to zbytečné.
Ano, bylo by to zbytečné. Naopak by bylo žádoucí, kdybyste si nejprve přečetl dotaz, a teprve pak psal odpověď.

Mě to nevadí, proti JS nic nemám, jen se prohlížím po nových technologií (částečně z užitku, částečně ze zájmu).