Code Monkey home page Code Monkey logo

team's Introduction

Rust + WebAssembly = ๐Ÿ’–

This repository is a simple, organic means of coordinating work on using Rust and WebAssembly together.

Vision

Compiling Rust to WebAssembly should be the best choice for fast code for the Web.

JavaScript Web applications struggle to attain reliable performance. JavaScript's dynamic type system and garbage collection pauses don't help. Seemingly small code changes can result in drastic performance regressions if you accidentally wander off the JIT's happy path.

Rust gives programmers low-level control and reliable performance. It is free from the non-deterministic garbage collection pauses that plague JavaScript. Programmers have control over indirection, monomorphization, and memory layout.

And now we can bring Rust's advantages to the Web with WebAssembly.

Rust is particularly well-suited for the Web.

Rust's minuscule runtime enables small .wasm sizes and incremental or partial adoption.

  • Small .wasm sizes: Code size is incredibly important since the .wasm must be downloaded over the network.

  • Incremental or partial adoption: Existing code bases don't need to be thrown away. Programmers can start by porting their most performance-sensitive JavaScript functions to Rust to gain immediate benefits. And they can even stop there if they want to, because Rust plays well with others.

Furthermore, Rust has many of the amenities that Web developers have come to expect:

  • strong package management with cargo,

  • expressive (and zero-cost!) abstractions,

  • and a welcoming community ๐Ÿ˜Š

We envision the pipeline that fits Rust into JavaScript package management and bundler ecosystem to look something like this:

Rust to WebAssembly to NPM to bundler to Webpage pipeline

Get Involved!

Get involved with the Rust and WebAssembly community in just three easy steps!

1. Join our IRC Chat

Chat with the Rust and WebAssembly community on IRC at #rust-wasm on irc.mozilla.org.

If you don't have an IRC client of choice already, you can use the Mibbit Web IRC client.

Say "hello" and introduce yourself!

2. Do some Rust and WebAssembly Yourself

Read our short Rust and WebAssembly book, complete its tutorials, and compile some Rust into WebAssembly. If you run into a paper cut or roadblock, let us know by filing an issue!

3. Join the Rust and WebAssembly Working Group

We are building a Rust and WebAssembly future where:

  • The Web is the primary target.
  • Rust plays nice with JavaScript, and can surgically replace a performance-sensitive JavaScript module or function without throwing away the existing code base.

We are not focusing on (but still encourage others to experiment with) scenarios where:

  • The Web is not the primary target (e.g. WebAssembly as a universal binary format, or an operating system that runs WebAsssembly processes instead of native code).
  • A Web application is written in pure Rust, without integrating with any JavaScript.

We meet on Google Hangouts every two weeks to track progress, give status updates, and discuss issues. We coordinate meetings with issues labeled "meeting" in the rustwasm/team repository.

First get your feet wet by tackling one of these issues:

Then help us make progress on the working group goals. To learn more about or contribute towards a particular goal, read its goals/*.md page and its "How to Help" section. If you have any questions about a goal, contact its owner.

Goal More Information
wasm-bindgen Ecosystem goals/wasm-bindgen-ecosystem.md
Publishing and Dependencies goals/publishing-and-dependencies.md
Bundler Integration goals/bundler-integration.md
Book, Documentation, Tutorials goals/book-documentation-tutorials.md
Website goals/website.md
Debugging goals/debugging.md
Project Templates goals/project-templates.md
Testing goals/testing.md
Benchmarking goals/benchmarking.md

Finally, if you've gotten this far, see GOVERNANCE.md#membership for information on becoming an official member of the working group!

team's People

Contributors

fitzgen avatar mgattozzi avatar aturon avatar adityac8 avatar alexcrichton avatar killercup avatar sendilkumarn avatar joaolucasl avatar ashleygwilliams avatar johnthagen avatar mstange avatar petertrotman avatar xtuc avatar spastorino avatar jhwohlgemuth avatar jasondavies avatar badboy avatar data-pup avatar thiagopnts avatar theemathas avatar luser avatar sighingnow avatar steveklabnik avatar sallar avatar mhintz avatar manaskarekar avatar lukewagner avatar josmardias avatar jflewis avatar ordovicia avatar

Watchers

James Cloos avatar Ivan Enderlin avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.