wizard-engine
Web49
Our great sponsors
wizard-engine | Web49 | |
---|---|---|
6 | 3 | |
295 | 323 | |
- | 1.2% | |
9.7 | 5.0 | |
3 days ago | 12 months ago | |
WebAssembly | WebAssembly | |
- | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
wizard-engine
- Show HN: WebAssembly Instrumentation in the Wizard Research Engine
-
Push ifs up and fors down
I think I would like the former syntax. Witness one of the several nested matching situations I run into:
https://github.com/titzer/wizard-engine/blob/master/src/engi...
This would be much, much better if Virgil had pattern matching on tuples of ADTs.
-
Wasmtime 1.0
Congrats to the Wasmtime team on the 1.0 release!
I'm happy to see that more runtimes are maturing and getting use on production cases... I can't wait to see and show what the future entails for WebAssembly on both the server side and the browser!
Keep up the good work. Also I'd like to use this message to congratulate other runtimes that I'm excited about (apart from Wasmer, of course!): Wizard Engine [1], Wazero [2] and Lunatic [3].
The future is bright in Wasm land :)
[1] https://github.com/titzer/wizard-engine
[2] https://github.com/tetratelabs/wazero
[3] https://github.com/lunatic-solutions/lunatic
- A fast in-place interpreter for WebAssembly
-
Evil programmer's tip: avoid “easy” things
A classic "easy" thing that appears "hard": write a little bit of assembly. Note, a little bit[1].
Writing assembly, again, in small amounts, is exactly the kind of thing that is difficult to start, and fails spectacularly if you have little experience. Debugging is a pain. But you can totally get the hang of writing assembly, and as long as you are doing it for the right reasons (TM), it's justified, and heroic. The key is you need to write and debug a little at a time.
Case in point, I wrote an entire Wasm interpreter[2] in x86-64 asm over the past few months. I wrote it a little at a time, had lots of unit tests, and am working in an engine that was already working (with a slower interpreter).
[1] If you find yourself writing more than a few hundred assembly instructions in a sitting, you are going to fail. If you find yourself writing more than a few thousand assembly instructions, you have already failed.
[2] https://github.com/titzer/wizard-engine/blob/master/src/engi...
Web49
-
Show HN: I wrote a WebAssembly Interpreter and Toolkit in C
> I developed a unique way to write interpreters based on threaded code jumps and basic block versioning when I made MiniVM (https://github.com/FastVM/minivm). It was both larger and more dynamic than WebAssembly.
I'd be very interested to read more about this. It looks like you are using "one big function" with computed goto (https://github.com/FastVM/Web49/blob/main/src/interp/interp....). My experience working on this problem led me to the same conclusion as Mike Pall, which is that compilers do not do well with this pattern (particularly when it comes to register allocation): http://lua-users.org/lists/lua-l/2011-02/msg00742.html
I'm curious how you worked around the problem of poor register allocation in the compiler. I've come to the conclusion that tail calls are the best solution to this problem: https://blog.reverberate.org/2021/04/21/musttail-efficient-i...
What are some alternatives?
javy - JS to WebAssembly toolchain
wasm3 - 🚀 A fast WebAssembly interpreter and the most universal WASM runtime
VectorVisor - VectorVisor is a vectorizing binary translator for GPUs, designed to make it easy to run many copies of a single-threaded WebAssembly program in parallel using GPUs
owi - WebAssembly Swissknife
spidermonkey-wasi-embedding
assemblyscript - A TypeScript-like language for WebAssembly.
wasmer - 🚀 The leading Wasm Runtime supporting WASIX, WASI and Emscripten
serenity - The Serenity Operating System 🐞
wasmtime - A fast and secure runtime for WebAssembly
waforth - Small but complete dynamic Forth Interpreter/Compiler for and in WebAssembly
Viceroy - Viceroy provides local testing for developers working with Compute.
minivm - A VM That is Dynamic and Fast