Autor Zpráva
barkel
Profil
Všimol som si že pár vyšších jazykov už podporuje kompilovanie do WebAssembly (ďalej WASM).

1. C++ na prevod používa emscripten (emcc / em++) čo je modul pre clang, ktorý prevádza LLVM do WASM
2. Rust - nakoľko je to jazyk od vývojárov mozilly - tiež podporuje prevod do WASM
3. môj obľúbený jazyk F# sa do WASM kompiluje cez Bolero fsbolero.io
4. Bolero je nadstavba nad Blazor čo je prevodník pre .NET

Podľa caniuse.com/#feat=wasm je už podporvaný naprieč všetkými modernými prehliadačmi.

Zatiaľ som to nejako extra podrobne neskúmal, akurát som včera pár minút skúšal tie 2 posledné frameworky, ale vôbec sa mi nepáči, že project templaty Bolera a Blazora sú naviazané na serverové ASP.NET a tiež že je to celé natoľko blbuvzdorné že sa kompletne všetko skrýva pred programátorom. Ja potrebujem vedieť ako veci fungujú "pod pokličkou". A nepotrebujem si koli kompilovaniu CIL do WASM naťahať 10 ďalších frameworkov s n - vrstvovou architektúrou, ktoré s WASM absolútne nesúvisia. Prečo mi zase niekto vnucuje zbytočnosti? Prečo si vývojár Blazoru myslí že potrebujem serverové ASP.NET?

Takže Emscripten bude pre mňa asi najschodnejšia cesta, len tam zas treba nainštalovať kompletný CLANG :(

A teraz otázky:

1) Čo vlastne od toho WASM môžem očakávať? Aké mi dáva možnosti oproti JS? Má vôbec zmysel sa mu venovať? Ponúka prístup k prostriedkom prehliadača, ktoré bežný JS pred programátorom skrýva?

Príklad: Vedel by som si trebárs cez WASM získať pointer na pixely ktoré sú zobrazené v obrázku (element img) a potom prepisovať pamať a meniť obrázok (bez toho aby som použil canvas)? Alebo aký bonus navyše mi ponúka WASM? Rýchlosť to asi nebude nakoľko aj samotný JS je dnes už ultra rýchly.

2) Čo to vlastne je WASM? binárny medzikód, ktorý sa kompiluje cez nejaký JIT compiler. Ako je to s jeho bezpečnosťou? Určite je sandboxovaný. Do akej miery viem pristupovať aj do "vonkajšieho sveta" mimo browser? Vedel by som pomocou WASM pracovať priamo s hardwarom ktorý prehliadač nepodpruje? Kde môžem vidieť WASM bytecode?

3) Aké NEVÝHODY to má oproti JS?

4) Aký jazyk z tých čo sa kompilujú do WASM by ste mi doporučili. Viem že asi najideálnejší by bol Rust, ale ten sa mi kôli tomu učiť nechce.

5) Na aký typ aplikácie (alebo riešenie v rámci aplikácie) by ste zvolili WASM namiesto JS?
Radek9
Profil
barkel:
Takže Emscripten bude pre mňa asi najschodnejšia cesta, len tam zas treba nainštalovať kompletný CLANG :(
Ještě můžeš zkusit Cheerp.

1) Čo vlastne od toho WASM môžem očakávať? Aké mi dáva možnosti oproti JS? Má vôbec zmysel sa mu venovať? Ponúka prístup k prostriedkom prehliadača, ktoré bežný JS pred programátorom skrýva?
V zásadě je to prostě kompilační target pro staticky typované jazyky. Některé benchmarky ukazují, že je to dost rychlé, téměř srovnatelné s nativním programem. www.usenix.org/system/files/atc19-jangda.pdf

Nic moc navíc to v zásadě nemá. Má to dva číselné typy (i64 a f64) a funkce. Uvedený příklad, který popisuješ, úplně realizovat nejde. Mezi JS a Wasm existuje sdílená paměť, ale musel bys ty pixely z img nejdřív vytáhnout v JS.

2) Čo to vlastne je WASM? binárny medzikód, ktorý sa kompiluje cez nejaký JIT compiler. Ako je to s jeho bezpečnosťou? Určite je sandboxovaný. Do akej miery viem pristupovať aj do "vonkajšieho sveta" mimo browser? Vedel by som pomocou WASM pracovať priamo s hardwarom ktorý prehliadač nepodpruje? Kde môžem vidieť WASM bytecode?
V zásadě má přístup k tomu, k čemu mu přístup dáš. Při vytváření instance můžeš předat JS funkce, které program může volat.

3) Aké NEVÝHODY to má oproti JS?
Absence dynamických typů. Nemá to zatím přímý přístup k API prohlížeče. (Píšu zatím, protože se připravuje WASI, přístup k vláknům apod.)

4) Aký jazyk z tých čo sa kompilujú do WASM by ste mi doporučili. Viem že asi najideálnejší by bol Rust, ale ten sa mi kôli tomu učiť nechce.
Zrovna tady podle mě nedává smysl říct jeden konkrétní jazyk. Každý jazyk má svoje knihovny a svoje použití. Použij prostě to, co se ti hodí a usnadní ti práci.

5) Na aký typ aplikácie (alebo riešenie v rámci aplikácie) by ste zvolili WASM namiesto JS?
Typicky prostě port desktopové aplikace do browseru. Pokud se chceš úplně odříznout od JS, tak se (třeba v tom zmíněném Blazoru) dají dělat SPA.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0