SaaSHub helps you find the best software and product alternatives Learn more β
Top 23 Rust WebAssembly Projects
-
slint
Slint is a declarative GUI toolkit to build native user interfaces for Rust, C++, or JavaScript apps.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
spin
Spin is the open source developer tool for building and running serverless applications powered by WebAssembly.
-
boa
Boa is an embeddable and experimental Javascript engine written in Rust. Currently, it has support for some of the language.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
extism
The framework for building with WebAssembly (wasm). Easily load wasm modules, move data, call functions, and build extensible apps.
-
plotters
A rust drawing library for high quality data plotting for both WASM and native, statically and realtimely π¦ ππ
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Project mention: Bebop v3: a fast, modern replacement to Protocol Buffers | news.ycombinator.com | 2024-03-12This is awesome. I'd love to have upstream support in Wasmer ( https://wasmer.io )
Project mention: Ask HN: Why would you ever use C++ for a new project over Rust? | news.ycombinator.com | 2024-04-02Did you get a chance to check https://slint.dev?
Disclaimer: I work for Slint
Lots of new frontend frameworks have been built on top of Rust, including Leptos, which happens to be one of the most popular ones. In this guide, we'll highlight why and how to migrate your JavaScript frontend to use the Leptos Rust frontend framework.
Project mention: Backdoor in upstream xz/liblzma leading to SSH server compromise | news.ycombinator.com | 2024-03-29Just 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.
For example, here's a snippet of my Git config for the spin repository:
Project mention: A list of JavaScript engines, runtimes, interpreters | /r/learnjavascript | 2023-12-10boa
This reminds me of Lunatic [1], an Erlang-inspired runtime for WebAssembly. Unfortunately it seems like development stalled some months ago.
[1] https://lunatic.solutions/
Practically every Rust web frontend I've seen takes a react-like approach, with "hooks" to store all of the state in. The now-abandoned Seed and Yew's struct components use a message-passing approach, where the state is stored as member variables on the struct representing the component that are updated based on messages dispatched by event handlers. There's also egui, which has a completely different paradigm that involves making the UI from scratch every frame based on the app's current state. It's not a web framework the same way as the others, but it can draw its UI to a web canvas just fine.
Project mention: Extism β make all software programmable. Extend from within | news.ycombinator.com | 2024-04-08
plotter-rs Cairo backend: Specific backend to interact with a gtk-rs DrawingArea widget.
Project mention: Ask HN: What's the best way to add search to my website? | news.ycombinator.com | 2023-10-08If your content is mostly static, you might want to consider pre-building an index and shipping it as a whole. You could look into something like
* https://stork-search.net/ (Rust/WASM)
* tinysearch: https://github.com/tinysearch/tinysearch (Rust/WASM)
* https://lunrjs.com/ (JS, simple, stable)
* http://elasticlunr.com/ - based on the former, slightly more sophisticated tuning options
Perseus is a fast frontend web development framework for Rust with built-in support for reactivity using Sycamore, server-side rendering, and much more. Sycamore is a frontend library that allows you to build interactive user interfaces with Rust. Iβd say that Perseus is to Sycamore as Next.js is to React, so itβll be helpful for you to have a fair understanding of Sycamore before jumping into using Perseus β although itβs not necessary to follow along in this article.
Project mention: GlueSQL v0.14 Release - Schemaless data support and the official doc website | /r/rust | 2023-05-30
Project mention: Show HN: OS Image processing API running on edge functions using Rust and WASM | news.ycombinator.com | 2024-04-04Image processing/transformations with built-in CDNs is one of the more common solutions you would find out there but can get pretty expensive and locked in over time.
Vercel is a good example that provides a built-in βnext/imageβ solution for the NextJS framework that optimises images for better performance, however, it gets very expensive as you scale.
Alternatively, running your own service with one of the most common image processing libraries like SharpJS is great but can get pretty difficult to run in a serverless environment with CDNs and all the other bells and whistles alongside all your other code while the cold startup time of Sharp in a serverless environment can be pretty brutal.
With all the growth around rebuilding engines in Rust for performance gains, I thought there must be an image processing library written in Rust which could be compiled to WebAssembly (WASM) and run way faster. Thatβs when I discovered Photon https://github.com/silvia-odwyer/photon by Silvia, who has done amazing work with the library.
This eventually led me to discover https://github.com/fineshopdesign/cf-wasm/tree/main/packages... that has already transcribed the Photon package into a WASM binary for easy use in edge v8 environments like Cloudflare workers or NextJS Edge functions.
Using these packages I built an API layer on the NextJS framework allowing you to easily process local and remote images at blazing fast speeds with a bunch of helper functions making it similar to use as most paid Image processing APIs. If hosted on Vercel, you can make use of the built-in CDN cache for files less than 10 MB at no extra charge with Edge caching.
Some of the features:
- Blazing fast image processing
- Fully serverless, runs on Vercel Edge functions
- Resize, crop, compress, tint, rotate, format and more
- Global distribution with Edge functions
- Automated CDN cache with Edge functions
- Replacement for `next/image` processing on Vercel
- Local and remote image processing
Some problems:
- The Photon lib has last been updated in 2020
- There are still a few obvious bugs when using it for more advanced requirements like 8k image processing on edge function due to poor memory management in Rust
- No sexy features right now like AI image optimisation and selective background blurring
- If you are looking for an all-in-one solution with Image Storage + image processing/CDN, this is not it (something we will be releasing soon on JigsawStack.com)
I think the Photon library and the API have a lot more potential for growth and will be hoping for more contributions from the community as Rust gets more popular!
- The speed of the Python interpreter running in WebAssembly
Today, Python cold starts are slower than cold starts for a JavaScript Worker of equivalent size. A basic "Hello World" Worker written in JavaScript has a near zero cold start time, while a Python Worker has a cold start under 1 second.
That's because we still need to load Pyodide into your Worker on-demand when a request comes in. The blog post describes what we're working on to reduce this β making Pyodide already available upfront.
Once a Python Worker has gone through a cold start though, the differences are more on the margins β maybe a handful milliseconds, depending on what happens during the request.
- There is a slight cost (think β microseconds not milliseconds) to crossing the "bridge" between JavaScript and WebAssembly β for example, by performing I/O or async operations. This difference tends to be minimal β generally something measured in microseconds not milliseconds. People with performance sensitive Workers already write them in Rust https://github.com/cloudflare/workers-rs, which also relies on bridging between JavaScript and WebAssembly.
- The Python interpreter that Pyodide provides, that runs in WebAssembly, isn't as fast as the years and years of optimization that have gone into making JavaScript fast in V8. But it's still relatively early days for Pyodide, compared to the JS engine in V8 β there are parts of its code where we think there are big perf gains to be had. We're looking forward to upstreaming performance improvements, and there are WebAssembly proposals that help here too.
Rust WebAssembly related posts
-
Wasmcloud 1.0 Release Notes
-
CNCF WasmCloud 1.0
-
Show HN: Kiwi β End-to-End Kafka Subscriptions with WebAssembly
-
Spinkube: Running WASM in Kubernetes
-
Unlocking the Power of WebAssembly
-
NoteCalc 0.4.0
-
Ants Geopolitics
-
A note from our sponsor - SaaSHub
www.saashub.com | 1 May 2024
Index
What are some of the best open-source WebAssembly projects in Rust? This list will help you:
Project | Stars | |
---|---|---|
1 | wasmer | 17,786 |
2 | slint | 15,103 |
3 | leptos | 14,658 |
4 | wasmtime | 14,461 |
5 | genact | 8,935 |
6 | spin | 4,862 |
7 | boa | 4,694 |
8 | lunatic | 4,529 |
9 | Seed | 3,787 |
10 | extism | 3,757 |
11 | Ambient | 3,728 |
12 | lumen | 3,582 |
13 | plotters | 3,532 |
14 | Rhai | 3,472 |
15 | stdweb | 3,433 |
16 | artichoke | 2,993 |
17 | sandspiel | 2,915 |
18 | stork | 2,712 |
19 | sycamore | 2,677 |
20 | fluvio | 2,638 |
21 | gluesql | 2,599 |
22 | photon | 2,481 |
23 | workers-rs | 2,273 |
Sponsored