Web Assembly

LambdaBender

Web Assembly
« kdy: 08. 07. 2018, 01:20:27 »
Používáte někdo WASM? Technicky se mi dost líbí, je to efektivní a snadné k použití, skvělé pro SPA, koncepčně jako GWT, jen místo transkompilace je normální překlad do bajtkódu. Napadají vás nějaké zásadní nevýhody?


kraxna

Re:Web Assembly
« Odpověď #1 kdy: 08. 07. 2018, 01:47:46 »
Napr. ze se do toho neda prelozit normalni js ci do js transpilovane jazyky.

lopata

Re:Web Assembly
« Odpověď #2 kdy: 08. 07. 2018, 03:56:21 »
Interoperabilita webassembly <--> javascript není žádná sláva. Pokud si nevystačíš s předáváním integeru/floatu, ale požaduješ i nějaké složitější datové struktury, tak potřebuješ knihovnu, která to udělá za tebe, ručně to asi řešit nechceš. Prakticky vím jenom o tomhle pro Rust: https://www.infoworld.com/article/3268288/web-development/rust-and-javascript-interoperability-coming-via-webassembly.html

Alfonz

Re:Web Assembly
« Odpověď #3 kdy: 08. 07. 2018, 07:17:00 »
Jak to myslíte snadné k použití? Co jsem naposledy zkoušel, tak to rozhodně snadné nebylo (asm.js ještě docela jde oproti tomuto). Spíše si myslím, že je se to vyplatí u her nebo hotových knihoven v C (např. herní engine a tak podobně); jinak je to naprosto problematické co se týče propojení s normálním HTML/WEB a ostatníma technologiema, které jsou nyní JS.

Jako chápu, že pro hotové projekty a knihovny je to spása, ale to už bylo obdobné s asm.js, jenže si myslím, že je problém aby se to dalo lehce použít. A ještě se ukázalo, že to není zas tak bezpečné jak bylo na začátku prezentováno. Tzn  je to třeba výhodné pro Autodesk, jelikož následně jejich kód jde přímo použít a už ho mají odladěný, tak ho jen zkompilují a pak nějakou dobu budou pracovat na propojení.

A ještě je tu jedna věc, nejsem si úplně jistý jak je to vlastně s Developer Tools/Console a podporou objektů uvnitř webassembly - jestli lze k nim vlastně vůbec přímo přistoupit.

harrison314

Re:Web Assembly
« Odpověď #4 kdy: 08. 07. 2018, 11:32:44 »
WebAssembly je spasa pre tych, ktori nechcu pisat v javscripte a pouzit normalny jazyk.
Napriklad pre C# tu mame velmi zaujimavy projekt https://www.youtube.com/watch?v=JU-6pAxqAa4 zial este nie je production ready, no vdaka nemu mozem na frondende pouzit skutocne objektovy typovy kod, plne to debugovat, pouzivat plno existujucich kniznic a stabilny ekosistem.

Pocul som o podobnej veci pre C++ a som si isty, ze vo svete javy sa tiez zjavi nieco podobne.


LambdaBender

Re:Web Assembly
« Odpověď #5 kdy: 08. 07. 2018, 11:39:06 »
WebAssembly je spasa pre tych, ktori nechcu pisat v javscripte a pouzit normalny jazyk [...] vdaka nemu mozem na frondende pouzit skutocne objektovy typovy kod, plne to debugovat, pouzivat plno existujucich kniznic
Ano, tak nějak to vidím také, ale zatím nemám s WASM zkušenosti, proto mě zajímají postřehy jiných, zejména o případných nevýhodách.

kraxna

Re:Web Assembly
« Odpověď #6 kdy: 08. 07. 2018, 11:54:42 »
WebAssembly je spasa pre tych, ktori nechcu pisat v javscripte a pouzit normalny jazyk [...] vdaka nemu mozem na frondende pouzit skutocne objektovy typovy kod, plne to debugovat, pouzivat plno existujucich kniznic
Ano, tak nějak to vidím také, ale zatím nemám s WASM zkušenosti, proto mě zajímají postřehy jiných, zejména o případných nevýhodách.

Tak to je skutecne efektivni zpusob delani webove aplikace - Mono prelozene do WebAssembly, ktere spousti .NET assemblies :-D

WASM je urceny (v soucasne verzi) k spousteni aplikacich prelozenych z jazyku C/C++ a podobnych, existuje jen velmi omezena moznost integrace s JS (povetsinou primitivni datove typy).

Na veci typu hry se to hodi perfektne, na webovou aplikaci absolutne ne, tam patri transpiling do JS / ES.

harrison314

Re:Web Assembly
« Odpověď #7 kdy: 08. 07. 2018, 12:20:55 »
Ja netvrdim, ze Blazor a WebAssembly je production ready, na to aby sa dalo obe efektivne pouzit si budeme musiet este pockat, no vyzera, ze komunita to chce.

PS: Mono prelozene do WebAssembly ma menej ako niektore ractove a Angularove bundly, a to aby sa netahalia polka .Net assemblies, tak to je v rad mape.

Osobne som skusal aj emcc, ale pride mi, ze ma malu komunitu a este menej dokumentacie k tomu aby som v tom spravil nieco produkcne.

kraxna

Re:Web Assembly
« Odpověď #8 kdy: 08. 07. 2018, 12:31:08 »
PS: Mono prelozene do WebAssembly ma menej ako niektore ractove a Angularove bundly, a to aby sa netahalia polka .Net assemblies, tak to je v rad mape.

No, mozna se neco zmenilo, ale co jsem se na to dival, tak v podstate Hello world s pouzitim Mono v WebAssembly mel 10 MB. Srovnatelny projekt v Reactu a Angular Ivy ma par KB.

A z principu to musi byt vyrazne vetsi, protoze .NET Runtime jinak reimplementuje stejne veci (na principialni urovni), co uz v sobe ma prohlizec. Ale zase proc ne - dovedu si pro to predstavit use case, treba portace aplikace z .NET.

Ale jinak mi mnohem rozumnejsi prijde transpiling C# do JS - treba jako Bridge.NET

borekz

  • ****
  • 493
    • Zobrazit profil
    • E-mail
Re:Web Assembly
« Odpověď #9 kdy: 08. 07. 2018, 12:51:10 »
Na veci typu hry se to hodi perfektne, na webovou aplikaci absolutne ne, tam patri transpiling do JS / ES.
Předpokládám, že aplikace znamená trapný databázový formulář, pro který je samozřejmě vhodnější HTML5. Hra se mezi aplikace nepočítá, stejně jako kancelářský software, grafický editor, CAD...
WASM se hodí obecně pro jakékoliv aplikace, které potřebují OpenGL, Posix nebo SDL a nepotřebují DHTML API ani myš. Zásadní nedostatek WASM není chybějící interoperabilita s Javascriptem, ale chybějící nativní API pro DHTML a myš, která snad časem budou.
« Poslední změna: 08. 07. 2018, 12:56:44 od borekz »

borekz

  • ****
  • 493
    • Zobrazit profil
    • E-mail
Re:Web Assembly
« Odpověď #10 kdy: 08. 07. 2018, 12:58:40 »
Ohledně SDL a myši mám pocit, že to není součást standardu, ale 3rd party knihovny jako EmScripten.

kraxna

Re:Web Assembly
« Odpověď #11 kdy: 08. 07. 2018, 13:23:47 »
ale chybějící nativní API pro DHTML a myš, která snad časem budou.

A to je prave to, co poskytuje to JS API :-D A diskuse byla o SPA.
A EmScripten to skutecne resi (port SDL a dalsich knihoven) - presne napojenim na JS API. Na spoustu veci je to fajn (vc. treba ruznych akceleratoru pro web apps), ale nahrada stavajiciho ekosystemu to neni (a podle autoru ani nema). Webove aplikace totiz, velmi prekvapive, pouzivaji Web APIs :-D

A pro WebAssembly zadne "nativni" (at uz si pod tim predstavujes cokoliv) API pro mys a DHTML neni a nebude. Co bude podle soucasneho proposalu je to, ze az se implementuje WebAssembly GC (podpora pro spolecny GC), tak se muze zacit rozvijet proposal zpristupneni Web IDL rozhrani - neboli Web API :) Coz je presne ta interop s JS.

Resi to budouci specifikace Host bindings (spolu s Anyref), zavislost je prave na GC.

Radek Miček

Re:Web Assembly
« Odpověď #12 kdy: 08. 07. 2018, 15:48:21 »
Ale jinak mi mnohem rozumnejsi prijde transpiling C# do JS - treba jako Bridge.NET

Nevýhoda transpilerů je, že typicky nezachovávají chování programů.

A hádám, že přes WASM (při překladu celého Mona) poběží aplikace o dost rychleji, než při překladu aplikace do normálního JS.

harrison314

Re:Web Assembly
« Odpověď #13 kdy: 08. 07. 2018, 18:48:15 »
Plus Bridge.NET skonci rovnako ako Dart

lopatin

Není podpora DOMu
« Odpověď #14 kdy: 08. 07. 2018, 19:53:18 »
Myslím, že aktuální verze webassembly ani nemá přístup k DOMu co jsem tak zaznamenal. Musí se to nějak řešit interoperabilitou přes javascript. Takže na reální web apps to zatím asi moc nebude.