Skip to content

yglukhov/wasmrt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wasmrt CI nimble

Compile nim to wasm

import wasmrt
proc consoleLog(a: cstring) {.importwasmraw: "console.log(_nimsj($0))".}
consoleLog("Hello, world!")
nim c --out:test.wasm test.nim # Special nim config is required, see below
node tests/runwasm.js test.wasm

Prerequisites

  • clang 8.0 or later
  • Special Nim config, like this one
  • [Optional] wasm-opt - a tool to compact your wasm file

Run your wasm

The wasm file generated this way is pretty standalone, and requires only the following JavaScript code to bootstrap:

function runNimWasm(w){for(i of WebAssembly.Module.exports(w)){n=i.name;if(n[0]==';'){new Function('m',n)(w);break}}}

runNimWasm takes the output of WebAssembly.compile function. E.g. to run a wasm file in nodejs, use smth like runwasm.js

Convert wasm to html

The generated wasm file can be "converted" to a standalone html file with wasm2html tool provided in this package.

nim c --out:test.wasm test.nim # Special nim config is required, see below
wasm2html test.wasm test.html

Why no Emscripten?

The goal of this project is to produce self-contained standalone wasm files from nim code, without any JS glue, or "desktop platform emulation".

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published