Rust WebAssembly

Open-source Rust projects categorized as WebAssembly

Top 23 Rust WebAssembly Projects

  • GitHub repo wasmer

    🚀 The leading WebAssembly Runtime supporting WASI and Emscripten

    Project mention: I finally finished a 2-year-in-the-making arena-style AI competition platform! 😊 | reddit.com/r/SideProject | 2021-04-12

    We always run it inside of wasmer, which is fully sandboxed. The only access to resources we give it is some standard stuff like time/entropy, as well as access to a tempdir that has the robot source in a file.

  • GitHub repo genact

    🌀 A nonsense activity generator

    Project mention: Genact – A Nonsense Activity Generator | news.ycombinator.com | 2021-03-21
  • GitHub repo lucet

    Lucet, the Sandboxing WebAssembly Compiler.

    Project mention: Writing Rust the Elixir way | dev.to | 2020-11-26

    I also want to use this opportunity to say a big thank you to the teams working on Rust, Wasmer, Wasmtime, Lucet and waSCC. It would be impossible to build Lunatic without all the hard work put into this projects.

  • GitHub repo stdweb

    A standard library for the client-side Web

    Project mention: C developers will always have jobs. | reddit.com/r/rustjerk | 2021-02-13

    Wasted a few hours because of this: [1]

  • GitHub repo lumen

    An alternative BEAM implementation, designed for WebAssembly (by lumen)

    Project mention: Launch HN: Lunatic (YC W21) – An Erlang Inspired WebAssembly Platform | news.ycombinator.com | 2021-03-06
  • GitHub repo Seed

    A Rust framework for creating web apps

    Project mention: Showcase: A tracker for "Love Letter" in Rust/WASM | reddit.com/r/rust | 2021-04-02

    The tracker is of course written in Rust and compiled to WASM. It uses the Seed Framework. Layout is managed by CSS Grid and Flexbox, and general styling is thanks to Bulma.

  • GitHub repo plotters

    A rust drawing library for high quality data plotting for both WASM and native, statically and realtimely 🦀 📈🚀

    Project mention: How Safe Is Zig? | news.ycombinator.com | 2021-03-22

    > You can write very simple Rust

    Technically true, but only really true if you don't use many dependencies. At some point you're going to use some dependency that uses async/await all over the place or really goes wild with generics and then it is definitely not simple.

    Two examples:

    * Heim (https://docs.rs/heim/0.0.11/heim/) is a great crate for getting system info, but it only uses async/await so you are thrown into that rather painful world even if you don't need it.

    * Plotters (https://github.com/38/plotters) is a pretty great graph plotting library for Rust (the only one as far as I know), but they have definitely gone a bit overboard with the generics. Want to draw a scatter graph?

    I tried simply calling `PointSeries::new()` and got a basically impossible-to-follow error about Rust not being able to infer the type `E` here:

    https://github.com/38/plotters/blob/master/src/series/point_...

    Very simple it is not!

  • GitHub repo wasmer-python

    🐍🕸 WebAssembly runtime for Python

    Project mention: Replacing Javascript with Python ...... Python as client side langauge | reddit.com/r/AskProgramming | 2021-03-08
  • GitHub repo cargo-web

    A Cargo subcommand for the client-side Web

  • GitHub repo zemeroth

    😠⚔️😈 A minimalistic 2D turn-based tactical game in Rust

    Project mention: RustGameDev Podcast #4: Fedor Logachev (SHAR, miniquad, macroquad) | reddit.com/r/rust_gamedev | 2020-12-23

    Oh, I was really waiting for this episode as my Zemeroth game shares a lot of history with mini~ and macroquad. Here're some of my thoughts.

  • GitHub repo notecalc3

    NoteCalc is a handy calculator trying to bring the advantages of Soulver to the web.

    Project mention: Numi. Beautiful calculator app for Mac | news.ycombinator.com | 2021-03-29

    Since others already mentioned many fantastic alternatives, let me share mine: https://bbodi.github.io/notecalc3/

  • GitHub repo gluesql

    GlueSQL is quite sticky, it attaches to anywhere.

    Project mention: Rusticles #10 - Wed Sep 09 2020 | dev.to | 2020-09-09

    gluesql/gluesql (Rust): GlueSQL is quite sticky, it attaches to anywhere.

  • GitHub repo ink

    Parity's ink! to write smart contracts (by paritytech)

    Project mention: Tech noob here, is Substrate a coding language as Solidity? | reddit.com/r/dot | 2021-02-04

    If you're looking for a language for smart contract coding that has a Polkadot flavor, check out Ink

  • GitHub repo lam

    :rocket: a lightweight, universal actor-model vm for writing scalable and reliable applications that run natively and on WebAssembly (by AbstractMachinesLab)

    Project mention: LAM: an actor-model VM for WebAssembly and native | reddit.com/r/WebAssembly | 2021-03-02
  • GitHub repo serde-wasm-bindgen

    Native integration of Serde with wasm-bindgen

    Project mention: Rust/Wasm on AWS [email protected] | dev.to | 2021-03-15

    Some transformation overhead can be addressed by using serde-wasm-bindgen, but in my example repo I'll use it only for the input side (deserialization). On serialization a collection like HashMap or BTreeMap gets turned into an ES2015 Map, which is unfortunated as well, because they cannot be JSON stringified.

  • GitHub repo wasm-learning

    Building Rust functions for Node.js to take advantage of Rust's performance, WebAssembly's security and portability, and JavaScript's ease-of-use. Demo code and recipes.

    Project mention: Creating Rust Functions in Node.js with SSVM and Docker | dev.to | 2020-08-28
  • GitHub repo embly

    A serverless web application framework for collaboration and scale.

    Project mention: Launch HN: Lunatic (YC W21) – An Erlang Inspired WebAssembly Platform | news.ycombinator.com | 2021-03-06

    Hey, I tried to build something like this too: https://github.com/embly/embly

    My takeaway after building that is that the build tooling is the major pain point. If you're trying to onboard someone onto this platform from their favorite language the hard part is getting from code to the .wasm file. wasm-bindgen (as an example) has put so much effort into build tooling, I wonder if that's a necessary path for success here.

    It's also great that WASI exists now, if I had to do embly again I'd just use wasi and then implement all of my "platform" features as filesystem features, not syscalls. If your API interface is the filesystem then you could provide interoperability between environments. Let's say you want to include a key-value store in the wasi runtime, you just make the keys files and the values file contents. Then you could so something like ship a FUSE filesystem to interact with the filesystem in the same way from a traditional VM or on a personal computer. I got really bogged down in custom syscalls and this path seems potentially more elegant.

    Have you also thought about live process migration? I got really excited about this from a technical standpoint. Since you completely control the runtime you could set up a clustered wasm solution that moves long running processes from VM to VM by sending their live memory state to another machine. Not sure if that's actually useful, but cool that it's not bogged down by the usual complexities of doing the same in a full OS environment.

    Anyway, so glad to see that someone is taking this idea on. Please make a cloud platform and let me pay for it. Also happy to chat more if any of this is useful, I've joined your discord as "max".

  • GitHub repo sax-wasm

    The first streamable, fixed memory XML, HTML, and JSX parser for WebAssembly.

    Project mention: Introducing check html links - no more bad links | dev.to | 2021-01-27

    I have been using sax-wasm in a few situations before and I knew it supported streaming. I knew that way it could be FAST 🤞!

  • GitHub repo localghost

    Ergonomic Rust bindings to the Web platform

    Project mention: Gloo (an official rustwasm project) needs a maintainer | reddit.com/r/rust | 2021-03-06

    One potential candidate to take the role of gloo is https://github.com/mild-times/localghost, the once, on to convert web_sys::Event into rust async future/stream is super handy. There are other modules handling io/net too.

  • GitHub repo assemblylift

    A framework for building serverless applications powered by WebAssembly 🚀

    Project mention: AssemblyLift v0.2.9: BIG performance boost + new features! 🚀 | dev.to | 2021-02-09

    Service TOML definitions now support specifying authorizers by ID for each function. These map to API Gateway authorizers; currently only IAM and JWT are supported. See the pull request for examples.

  • GitHub repo excel2json

    Convert excel file to json data

  • GitHub repo cavernos

    Project mention: Advice for doing a web-playable 7DRL | reddit.com/r/roguelikedev | 2021-02-13

    - Cavernos (https://github.com/jordwest/cavernos)

  • GitHub repo yew-portfolio

    portfolio website created with yew stack

    Project mention: Portfolio - Digital Ocean Hackathon Submission | dev.to | 2021-01-10

    Yew Portolio

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2021-04-12.

Index

What are some of the best open-source WebAssembly projects in Rust? This list will help you:

Project Stars
1 wasmer 9,153
2 genact 4,510
3 lucet 3,712
4 stdweb 3,105
5 lumen 2,414
6 Seed 1,864
7 plotters 1,322
8 wasmer-python 1,153
9 cargo-web 1,027
10 zemeroth 944
11 notecalc3 927
12 gluesql 466
13 ink 445
14 lam 183
15 serde-wasm-bindgen 177
16 wasm-learning 108
17 embly 90
18 sax-wasm 89
19 localghost 79
20 assemblylift 61
21 excel2json 57
22 cavernos 27
23 yew-portfolio 0