blueboat
wizer
Our great sponsors
blueboat | wizer | |
---|---|---|
18 | 10 | |
1,918 | 875 | |
- | 3.4% | |
0.0 | 7.0 | |
about 1 year ago | 3 days 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.
blueboat
-
What's with All the Runtimes for JavaScript?
Right now it is an exciting time for JavaScript. We just got a new shiny fast runtime Bun, with the last new kid Deno being released only 4 years ago, and we have edge computing/serverless runtimes like Cloudflare worker and Blueboat. With all these hypes for the JavaScript community, I could not help but ask, how come only JavaScript gets all these fancy new runtimes? Why don’t we hear these more often in other languages?
- Blueboat
- Blueboat - All-in-one, multi-tenant serverless javascript runtime.
-
Show HN: Distributed SQLite on FoundationDB
Hello HN! I'm building mvsqlite, a distributed variant of SQLite with MVCC transactions, that runs on FoundationDB. It is a drop-in replacement that just needs an `LD_PRELOAD` for existing applications using SQLite.
I made this because [Blueboat](https://github.com/losfair/blueboat) needs a native SQL interface to persistent data. Apparently, just providing a transactional key-value store isn’t enough - it is more easy and efficient to build complex business logic on an SQL database, and it seems necessary to bring a self-hostable distributed SQL DB onto the platform. Since FoundationDB is Blueboat’s only stateful external dependency, I decided to build the SQL capabilities on top of it.
At its core, mvsqlite’s storage engine, mvstore, is a multi-version page store built on FoundationDB. It addresses the duration and size limits (5 secs, 10 MB) of FDB transactions, by handling multi-versioning itself. Pages are fully versioned, so they are always snapshot-readable in the future. An SQLite transaction fetches the read version during `BEGIN TRANSACTION`, and this version is used as the per-page range scan upper bound in future page read requests.
For writes, pages are first written to a content-addressed store keyed by the page's hash. At commit, hashes of each written page in the SQLite transaction is written to the page index in a single FDB transaction to preserve atomicity. With 8K pages and ~60B per key-value entry in the page index, each SQLite transaction can be as large as 1.3 GB (compared to FDB's native txn size limit of 10 MB).
mvsqlite is not yet "production-ready", since it hasn’t received enough testing, and I may still have a few changes to make to the on-disk format. But please ask here if you have any questions!
-
Show HN: Blueboat is an all-in-one, multi-tenant serverless JavaScript runtime
This sounds quite a bit like Cloudflare Workers, and they have a comparison page - https://github.com/losfair/blueboat/wiki/Comparison-with-Clo....
-
Are V8 isolates the future of computing?
> If one writes Go or Rust, there are much better ways to run them than targeting WASM
wasm has its place, especially for contained workloads that can be wrapped in its strict capability boundaries (think, file-encoding jobs that shouldn't access anything else but said files: https://news.ycombinator.com/item?id=29112713).
> Containers are still the defacto standard.
wasmedge [0], atmo [1], krustlet [2], blueboat [3] and numerous other projects are turning up the heat [4]!
[0] https://github.com/WasmEdge/WasmEdge
[1] https://github.com/suborbital/atmo
[2] https://github.com/krustlet/krustlet
- Blueboat - a batteries-included, multi-tenant serverless runtime written in Rust
- losfair/blueboat: Blueboat is an open-source alternative to Cloudflare Workers. The monolithic engine for serverless web apps.
- Blueboat, an open-source alternative to Cloudflare Workers
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.
- 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].
-
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
What are some alternatives?
bun - Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one
quickjs-emscripten - Safely execute untrusted Javascript in your Javascript, and execute synchronous code that uses async functions
jose - JWA, JWS, JWE, JWT, JWK, JWKS for Node.js, Browser, Cloudflare Workers, Deno, Bun, and other Web-interoperable runtimes.
TablaM - The practical relational programing language for data-oriented applications
deploy_feedback - For reporting issues with Deno Deploy
wasmtime - A fast and secure runtime for WebAssembly
mvsqlite - Distributed, MVCC SQLite that runs on FoundationDB.
go - The Go programming language
workers-sdk - ⛅️ Home to Wrangler, the CLI for Cloudflare Workers®
go-wasm-bake - Experimenting with eager evaluation of Go WASM code
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