Announcing the Bytecode Alliance
a vision of a WebAssembly ecosystem that is secure by default, fixing cracks in today’s software foundations". The alliance is currently working on a standalone WebAssembly runtime, two use-case specific runtimes, runtime components, and language tooling.
Posted Nov 13, 2019 19:58 UTC (Wed)
by Kamilion (guest, #42576)
[Link] (2 responses)
On the upside, at least they picked Rust. And then went and implemented their own wacky cross platform libc without first class processes.
Even Web-HID and Web-USB doesn't really scare me half as much, since by nature they're limited to certain VID/PID combinations and can't wildcard match.
Looks like it's mostly Fastly pushing forward on this, with Mozilla pushing for Rust, Intel pushing for quirk preservation on their arch and IBM pushing for wider platform support. Including an IoT runtime... that doesn't target FreeRTOS.
*sigh*
I hope this is enough cynicism for everyone else, and y'all can look on the brighter side.
Posted Nov 14, 2019 12:05 UTC (Thu)
by Kamiccolo (subscriber, #95159)
[Link]
Posted Nov 15, 2019 20:46 UTC (Fri)
by Lennie (subscriber, #49641)
[Link]
https://www.destroyallsoftware.com/talks/the-birth-and-de...
Posted Nov 13, 2019 22:01 UTC (Wed)
by ballombe (subscriber, #9523)
[Link] (4 responses)
Posted Nov 13, 2019 22:38 UTC (Wed)
by heftig (subscriber, #73632)
[Link] (2 responses)
Posted Nov 14, 2019 16:35 UTC (Thu)
by mageta (subscriber, #89696)
[Link]
Posted Nov 14, 2019 23:09 UTC (Thu)
by flussence (guest, #85566)
[Link]
Ironically the only things consuming more than 4GB on mine are also the ones with wasm runtimes. Firefox has a single process consuming 20.6GB vm, and liferea has no less than two hundred and sixty two gigabytes reserved for displaying a dozen RSS feeds. They get very angry and confused when I turn overcommit off.
Posted Nov 14, 2019 21:28 UTC (Thu)
by roc (subscriber, #30627)
[Link]
Posted Nov 14, 2019 21:28 UTC (Thu)
by yodermk (subscriber, #3803)
[Link] (12 responses)
Posted Nov 15, 2019 12:30 UTC (Fri)
by eru (subscriber, #2753)
[Link]
Then there is Microsoft's CLI (the one originally made for C#), which does support a C++ implementation (by Microsoft), which that should prove it is flexible enough (lit of CLI languages https://en.wikipedia.org/wiki/List_of_CLI_languages). But I guess its association with Microsoft makes people wary of basing open source projects on it (even though there has long been an open-source implementation of the runtime).
Posted Nov 15, 2019 12:55 UTC (Fri)
by CChittleborough (subscriber, #60775)
[Link] (10 responses)
It is important to note that WebAssembly is a moving target. Right now, it is good for arithmetic (integer and floating-point). Work is already under way to properly support structures, references, arrays etc. Separately, the project is developing WASI, which plays similar role to libc in POSIX systems. WASI is intended for tight sandboxing, so it uses capabilities (drawing inspiration from CloudABI and Capsicum) rather than POSIX permissions.
So WASM will one day let you write code in C, C++, Rust etc against WASI and produce .wasm files that (1) can run in any contemporary browser, (2) have great security (enough that you can safely run untrusted .wasm modules) and (3) are relatively easy to translate into optimized machine code. Yes, it is a form of write-once-run-anywhere (‘compile-once-run-anywhere’?) like the JVM, only with less overhead and better performance.
The folks working on WebAssembly realized early on that it would also be very useful outside the browser. For example, once WASM runtimes are widely available, software can be published in compiled form as one set of .wasm files that can be run on most any computer. Smaller project teams such as indy game developers might find this really attractive.
Posted Nov 15, 2019 22:52 UTC (Fri)
by atai (subscriber, #10977)
[Link] (9 responses)
Posted Nov 15, 2019 23:05 UTC (Fri)
by Cyberax (✭ supporter ✭, #52523)
[Link] (7 responses)
Posted Nov 16, 2019 16:09 UTC (Sat)
by eru (subscriber, #2753)
[Link] (2 responses)
Posted Nov 16, 2019 16:38 UTC (Sat)
by excors (subscriber, #95769)
[Link] (1 responses)
Posted Nov 16, 2019 18:40 UTC (Sat)
by eru (subscriber, #2753)
[Link]
Posted Nov 18, 2019 15:16 UTC (Mon)
by ballombe (subscriber, #9523)
[Link] (3 responses)
Posted Nov 18, 2019 16:35 UTC (Mon)
by excors (subscriber, #95769)
[Link] (2 responses)
Posted Nov 18, 2019 22:50 UTC (Mon)
by ballombe (subscriber, #9523)
[Link] (1 responses)
Posted Nov 19, 2019 5:49 UTC (Tue)
by eru (subscriber, #2753)
[Link]
Posted Nov 16, 2019 18:30 UTC (Sat)
by thoughtpolice (subscriber, #87455)
[Link]
But then you're just implementing a compiler. At that point, you might as well call a spade a spade, and just generate code for a target that actually can be implemented efficiently in hardware. Though WASM is small and has fully specified semantics, so you can potentially do that in a trusted codebase at a transparent level (firmware) that would make the distinction a little less important anyway. And if you make that transparent, you have a level of hardware independence where you can play with performance improvements you couldn't safely try in a more general purpose CPU. Long live AS/400, I suppose!
Posted Nov 17, 2019 16:12 UTC (Sun)
by hannada (guest, #4633)
[Link] (4 responses)
Posted Nov 17, 2019 16:46 UTC (Sun)
by bof (subscriber, #110741)
[Link]
The CVEs of the 20ies will tell.
Posted Nov 17, 2019 17:14 UTC (Sun)
by micka (subscriber, #38720)
[Link]
Posted Nov 17, 2019 19:12 UTC (Sun)
by Cyberax (✭ supporter ✭, #52523)
[Link]
Posted Nov 18, 2019 8:30 UTC (Mon)
by roc (subscriber, #30627)
[Link]
Java's problems were mostly in part #2.
#2 is mostly outside the scope of WebAssembly proper, but in the context of browser-hosted WebAssembly, those APIs are almost exactly just the APIs that the browser already exposes to JS. Thus, WebAssembly doesn't add new attack surface there. (In contrast, PNaCl did add a lot of new attack surface via the Pepper API, which is one reason non-Chromium browser vendors didn't want PNaCl.)
Announcing the Bytecode Alliance
So we get the most annoying quirks of POSIX compliance, none of the wonderful libuv goodness, and the bonus feature of timestamps that are intentionally skewed for anti-advertiser privacy, and the security model relies on passing a file descriptor of a directory.
Gee. I wonder what kind of trouble I could get into if that directory was /dev because I was trying to use some tool similar to Balena Etcher?
Announcing the Bytecode Alliance
Announcing the Bytecode Alliance
Announcing the Bytecode Alliance
Announcing the Bytecode Alliance
Announcing the Bytecode Alliance
Announcing the Bytecode Alliance
Announcing the Bytecode Alliance
Use case?
The only rationale I can think of is that JVM is not completely universal: it has limitations by design that make implementing C or C++ efficiently hard. On the other hand, that has not prevented using the JVM for a number of other languages (a rather long list at https://en.wikipedia.org/wiki/List_of_JVM_languages).
Use case?
Portable low-level *compiled* code
Portable low-level *compiled* code
Portable low-level *compiled* code
Portable low-level *compiled* code
Portable low-level *compiled* code
Portable low-level *compiled* code
Portable low-level *compiled* code
Portable low-level *compiled* code
Portable low-level *compiled* code
Portable low-level *compiled* code
Portable low-level *compiled* code
The Elephant in the Sandbox
The Elephant in the Sandbox
The Elephant in the Sandbox
If so (AFAIK) you won't have wasm execution.
if not wasm executes with the same constraints in the same sandbox as js (actually there are more constraints like no DOM).
The Elephant in the Sandbox
The Elephant in the Sandbox
1) Sandboxing the executed code (e.g. so it can't touch arbitrary memory or achieve unsupervised code execution)
2) Securing the *APIs* that it uses to talk to the world outside the sandbox.