wizer
wasmtime
wizer | wasmtime | |
---|---|---|
10 | 182 | |
974 | 15,740 | |
1.5% | 1.8% | |
7.6 | 9.9 | |
5 months ago | about 10 hours ago | |
Rust | Rust | |
Apache License 2.0 | Apache License 2.0 |
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.
wizer
-
RustPython
> once by the wasm runtime to compile the rust-python wasm
I'm not sure what you mean by that. The runtime doesn't compile WASM, it simply executes it.
There are tools for dealing with interpreter runtime overhead this by pre-initalizing the environment like Wizer[0]. ComponentizeJS[1] uses it to pre-initialize the Spidermoney engine it packages to gain fast startup times (and you can then prune the initialization only code with wasm-opt). As techniques like ComponentizeJS are also being applied for a specific set of interpreted files, you can even prune parts of the interpreter that would never be used for that specific program. If you want to go even further you could record specific execution profiles and optimize further by those.
[0]: https://github.com/bytecodealliance/wizer
[1]: https://github.com/bytecodealliance/ComponentizeJS
- Are V8 isolates the future of computing?
-
Netlify Edge Functions: A new serverless runtime powered by Deno
Edge functions are typically run intermittently, with their runtime stopped to free up resources between runs. Therefore a big factor is startup and shutdown speed. Containers are pretty bad there. Deno is better, and WASM is unbeatable, especially with things like Wizer[0].
[0]https://github.com/bytecodealliance/wizer
-
Building a WebAssembly-powered serverless platform
I imagine startup cost could be amortized by something like wizer: https://github.com/bytecodealliance/wizer
-
Containerless! How to Run WebAssembly Workloads on Kubernetes with Rust
There are security benefits to running each request in its own instance, as it helps prevent accidental leaking of state between requests. To avoid doing lots of expensive initializations, we have a tool called wizer which lets users run their program's initialization once, create a snapshot, and then use that snapshot to do fast startups that don't rerun the whole initialization each time.
-
Is it possible in Rust to save the complete state of a program and restore it later? Such as may be accomplished in some implementations of Common Lisp
See https://github.com/bytecodealliance/wizer for an implementation of this approach.
-
Bytecode Alliance
It should probably be named "Making JavaScript to startup fast on WebAssembly", since the runtime speed is not really improved by the approach they exposed.
Besides that I think Wizer [1] is both an elegant and a simple solution to speed up startup speed with Wasm.
[1] - https://github.com/bytecodealliance/wizer#using-wizer-as-a-l...
-
A JavaScript optimizing compiler
A similar project, for WebAssembly so with limited scope is this: https://github.com/bytecodealliance/wizer. And somehow similar but limited on LLVM IR a colleague worked on this for Cheerp (the compiler used here as backend): https://github.com/leaningtech/cheerp-meta/wiki/Cheerp-PreExecuter.
- Wizer: snapshot an initialized Wasm instance and save the result as a new, pre-initialized Wasm module. Up to 6x faster start up on my test workloads
- Wiser: snapshot an initialized Wasm instance and save the result as a new, pre-initialized Wasm module. Up to 6x faster start up on my test workloads
wasmtime
-
Wild โ A Fast Linker for Linux
Very similar, but Wasm has additional safety properties and affordances. I am trying to get away from dynamic libs as an app extension mechanism. It is especially nice when application extension is open to end users, they won't be able to crash your application shell.
https://wasmtime.dev/ https://github.com/bytecodealliance/wasmtime
-
Tilde, My LLVM Alternative
>So one of the main problems you run into is that your elegant solution only works about 60-80% of the time. The rest of the time, you end up falling back onto near-unmaintainable, horribly inelegant kludges that end up having to exist
This is generally true, though for small compiler backends they have the luxury to straight up refuse to support such use cases. Take QBE and Cranelift for example, the former lacks x87 support [1], the latter doesn't support varargs[2]; which means either of them support the full x86-64 ABI for C99.
[1]https://github.com/michaelforney/cproc?tab=readme-ov-file#wh...
[2]https://github.com/bytecodealliance/wasmtime/issues/1030
-
Introducing our Next-Generation JavaScript SDK
Standards help in a completely different way, too: since all of the HTTP support is now built using wasi-http, applications built with the new SDK that donโt make use of the Spin-specific APIs we also support can run in any environment that supports wasi-http, such as Wasmtime and Node.js (via JCO).
-
Building And Running WASM Apps
If youโre on Windows, check out the precompiled packages: https://github.com/bytecodealliance/wasmtime/releases
-
Query Your Python Lists
You should look at embedding Wasmtime into your C.
https://github.com/bytecodealliance/wasmtime/tree/main/examp...
-
Introducing Spin 3.0
And a special thank you to everyone who has been contributing and continues contribute to the WebAssembly ecosystem particularly to the maintainers of the Bytecode Alliance projects, the Wasmtime project and the developers working on WASI and the WebAssembly component model. Their work is instrumental in supporting Spin.
-
Spin 3.0 โ open-source tooling for building and running WASM apps
For the audience that would be looking to use the WASM Component Model, and not be an infrastructure implementer of it, whether or not they meet some definition of a method, the component model does define things called resources [1] that have "methods". You'll hold a "handle" to it like you would in your own programming language with the expected drop and/or GC semantics (once implemented [2]) because code is generated to access it like any other FFI like C/C++.
With that in mind, the other confusing thing one may come across is composition vs linking within your WASM runtime that supports the Component Model. When you hear "composition" think of compile-time merging of libraries such that the bundle may have less unresolved dependencies of WASM code/implemented component interfaces. Anything unresolved needs to be linked at runtime with your WASM runtime of choice, like wasmtime [3]. Pretty interesting reading/potential after reading if you ask me -- sounds like you could implement something like a custom Java classloader hierarchy.
But I'd agree with a statement saying it is still a long way for general usage.
[1] https://github.com/WebAssembly/component-model/blob/5a34794d...
[2] https://github.com/WebAssembly/gc
[3] https://github.com/bytecodealliance/wasmtime/blob/ba8131c6bf...
[4] https://www.digitalocean.com/community/tutorials/java-classl...
-
Ask HN: Fast data structures for disjoint intervals?
Since you're using Rust, the Cranelift JIT compiler implements something like this[0] to construct an e-graph for its expression rewriting subsystem called ISLE, however if I'm not mistaken it is for disjoint sets (not intervals), and therefore it does not deal with ordering.
Maybe you can adapt it for your use case and add those new constraints in?
Keep in mind though that this was not written to be in the hot-path itself, you could probably do significantly better by pouring your soul into some SIMD adventure (though SIMD in Rust is usually very annoying to write)
Best of luck, hope this helps!
[0] https://github.com/bytecodealliance/wasmtime/blob/7dcb9bd6ea...
-
wasmtime VS lambda-mountain - a user suggested alternative
2 projects | 10 Jun 2024
-
Backdoor in upstream xz/liblzma leading to SSH server compromise
Just a documentation change, fortunately:
https://github.com/bytecodealliance/wasmtime/commits?author=...
They've submitted little documentation tweaks to other projects, too, for example:
https://learn.microsoft.com/en-us/cpp/overview/whats-new-cpp...
I don't know whether this is a formerly-legitimate open source contributor who went rogue, or a deep-cover persona spreading innocuous-looking documentation changes around to other projects as a smokescreen.
What are some alternatives?
TablaM - The practical relational programing language for data-oriented applications
wasmer - ๐ Fast, secure, lightweight containers based on WebAssembly
quickjs-emscripten - Safely execute untrusted Javascript in your Javascript, and execute synchronous code that uses async functions
SSVM - WasmEdge is a lightweight, high-performance, and extensible WebAssembly runtime for cloud native, edge, and decentralized applications. It powers serverless apps, embedded functions, microservices, smart contracts, and IoT devices.
wagi - Write HTTP handlers in WebAssembly with a minimal amount of work
wazero - wazero: the zero dependency WebAssembly runtime for Go developers
cheerp-meta - Cheerp - a C/C++ compiler for Web applications - compiles to WebAssembly and JavaScript
wasm3 - ๐ A fast WebAssembly interpreter and the most universal WASM runtime
go-wasm-bake - Experimenting with eager evaluation of Go WASM code
mold - Mold: A Modern Linker ๐ฆ
wasm-bindgen - Facilitating high-level interactions between Wasm modules and JavaScript