An experimental implementation of the Processing API in Rust
Rust
83
216 commits
updated Oct 6, 2026
[!WARNING] This project is very much R&D and highly unstable
libprocessing is an experimental native library with the goal of supporting the implementation of the core Processing API in a variety of languages. The library is written in the Rust programming language and built on top of the Bevy game engine. libprocessing uses WebGPU as its rendering backend and is designed to (eventually) support desktop, mobile, and web targets.
You can learn more about this project from this talk at LibreGraphicsMeeting 2026
There is two different things at work here :
Inside of our processing_pyo3 crate we have created a python package that you can easily install with pip.
Again, we are still very nascent, but let us know what kinds of snags you may run into while getting this set up.
Try running the examples in the processing_pyo3 examples directory.
We are big fans of uv and this is the easiest way to get started using mewnala
curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
We're going to create a folder named mewnala-sketchbook and install the mewnala package inside:
# Initialize a project with uv
uv init mewnala-sketchbook && cd mewnala-sketchbook
# add the package
uv add mewnala
Now create a file named sketch.py at the root of mewnala-sketchbook.
You can use this code to test
from mewnala import *
def setup():
size(400, 400)
background(255)
def draw():
push_matrix()
translate(mouse_x, mouse_y)
fill(255, 100, 200)
circle(0, 0, 50)
pop_matrix()
run()
Now run your sketch using:
# run a sketch
uv run sketch.py
Note: you can use any file name you want for your sketch
You'll need to install the Rust toolchain to work on this project. Most users will want to install Rust via rustup, which helps manage Rust toolchain versions.
When cloning this repo (or your fork), don't forget to install its submodules (eg. Lygia)
git clone --recurse-submodules [email protected]:processing/libprocessing.git
if you already cloned the repo without --recurse-submodules, you can run
git submodule update --init
This project uses just as a command runner:
cargo install just
Run just to see available commands.
The processing_wasm crate provides WebAssembly bindings that expose a JavaScript API mirroring the C FFI.
Install wasm-pack:
cargo install wasm-pack
On Windows, you'll need to manually install wasm-opt
cargo install wasm-opt
You'll also need the wasm32 target:
rustup target add wasm32-unknown-unknown
just wasm-build
This outputs the package to target/wasm/.
just wasm-serve
Note: you'll need python installed on your machine to run this command
We want your help building this library!
One place we could really use some help is with porting Processing examples to using mewnala, and then reporting where you get stuck or where things could be easier. Check out the effort here: https://github.com/processing/processing-examples-mewnala.
You can see a list of outstanding tasks in our issues. However, while we're still in the early phases, consider checking in with us first in the #devs-chat channel on Discord to coordinate our efforts.
You can read our project design principles here.
567 followers · starred Aug 2026
260 followers · starred May 2026
368 followers · starred Dec 2025
426 followers · starred Jun 2026
An experimental implementation of the Processing API in Rust
Rust
83
216 commits
updated Oct 6, 2026
[!WARNING] This project is very much R&D and highly unstable
libprocessing is an experimental native library with the goal of supporting the implementation of the core Processing API in a variety of languages. The library is written in the Rust programming language and built on top of the Bevy game engine. libprocessing uses WebGPU as its rendering backend and is designed to (eventually) support desktop, mobile, and web targets.
You can learn more about this project from this talk at LibreGraphicsMeeting 2026
There is two different things at work here :
Inside of our processing_pyo3 crate we have created a python package that you can easily install with pip.
Again, we are still very nascent, but let us know what kinds of snags you may run into while getting this set up.
Try running the examples in the processing_pyo3 examples directory.
We are big fans of uv and this is the easiest way to get started using mewnala
curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
We're going to create a folder named mewnala-sketchbook and install the mewnala package inside:
# Initialize a project with uv
uv init mewnala-sketchbook && cd mewnala-sketchbook
# add the package
uv add mewnala
Now create a file named sketch.py at the root of mewnala-sketchbook.
You can use this code to test
from mewnala import *
def setup():
size(400, 400)
background(255)
def draw():
push_matrix()
translate(mouse_x, mouse_y)
fill(255, 100, 200)
circle(0, 0, 50)
pop_matrix()
run()
Now run your sketch using:
# run a sketch
uv run sketch.py
Note: you can use any file name you want for your sketch
You'll need to install the Rust toolchain to work on this project. Most users will want to install Rust via rustup, which helps manage Rust toolchain versions.
When cloning this repo (or your fork), don't forget to install its submodules (eg. Lygia)
git clone --recurse-submodules [email protected]:processing/libprocessing.git
if you already cloned the repo without --recurse-submodules, you can run
git submodule update --init
This project uses just as a command runner:
cargo install just
Run just to see available commands.
The processing_wasm crate provides WebAssembly bindings that expose a JavaScript API mirroring the C FFI.
Install wasm-pack:
cargo install wasm-pack
On Windows, you'll need to manually install wasm-opt
cargo install wasm-opt
You'll also need the wasm32 target:
rustup target add wasm32-unknown-unknown
just wasm-build
This outputs the package to target/wasm/.
just wasm-serve
Note: you'll need python installed on your machine to run this command
We want your help building this library!
One place we could really use some help is with porting Processing examples to using mewnala, and then reporting where you get stuck or where things could be easier. Check out the effort here: https://github.com/processing/processing-examples-mewnala.
You can see a list of outstanding tasks in our issues. However, while we're still in the early phases, consider checking in with us first in the #devs-chat channel on Discord to coordinate our efforts.
You can read our project design principles here.
567 followers · starred Aug 2026
260 followers · starred May 2026
368 followers · starred Dec 2025
426 followers · starred Jun 2026