[HN Gopher] Wasm3 compiles itself (using LLVM/Clang compiled to ... ___________________________________________________________________ Wasm3 compiles itself (using LLVM/Clang compiled to WASM) Author : theBashShell Score : 57 points Date : 2021-04-23 17:11 UTC (1 days ago) (HTM) web link (twitter.com) (TXT) w3m dump (twitter.com) | nindalf wrote: | For those wondering, Wasm3 describes itself as "the fastest | WebAssembly interpreter". Other webassembly runtimes are JIT | based, rather than being interpreters. The project's readme | (https://github.com/wasm3/wasm3) talks more about this decision. | | For more on the difference, and an explanation of what JIT is, | check out this section of the book Crafting Interpreters | (https://craftinginterpreters.com/a-map-of-the-territory.html...) | Dylan16807 wrote: | > Other webassembly runtimes are JIT based, rather than being | interpreters. | | Do none of the notable ones do normal compilation? | jedisct1 wrote: | WAVM and SSVM do normal compilation. | the_duke wrote: | Some runtimes like wasmtime support AOT compilation artifacts | that can be loaded. | | But in general you can't "just compile" Webassembly, because | you need a runtime. | | There is a C project that can compile an executable that | includes the runtime and the compiled WASM, but the name is | escaping me right now. | | Note that JIT in the WASM world doesn't quite mean the same | thing as for eg Java. Almost all runtimes compile a whole | module at once, not individual functions. | TazeTSchnitzel wrote: | What would the difference be between "JIT" and "normal" | compilation for WebAssembly? | smasher164 wrote: | An AOT compiler would do a one-time translation to a | platform-specific binary. | | If the environment you run on doesn't support JIT | compilation (iOS for example), AOT compiling WASM is | useful. | Blikkentrekker wrote: | How can a platform not support j.i.t. compilation? | | In what way does a platform need to cooperate with that? | Dylan16807 wrote: | So mostly I'm interested in compilers that compile the | entire thing before any execution happens. Technically both | AoT and JIT compilers can do that, but 95% of the things | associated with "JIT" involve compiling the program one | piece at a time. | | But even with the broad definition of JIT, one important | difference is that AoT compilers don't have to mark pages | executable. | rubatuga wrote: | I feel the need to repost this link: | | https://www.destroyallsoftware.com/talks/the-birth-and-death... | tyingq wrote: | I'm somewhat curious at what pace WASM will gain "market share" | while it's only practical to target it with C, C++, Rust, etc. | | Supposedly, there are plans to expand it to where it looks more | like a virtual machine and less like ASM. Adding things like | garbage collection, direct DOM manipulation, polymorphic inline | cache, etc. Things that would make it possible to run a decent | scripting language without pulling in some huge runtime. | | Or forgetting the scripting languages, just the direct DOM | access might make it less tedious to use with compiled | languages. | | It's sort of a second run at getting "applets" right, but in a | cross-language way. | kindofajsdev wrote: | I'm a newer dev so pardon my ignorance. Is webassembly the new, | more open JVM? Feels like that write once, run everywhere but | this time with any(most) mainstream language. | brokensegue wrote: | Wasm lacks a lot of lower level system specific operations that | the jvm offers. | tyingq wrote: | It seems like it's headed that way. At the moment, it's only | really practical to generate WASM from compiled languages, or | really small languages, like Lua. And your interfaces to the | browser (and thus, the outside world) itself are pretty | limited, so still lots of javascript involved. | vvanders wrote: | Can confirm that Lua does run in WASM in the browser: | https://github.com/vvanders/wasm_lua | | I sometimes wonder what the world would be like if Lua had | zero based indices and saw a bit broader adoption. It's such | an easy language to embed/extends although QuickJS looks like | it's going to give it a run for the money in the long term | given the similar goals on ease of embedding. | | I wonder if anyone has compiled QuickJS to WASM and run it in | the browser. | nynx wrote: | In a way, but wasm is designed to be a lot better at | sandboxing. ___________________________________________________________________ (page generated 2021-04-24 23:00 UTC)