[HN Gopher] Wasmer takes WebAssembly libraries mainstream with WAI ___________________________________________________________________ Wasmer takes WebAssembly libraries mainstream with WAI Author : the_duke Score : 67 points Date : 2022-12-02 17:42 UTC (5 hours ago) (HTM) web link (wasmer.io) (TXT) w3m dump (wasmer.io) | qclibre22 wrote: | I'm getting content blocked at work: | | Content blocked by [redacted] | | Reason: This Category is filtered: grayware | | Are there security concerns with wasmer.io ? | syrusakbary wrote: | Hey, Syrus here from Wasmer. This is the first time I'm hearing | from this. No, there shouldn't be any security concerns in our | website (it's actually fully open source as well [1], if you | want to take a look) | | Do you happen to know what firewall does your work use? I'd | love to follow up with them to make sure this is resolved asap | | [1]: https://github.com/wasmerio/wasmer.io | qclibre22 wrote: | Not sure what's up. No idea what the local filter software | is. I'll fill out the local complaint form. wasm files are | being served up from github.io , so wasm files, per se, are | not the problem. | benatkin wrote: | Behind every overly aggressive filter is an allowlist. | GitHub would likely be the first addition. | flohofwoe wrote: | I remember that a couple of years ago any wasm file hosted on | any github page would be blocked by the EasyPrivacy list | (apparently some idiots used github pages to host coin | miners). Maybe it's a similar over-eager blocking rule. | dlojudice wrote: | would it be possible, for example, to access the standard decimal | library of C# or Python via Javascript, thus not having to wait | for the TC39 spec / implementation? [1] | | [1] https://github.com/tc39/proposal-decimal | syrusakbary wrote: | Decimal values are not currently represented as a first-class | type by WAI (as int, floats or string types are) but I believe | it would be a great idea to do so. | | Would you mind opening an issue in the WAI repository [1] so we | can follow up there? Thanks! | | [1] https://github.com/wasmerio/wai | duped wrote: | Would this come under the WASI component model? | the_duke wrote: | The code you want to use has to compile to Webassembly. | | This is in fact possible for C# and Python, but especially in | the browser you would want to have a small binary size, and | avoid bringing along the whole runtime of these managed | languages if all you want is a small functionality subset. | | A very viable solution would be creating a decimal package with | either a native Rust crate (I think there are a few decimal | implementations) or with one of the goto C libraries. | | That would be much smaller and faster as well. | singularity2001 wrote: | wasmer add --pip wai/tutorial-01 Querying WAPM for package | bindings error: Unable to find bindings for | wai/tutorial-01@latest +-> 1: The package doesn't contain any | bindings | | I guess one needs to publish a pip package? pip has very high | requirements to publishing packages. the wai tutorial gives zero | info on how to create a local pip package. | syrusakbary wrote: | Looking into it. The command you posted should work: | wasmer add --pip wai/tutorial-01 | | Will post as soon as we get it fixed. Thanks for letting us | know | | EDIT: (+25 min) The command should be fully working now | singularity2001 wrote: | almost. the command works but the import fails: | | /opt/wasm/wai/tutorial-01/ python3 consume.py Traceback (most | recent call last): File | "/opt/wasm/wai/tutorial-01/consume.py", line 2, in <module> | from tutorial_01 import bindings File | "/opt/homebrew/lib/python3.10/site- | packages/tutorial_01/__init__.py", line 7, in <module> from | wasmer import Store as _Store # type: ignore File | "/opt/homebrew/lib/python3.10/site- | packages/wasmer/__init__.py", line 1, in <module> raise | ImportError("Wasmer is not available on this system") | ImportError: Wasmer is not available on this system | | which wasmer /opt/homebrew/bin/wasmer | | wasmer -v wasmer 3.0.2 | syrusakbary wrote: | Almost there! Are you in macOS m1/m2 by any chance? | RcouF1uZ4gsC wrote: | Between WebAssembly, Cloudflare Durable Objects/Workers are the | equivalents from Fly.io, it seems we are finally recreating the | features of IBM System/360 mainframe from 50 years ago, in terms | of portable code that could run reliably and scalably even with | faulty hardware. WebAssembly is the modern 360 Assembler that | allows you to compile once and run anywhere. (Kubernetes is the | modern JCL) | EMM_386 wrote: | I've been a developer for decades and I'm still getting highly | confused by all of this WASM, Wasmer, WasmEdge, Wasmtime, etc. | | There was another one on the front page today that allowed you to | use WASM to program other programming languages ("Extism: make | all software programmable"). | | Where are we headed with all of this? | | I can see a future where WASM supports GC-languages, then you | esentially have things like C# or Java desktop applications | running "in the browser" via WASM? Doesn't that throw all of | HTML, CSS, etc out the window? | | Honest question, sorry if it's dumb. But all these WASM terms, | releases, etc. have me completely lost. I'll stick to my day job. | syrusakbary wrote: | Extism is great [1], and I have great admiration for what they | are doing. We didn't know they were working on that, if that | was the case perhaps we the need for WebAssembly Interfaces | ("WAI") would have been minimized. | | In any case, it seems that there will be multiple ways of | generating bindings going on in the future. And you will | probably need to pick the option will fit better your needs! | (similarly as how you can use Protocol Buffers, Cap'N'Proto or | Thrift). | | [1]: https://extism.org/ | | > But all these WASM terms, releases, etc. have me completely | lost. | | I don't blame you, I work on this and even for me it's a bit | hard to keep up. Hopefully things will improve and become more | clear over time! | dvt wrote: | > Where are we headed with all of this? | | We are heading nowhere. | | Hot take: WASM is a dead technology and has failed to displace | vanilla JS. There are only a few very niche use cases, most of | which have zero product-market fit (e.g., no one wants to play | video games in a browser). | | Furthermore, no one wants to seriously write C++/Rust/Java and | then compile it to WASM. These days, WASM projects are a neat | way to pad your resume or get tech "thought leaders" to tweet | about you. As far as Extism goes, it sounds like a problem | looking for a solution. We already have LUA and JS as | embeddable scripting languages, so here we go overengineering | yet again. | galangalalgol wrote: | App developers wanted it to work. And if apple had allowed it | to work in safari like it does on android, it might have made | progress. | traverseda wrote: | >Where are we headed with all of this? | | https://www.destroyallsoftware.com/talks/the-birth-and-death... | mysterydip wrote: | Not dumb, I feel the same way. I need a good WASM primer: what | are they all, how do you use them, what interfaces (or doesn't) | with them, etc. | traverseda wrote: | You can compile software to WASM using emscripten. When you | see a video game that runs in a web browser it was probably | done via emscripten and wasm. When you see old DOS games on | archive.org those are done by compiling dosbox to the | browser. Emscripten includes some shims for pretending you | have a file system and a clock and all that stuff. | | There are also GC'd languages ported to WASM, things like | Pyodide, but they're pretty big and have some rough edges as | they're not normally allowed to do things like make network | calls. | | WASM is just a virtual machine, sort of like the JVM, but | that runs in the browser. It might help to think of WASM | (Web-ASseMbly) as a new CPU architecture. It's a minimal CPU | instruction set (a virtual instruction set) that can be | relatively easily jitted or transpiled into machine code. | | WASM by itself doesn't do anything, the specs for what kind | of interfaces exist between the WASM sandbox and the host app | are still sort of in the air. It's soft of like saying "what | can I do with a RISC-V CPU". The answer is "not much until we | make more infrastructure that supports it. | | Right now you can port large C code bases over to run in a | browser with emscripten so that's nice. Maybe you'll write a | web component using WASM at some point. | mysterydip wrote: | Thank you for the explanation! Time to read up on | emscripten. | EMM_386 wrote: | > Right now you can port large C code bases over to run in | a browser with emscripten so that's nice. Maybe you'll | write a web component using WASM at some point. | | But doesn't this have the potential for a massive, paradigm | shift in how we look at the "web"? | | Take just one example, a GC language like C# or Java being | able to run under WASM (inside a web browser?). | | It could bypass HTML, CSS, and JS entirely and just run as | if it were a desktop application. | | Doesn't this lead us down the rabbit hole back to Java | applets, Flash plugins and other similar plugins, albeit | more secure/sandboxed? | | If every website is free to render a button using any | programming language it wants, there is no longer any | standardization, accessibility features, a layout engine, | etc. | | What is the point of a "web browser" at all, if all it does | is host a WASM-based application? | | I think that's the part where my brain starts to give up. | jayd16 wrote: | I might be wrong but I think you can conceptualize like this... | | Wasm is essentially a target bytecode and runtime based on the | well tread security model of javascript in the browser. | | Browsers can run it, languages can compile to it, apps of any | language can host a runtime that runs it. This leads to | infinite permutations and nesting of concepts. | | Because its web tech there's a dozen ways to do the same thing. | miohtama wrote: | > Where are we headed with all of this? | | To the future where Silicon Valley funded startups try to find | angles to extract value from WASM. A lot of competing efforts | with different business models. | | Hopefully in the end we get good VC funded open source and can | discard any too aggressive monetisation attempts. | benatkin wrote: | Uh oh, they still don't seem to have fully relinquished their | claims to the name "WebAssembly". Their vscode package is listed | under "WebAssembly Foundation". | | https://marketplace.visualstudio.com/publishers/dtsvet | syrusakbary wrote: | It's been this way for a little bit already (actually since 3 | years ago! [1]). | | It was an intentional thing though, because we want to put this | extension under a common group, not something that only Wasmer | owns... that's why we haven't changed it yet. But I agree that | probably using WebAssembly Foundation is perhaps not the best | name :) | | [1]: https://github.com/wasmerio/vscode- | wasm/commit/0f7f00f44aa72... | benatkin wrote: | WebAssembly Foundation is a misleading name. WebAssembly has | a foundation, just not a separate one. It's W3C. | | https://en.wikipedia.org/wiki/WebAssembly | | I like that OpenJS Foundation is called OpenJS Foundation and | not JS Foundation. | | That said, the main thing I object to is the trademark. | syrusakbary wrote: | You actually gave me a great idea! Perhaps we can rename it | to OpenWasm Foundation (I think that's a great name, your | suggestion inspired me). I will discuss with more people to | see what name will make more sense to rename it to. | | And please let me know if you have other suggestions! | benatkin wrote: | Good luck. I wouldn't mind having multiple organizations. | The Bytecode Alliance is great but I would rather people | recognize that WebAssembly belongs to the W3C (or | everyone via the W3C if you prefer to think of it that | way) and not them or the CNCF. | syrusakbary wrote: | > I would rather people recognize that WebAssembly | belongs to the W3C (or everyone via the W3C if you prefer | to think of it that way) and not them | | I 300% agree with you on this | themgt wrote: | Interesting little discussion linked about this fork of WAI from | wit-bindgen: | | https://github.com/bytecodealliance/wit-bindgen/issues/306 | hardwaresofton wrote: | Interesting, sounds like the. Kubernetes in tree vs out of tree | + CSI situation. | | In the end the real solution was this: | | > All host generators are being removed from this repository | for example here and here. The JS generator will eventually | move to its own repository as well, just takes time. | | Should have been what they did from the start. Thread was | informative with regards to understanding where the rifts in | the community are and how people think though. | laerus wrote: | Ah it's these guys that tried and still try to hijack the glory | of webassembly just for their startup to succeed. Wasmer is | doomed to fail cause it's leadership smells fishy. | | Btw a packaging solution has already started to be designed by | the people that actually care about the wasm ecosystem, so it's | not going to be wapm. | syrusakbary wrote: | Hi, I'm Syrus from Wasmer. I usually try not to get drawn into | hate comments that don't add any value, but I'll make an | exception today as it's sunny here in San Francisco! | | We care deeply about the Wasm ecosystem. In fact, we care so | much that we are wary of putting it at mercy of the big tech. | Wasm is a beautiful community that should embrace many points | of view, starting from the Web and permeating back to the | servers. | | I think is a strength to collaborate, to let developers with | different points of view discuss without forcing one unique | point of view on all. Unfortunately it will not be a surprise | for some to learn that certain players on the industry want to | force their unique perspective on the rest, where only "one | way" is the right way of doing things. I'm betting my horses (I | have two parked in the hallway), that the packaging initiative | that you are talking about comes from these groups. | | Thankfully, Wasmer is probably one of the few companies with | great context on how to do a Package Manager in WebAssembly (we | started it 3 years ago, and got tons of learnings since then!), | so just trying to replicate without collaboration seems like a | big mistake (best of luck to them there!). | | In any case, I'm not the only person that feels this way and I | know this feeling is shared by big part of the Wasm community. | | I wrote a bit more about this here as well: | https://news.ycombinator.com/item?id=33805585 | remram wrote: | > hijack the glory of webassembly just for their startup to | succeed | | What do you mean by that? What are they doing, apart from | existing as a company in the webassembly ecosystem? | klabb3 wrote: | One of the most exciting aspects of wasm is a safer and more | expressive API surface for universal FFI. Currently, the lowest | common denominator is the C ABI. In the future, it could be wasm. | | Obviously wasm can be much more, but just that alone can be | really useful. | | * No custom language-A to language-B bindings necessary, only 1 | wasm binding per lang. That's O(N) bindings in total, instead of | O(N^2), which isn't feasible and that's why we don't have Julia- | intercal or PHP-Java today (or maybe we do?) | kllrnohj wrote: | WASM is entirely unrelated to that issue. If you want to | "solve" cross-language interop & ABI surfaces, you want | something like COM. | duped wrote: | That's exactly what the component model defines, but it looks | to be more useful than COM or CORBA. | | https://github.com/WebAssembly/component- | model/blob/main/des... | panic wrote: | How would (e.g.) strings work in this FFI, considering that | wasm doesn't have a built-in string type or any way to pass | variable-length data to a function without allocating space for | it in the instance's memory, and languages have different | native string representations (UTF-8 vs UTF-16 vs "UTF-16")? | jayd16 wrote: | No one said it would be cheap or allocation free. | beached_whale wrote: | I did a test of an ALU/BP(non-vecorized JSON deserialization) | heavy library last year and the price of Wasmer/wasm was only | about 20-25%. For many things, that's not going to even be | noticed. | ilaksh wrote: | What I want is to be able to call another web assembly library | from inside of one. ___________________________________________________________________ (page generated 2022-12-02 23:00 UTC)