Čo sa stalo s WebAssembly?

Ink

  • *****
  • 654
    • Zobrazit profil
    • E-mail
Re:Čo sa stalo s WebAssembly?
« Odpověď #30 kdy: 06. 02. 2019, 07:25:52 »
Podle čeho usuzuješ? Třeba Rust & WASM je můj denní chléb. Používáme ho na knihovny kde chceme sdílet kód, který má ve výsledku běžet nativně, v NodeJS a v prohlížeči. Dřív bylo všechno v JS, ale to nám už na IoT zařízeních nevyhovuje, proto tahle cesta. Jeden zdroják a z něho generuju Rust crates (knihovny) a NPM balíčky pro použití v JS.

Ještě to není tak rozšířené, i když už je to lepší, protože nástroje jsou stále nedokonalé. Ve smyslu balení NPM balíčků (wasm-pack, ...), generování JS wrapperu (wasm-bindgen, ...), atd. Funguje to, ale má to své mouchy. A zároveň ještě nedávno nebylo úplně jednoduché napsat něco co běží všude - např. když jsi používal náhodné generátory, ... Teď už je to celkem pohoda.

A nechceš se pochlubit víc? Firma, nějaké technologické zajímavosti ohledně wasm targetu, jak dlouho používáte Rust, jestli jedete na stable verzi apod.? Díky předem.


Zrzka

Re:Čo sa stalo s WebAssembly?
« Odpověď #31 kdy: 06. 02. 2019, 10:28:27 »
A nechceš se pochlubit víc? Firma ...

Firma je https://www.balena.io/.

Citace
Nějaké technologické zajímavosti ohledně wasm targetu

To je tak široce položená otázka, že nevím co na to napsat. Obecně, jak už tu zaznělo, WASM je v podstatě MVP. Má to spoustu limitací, které člověk musí znát. Občas jsem si pořádně nabil, protože jsem začal něco dělat, neodzkoušel to s WASM / JS a pak jsem měl problémy. Musel jsem změnit implementaci v Rustu a nebo přidat nějaký „šílený“ wrapper pro WASM / JS.

Můj předchozí příspěvek zněl asi až moc optimisticky, tak uvedu příklad, který jsem musel řešit. Už jsem tu zmiňoval třeba náhodný generátor. Lidi kolem Rustu se snaží, přidávají podporu pro wasm32 kde to jde, například ...


... ale stejně narážíte na špeky, že ne všechny knihovny fungují ...


... protože si občas musíte vybrat jestli stdweb, wasm-bindgen, podle toho zapnout / vypnout nějakou vlastnost, cargo to nedělá tranzitivně, takže se stejná vlastnost (jako má rand) musela přidal i do uuid-rs ...


... atd.

Jedna rada, resp. je potřeba si uvědomit, že pokud se vydáte na cestu Rust & WASM, stanete se jedním z pionýrů a budete muset řešit problémy i v ostatních knihovnách, přidávat podporu, ... Když to funguje, tak je to paráda. Jinak musíte přiložit ruku k dílu (PR) a nebo to alespoň nahlásit jako issue. A to nemluvím o Rustích knihovnách, které mají závislosti na C knihovnách a chcete je ve WASM. To už je zase úplně jiná úroveň problémů. Pustit wasm-pack nebo cargo build --target wasm32-unknown-unknown mnohdá nestačí.

Dost mi to připomíná situace kdy jsem v dávných dobách (±20 let) na Linuxu začal řešit uspávání, framebuffery, ... Když to jelo, bezva. Ale občas jsem toho měl plný zuby.

Pokud chcete začít s Rustem & WASM & JS/NPM, tak starovací čára je tady:


Pokud C/C++ & WASM, tak tady:


A to všechno následováno google.com ;)

Citace
Jak dlouho používáte Rust, jestli jedete na stable verzi apod.?

Já osobně víc jak 2 roky. Firma taky tak nějak. Od doby co vyšla edice 2018 tak jenom stable. Dříve to byla víceméně kombinace stable & nightly. Nightly jen pro clippy-preview a rustfmt-preview. Teď už to běží na stable, -preview suffix byl odstraněn a nightly tak není potřeba. Suma sumárum, pokud si nehrajeme, tak je všude stable.

Zrzka

Re:Čo sa stalo s WebAssembly?
« Odpověď #32 kdy: 06. 02. 2019, 10:39:13 »
Jinak doporučuji neminout zprávičku https://www.root.cz/zpravicky/rustpython-je-implementace-jazyka-python-3-napsana-pomoci-rust/ kde jsou odkazy na RustPython, což je Python v Rustu a celé to běží v prohlížeči (WASM).

Re:Čo sa stalo s WebAssembly?
« Odpověď #33 kdy: 06. 02. 2019, 20:59:32 »
Wasm má své výhody i nevýhody. Pokud chcete portovat třeba LaTeX do JS, je to dobrý nástroj. Pokud chcete napsat „obyčejnou“ webovou stránku, která bude komunikovat se serverem a zobrazovat nastylovaný text a obrázky, může to mít spíše nevýhody.

Podrobněji: WebAssembly (aspoň zatím) nemá garbage collector: https://github.com/WebAssembly/proposals/issues/16 Při portování Cčkového kódu do WA je to úplně jedno. Pro velkou část webových stránek to je překážka: Buď bude potřeba spravovat paměť ručně (opravdu to chcete?), nebo k tomu musíte přibalit i nějakou knihovnu pro GC. Celkově bych pak čekal (nejen kvůli té knihovně pro GC) objemnější výsledný JS. Znamená to, že se stránka bude déle načítat (to uživatel může pocítit). Pokud ta stránka ale bude provádět spíše network-bound operace (což je IMHO celkem časté), čas vykonávání JS můžeme zkrátit třeba i o 90 %, ale uživatel to nepozná.

Pro koncového uživatele tedy čekám většinou spíše zhoršení. Má to výhody pro programátora? IMHO moc ne. Dnes je spousta transpilerů, takže programátor má i bez wasm spoustu možností. Webasm ty možnosti může rozšířit. Dokud ale bude obtížné si držet reference na nativní DOM objekty, hitparáda to nebude. Dovedu si představit nějaký workaround, ale jestli podobnou šílenost někdo někde implementoval…

Jak jsem psal výše, výjimky se najdou. LaTeX – máme existující kód (benefit pro programátora), který můžeme díky webasm spustit rychleji (benefit pro uživatele) a který nepotřebuje přístup k DOMu (odpadá nám nevýhoda). Tady to může stát za to. Kolik takových případů ale máme? To IMHO jejich počet odpovídá využití webasm.

Re:Čo sa stalo s WebAssembly?
« Odpověď #34 kdy: 06. 02. 2019, 23:49:55 »
Wasm má své výhody i nevýhody. Pokud chcete portovat třeba LaTeX do JS, je to dobrý nástroj. Pokud chcete napsat „obyčejnou“ webovou stránku, která bude komunikovat se serverem a zobrazovat nastylovaný text a obrázky, může to mít spíše nevýhody.
Já myslím, že WebAssembly rozhodně není a nebylo dělané na tvorbu celých webových stránek. Tam by přece nefungovalo ani SEO. Už je to nějaký čas co jsem se zajímal o WA, ale co vím, tak měl být určený hlavně pro aplikace v C/C++. Pokud by se do WA přidal i interpret Pythonu (aby se nemuselo transpilovat Python->C/C++), tak se otevírají další možnosti. WA je správný krok, který rozšířuje možnosti a rozhodně nemá za cíl porazit HTML,CSS.


Mlocik97

  • *****
  • 830
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Čo sa stalo s WebAssembly?
« Odpověď #35 kdy: 07. 02. 2019, 10:29:55 »
Wasm má své výhody i nevýhody. Pokud chcete portovat třeba LaTeX do JS, je to dobrý nástroj. Pokud chcete napsat „obyčejnou“ webovou stránku, která bude komunikovat se serverem a zobrazovat nastylovaný text a obrázky, může to mít spíše nevýhody.
Já myslím, že WebAssembly rozhodně není a nebylo dělané na tvorbu celých webových stránek. Tam by přece nefungovalo ani SEO. Už je to nějaký čas co jsem se zajímal o WA, ale co vím, tak měl být určený hlavně pro aplikace v C/C++. Pokud by se do WA přidal i interpret Pythonu (aby se nemuselo transpilovat Python->C/C++), tak se otevírají další možnosti. WA je správný krok, který rozšířuje možnosti a rozhodně nemá za cíl porazit HTML,CSS.

To som už psal.... lenže retardi to nechápu

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Čo sa stalo s WebAssembly?
« Odpověď #36 kdy: 07. 02. 2019, 11:42:12 »
Wasm má své výhody i nevýhody. Pokud chcete portovat třeba LaTeX do JS, je to dobrý nástroj. Pokud chcete napsat „obyčejnou“ webovou stránku, která bude komunikovat se serverem a zobrazovat nastylovaný text a obrázky, může to mít spíše nevýhody.
Já myslím, že WebAssembly rozhodně není a nebylo dělané na tvorbu celých webových stránek. Tam by přece nefungovalo ani SEO. Už je to nějaký čas co jsem se zajímal o WA, ale co vím, tak měl být určený hlavně pro aplikace v C/C++. Pokud by se do WA přidal i interpret Pythonu (aby se nemuselo transpilovat Python->C/C++), tak se otevírají další možnosti. WA je správný krok, který rozšířuje možnosti a rozhodně nemá za cíl porazit HTML,CSS.
To som už psal.... lenže retardi to nechápu
Ale no tak, snad není nutné hned Waldemara urážet.

Re:Čo sa stalo s WebAssembly?
« Odpověď #37 kdy: 07. 02. 2019, 13:41:29 »
Asi se celkem shodneme, až na jednu věc: Jde o WebAssembly v dnešním stavu. Pokud podle svých plánů doplní podporu věcí jako GC a reference na JS objekty, mohou padnout některé dnešní nevýhody a může se z toho stát zajímavý target pro transpilery. Ale to už je otázka budoucnosti, z hlediska otázky, proč se to nepoužívá moc dnes je to celkem irelevantní.

SEO – to záleží a sem bych to netahal. S webasm je to stejný problém jako s JS a má to snad úplně stejná řešení.

Python – no, nevím. Co jsem viděl Linuxové binárky Pythonu 3.{6,7}, jsme v řádu MiB. Přijde mi, že tady nasbíráte různé zmiňované nevýhody a ještě to ani nebude moc rychlé.