MicroPython WebAssembly ======================= MicroPython for [WebAssembly](https://webassembly.org/). Dependencies ------------ Building webassembly port bears the same requirements as the standard MicroPython ports with the addition of Emscripten (and uglify-js for the minified file). The output includes `micropython.js` (a JavaScript wrapper for the MicroPython runtime) and `firmware.wasm` (actual MicroPython compiled to WASM). Build instructions ------------------ In order to build micropython.js, run: $ make To generate the minified file micropython.min.js, run: $ make min Running with Node.js -------------------- Access the repl with: $ node build/micropython.js Stack size may be modified using: $ node build/micropython.js -X stack=64K Where stack size may be represented in Bytes, KiB or MiB. MicroPython scripts may be executed using: $ node build/micropython.js hello.py Alternatively micropython.js may by accessed by other javascript programs in node using the require command and the general API outlined below. For example: ```javascript var mp_js = require('./build/micropython.js'); mp_js_init(64 * 1024); await mp_js_do_str("print('hello world')\n"); ``` Running with HTML ----------------- The prerequisite for browser operation of micropython.js is to listen to the `micropython-print` event, which is passed data when MicroPython code prints something to stdout. The following code demonstrates basic functionality: ```html
``` MicroPython code execution will suspend the browser so be sure to atomize usage within this environment. Unfortunately interrupts have not been implemented for the browser. Testing ------- Run the test suite using: $ make test API --- The following functions have been exposed to javascript. ``` mp_js_init(stack_size) ``` Initialize MicroPython with the given stack size in bytes. This must be called before attempting to interact with MicroPython. ``` await mp_js_do_str(code) ``` Execute the input code. `code` must be a `string`. ``` mp_js_init_repl() ``` Initialize MicroPython repl. Must be called before entering characters into the repl. ``` await mp_js_process_char(char) ``` Input character into MicroPython repl. `char` must be of type `number`. This will execute MicroPython code when necessary.