All Projects → satabin → swam

satabin / swam

Licence: Apache-2.0 License
WebAssembly engine in Scala

Programming Languages

WebAssembly
147 projects
scala
5932 projects

Projects that are alternatives of or similar to swam

tutorials
🎥 Source code of the examples shown in the video tutorials
Stars: ✭ 18 (-52.63%)
Mutual labels:  cats, fs2, cats-effect
warpy
WebAssembly interpreter in RPython
Stars: ✭ 54 (+42.11%)
Mutual labels:  webassembly, wasm, wast
fs2-ftp
Simple client for Ftp/Ftps/Sftp
Stars: ✭ 24 (-36.84%)
Mutual labels:  cats, fs2, cats-effect
pfps-examples
🏮 Standalone examples shown in the book "Practical FP in Scala: A hands-on approach"
Stars: ✭ 167 (+339.47%)
Mutual labels:  cats, fs2, cats-effect
typelevel-stack.g8
📚 Unofficial Giter8 template for the Typelevel Stack (Http4s / Doobie / Circe / Cats Effect / Fs2) based on Cats v1.x.x
Stars: ✭ 63 (+65.79%)
Mutual labels:  cats, fs2, cats-effect
scala-functional-programming-tutorial
Functional Programming in Scala Tutorial
Stars: ✭ 23 (-39.47%)
Mutual labels:  cats, fs2, cats-effect
rustexp
A Rust regular expression editor and tester that runs entirely within the browser!
Stars: ✭ 59 (+55.26%)
Mutual labels:  webassembly, wasm
cabasa
Haxe Framework for WebAssembly
Stars: ✭ 30 (-21.05%)
Mutual labels:  webassembly, wasm
wapc-rust
Rust-based WebAssembly Host Runtime for waPC-compliant modules
Stars: ✭ 75 (+97.37%)
Mutual labels:  webassembly, wasm
vault4s
Vault Client Library For Scala
Stars: ✭ 15 (-60.53%)
Mutual labels:  cats, cats-effect
block-aligner
SIMD-accelerated library for computing global and X-drop affine gap penalty sequence-to-sequence or sequence-to-profile alignments using an adaptive block-based algorithm.
Stars: ✭ 58 (+52.63%)
Mutual labels:  webassembly, wasm
rustwasmc
Tool for building Rust functions for Node.js. Combine the performance of Rust, safety and portability of WebAssembly, and ease of use of JavaScript.
Stars: ✭ 97 (+155.26%)
Mutual labels:  webassembly, wasm
console4cats
💻 Effect-type agnostic Console I/O for Cats Effect (archived, use Cats Effect 3 instead)
Stars: ✭ 55 (+44.74%)
Mutual labels:  cats, cats-effect
node-wasi
WASI for Node.js
Stars: ✭ 64 (+68.42%)
Mutual labels:  webassembly, wasm
image-hub
Image Hub is a sample application for exploring WebAssembly modules used as Envoy filters.
Stars: ✭ 56 (+47.37%)
Mutual labels:  webassembly, wasm
koder
QR/bar code scanner for the Browser
Stars: ✭ 73 (+92.11%)
Mutual labels:  webassembly, wasm
pfhais
Source code of the book Pure functional HTTP APIs in Scala including a chapter about upgrading to Scala 3.
Stars: ✭ 48 (+26.32%)
Mutual labels:  fs2, cats-effect
wasm-fizzbuzz
WebAssembly from Scratch: From FizzBuzz to DooM.
Stars: ✭ 1,364 (+3489.47%)
Mutual labels:  webassembly, wasm
idris-codegen-wasm
WebAssembly Code Generation Backend for Idris Compiler
Stars: ✭ 79 (+107.89%)
Mutual labels:  webassembly, wasm
holyc
An easy to use C++ to WASM compiler (Highly-experimental)
Stars: ✭ 33 (-13.16%)
Mutual labels:  webassembly, wasm

Swam Build Status Codacy Badge

Swam is a WebAssembly interpreter written in Scala with the cats library. It passes all the official specification tests. It is under an Apache 2 license.

Cats Friendly Badge

Join the chat at https://gitter.im/satabin/swam

Getting Started

To build it, we use mill. Mill is not packaged for all Linux distributions, but you can use curl to install it (see Installation instructions in the doc).

You can also use the mill wrapper provided in this repository with the recommended mill version. It will download mill for you if you do not have it already, and run it. To use it, replace following mill commands by ./millw

If you want to run the specification tests, just type:

mill runtime.test

It you want to test swam in a REPL session, just type tostart an ammonite shell with runtime project in classpath.:

mill -i runtime.console

If you want a REPL session with both runtime and text, the easiest way is to start a session for the runtime.test project:

$ mill -i runtime.test.console

Architecture

This project defines several modules:

  • The core module is a library that makes it possible to manipulate binary representation of WebAssembly modules. In particular it contains:
    • a streaming parser for the binary format;
    • a compiler from text to binary format.
  • The runtime module is a non-web embedding to instantiate and run WebAssembly modules.
  • The text module is a library that makes it possible to manipulate text representation of WebAssembly modules. It is not included in the core module as text representation is more of a debug feature, and the runtime does not want to bring that dependency with it.

If you want more details, please refer to the website.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].