/wasm-rtk

WebAssembly Raw Text Toolkit

Primary LanguageWebAssemblyApache License 2.0Apache-2.0

Contributors Forks Stars Issues License

WebAssembly

WebAssembly Raw Text Toolkit

An array of WebAssembly libraries and more, all written in WAT by hand!
Get started »

View DocumentationReport a BugContribute
Table of Contents
  1. About This Project
  2. Get Started
  3. Roadmap
  4. Contributing
  5. License
  6. Acknowledgements

About This Project

Wasm-RTk is a collection of WebAssembly development tools allowing for easier development than is initially made available in the WebAssembly environment. Beyond utilities like IO, cryptography, and artificial intelligence (maybe), I also want to build a compiler for a language that specifically implements, in WebAssembly, many of the techniques I have though of while writing these libraries, like Object Oriented Programming.

If you are interested in adding or contributing to anything in this collection, please create an issue.

Motivation

This repository started with the simple idea of implementing a multipurpose websocket server, utilizing WebAssembly in the process to be as fast as possible. I quickly realized, however, that there was a problem with this plan. WebAssembly is just about as native and bare-metal as you get on the web, but that comes at the cost of having virtually nothing available to use at the start. This is why I began work on the first library in this collection.

Looking around and roadmapping what I wanted to do, I eventually came to the decision that dynamic memory allocation was something that I absolutely had to tackle early on. Next, I didn't want to use anything like Emscripten, mostly because it looked like a hassle to install and use. Furthermore, I enjoyed knowing that I was learning something knew when I decided to write said library entirely using WebAssembly Text S-Expressions.

While I don't recommend the experience of writing a full-blown dynamic memory allocator in an assembly language, it created new ideas about how much of the high-level programming language luxuries I enjoy today were created. The biggest of these was thinking about how object-oriented programming is implemented. I would go on to imagine writing yet another compiler that targets WebAssembly binaries and implements many of the features that I feel WebAssembly lacks, while maintaining it's original power.

Get Started

If you want to get started using these libraries, I have a whole directory dedicated to documentation in this repository. You can start reading here.

Roadmap

Check the list of open issues to get an idea of planned additions.

Contributing

Check out the contributing guidelines for information on contributing to this repository.

License

The license can be found at LICENSE

Acknowledgements

WebAssembly logo by Carlos Baraza, CC0, via Wikimedia Commons