#Yossi #multithreading Python in #WASM with #Emscripten and #Pyodide, using #CORS to enable SharedArrayBuffer. #concurrency #toread #gross
on 02026-04-28#ImHex running in the browser with #Wasm, I guess including OpenGL?
on 02026-04-24#Datasette Lite runs #Python in I guess probably #WASM so you can run #SQL queries on #CSV files
on 02026-01-12really interesting discussion of #WASM, including stuff by Mariano Guerra on #compilers
on 02025-09-28Scm2wasm: A #Scheme to #WASM compiler in 600 lines of C, making use of WASM GC #compilers #toread. wasmtime -Wgc --invoke start output.wasm
#Wasmtime doesn’t yet support suspend and resume. #Wasm
on 02025-09-05#Wasm got #garbage-collection support (useful for things like #OCaml)
on 02025-08-30I didn’t know #OCaml had a compiler targeting #Wasm, which has now been merged back into the JS compiler.
on 02025-08-30“A Fast In-Place Interpreter for WebAssembly” #PDF #paper by Titzer on #wasm without compilers
on 02024-12-12"WebR" is a version of the statistical language R compiled for the browser and Node.js using #Wasm, via Emscripten.
on 02024-11-18"Pyodide" is a Python distribution for the browser and Node.js based on #Wasm. “Many packages with C extensions have also been ported for use with Pyodide. These include many general-purpose packages such as regex, pyyaml, lxml and scientific Python packages including numpy, pandas, scipy, matplotlib, and scikit-learn.”
on 02024-11-18In-browser code playgrounds via #wasm for JavaScript, Python, PHP, Ruby, Lua, and SQLite, by the author of #Codapi.
on 02024-11-18interactive #notebooks in HTML using #Bostock Observable with embedded Python (via #Pyodide), R (via #WebR), SQLite (also via #wasm), LaTeX, Observable Plot, Graphviz, and some bastardized fork of Markdown. This is #Celine.
on 02024-11-18the actual #eesim.dev in-browser #SPICE #simulation of #electronics with #ngspice compiled to #wasm. Doesn’t seem to work very reliably, iloops sometimes and stuff.
on 02024-09-25in-browser #SPICE #simulation of #electronics with #ngspice compiled to #wasm at "eesim.dev"
on 02024-09-25handwriting #font using #neural-networks in #wasm embedded in #Harfbuzz
on 02024-08-21Audacity in the browser in #wasm
on 02024-02-19#exaequOS is a microkernel compiled from C to #wasm with Emscripten
on 02023-09-19A #C compiler in 500 lines of Python, targeting #wasm, whose breaks made implementing for “extremely cursed”. Implements arithmetic, precedence, int, short, char, string constants, pointers, simple arrays, functions, and typedefs, but not structs, the preprocessor, or casts. #small-is-beautiful #compilers
"wazero" is a zero-dependency #wasm runtime for #Golang. #virtual-machines
on 02023-07-01some hoops to jump through to get #Emscripten #wasm to load in #React #JS
on 02023-06-24Mozilla's #Emscripten #wasm #tutorial.
on 02023-06-23#Golang compiles to #wasm via "Tinygo", which can also target #embedded boards including the #Arduino Uno, the #ESP32, the Adafruit Feather M0, and the #Gameboy Advance.
on 02023-06-23#Golang's #JS integration via #wasm actually looks pretty usable.
on 02023-06-23#Golang can target #wasm with GOOOS=js GOAARCH=wasm go build -o go.wasm.
"WAjic" is a simplified alternative to #Emscripten which, like Emscripten, generates #wasm from C with LLVM 8.0.0 or greater with clang -target wasm32 foo.c -o foo.wasm and a lot of other options. Also apparently #Node 8 and newer support wasm. WAjic is written in Node. The main missing feature seems to be setjmp.
This is where the #Emscripten docs explain how to read #wasm memory from #JS with Module.HEAPU8.set(myTypedArray, ptr) or getValue(ptr, type) or setValue(ptr, value, type).
This is the guide for calling #JS from C (#Wasm) using EM_JS, EM_ASM, etc. Apparently with EM_ASM you are not supposed to use doublequotes!
#Emscripten exports Module.ccall and Module.cwrap functions to #JS for calling into #Wasm code.
#Web-workers can transfer so-called "transferable objects" to other “agents” in the “cluster” without copying them by listing them in an array passed as a second argument to postMessage; the ArrayBuffer in .buffer of typed arrays like Uint8Array is such a transferable object, as are things like MessagePort, AudioData, and WritableStream. Agents are web workers or the DOM execution context. #JS #wasm #browsers
on 02023-06-22there's an #Emscripten #Docker image you can use to compile C to #Wasm with commands like docker run --rm -v "$PWD":/src -u "$(id -u):$(id -g)" emscripten/emsdk emcc hello.c -o hello.js
Adafruit is converting #BDF to #PCF #font #file-format using #Wasm
on 02023-06-02rebuttal to some criticisms of #wasm as ill-suited to streaming #compilers
on 02022-10-12