Processing Foundation rebuilt Processing's rendering core in Rust to replace its aging, deprecated OpenGL-based Java engine. The new shared Rust core, built with contributions from Processing Project Lead Moon Davé and Bevy contributor Charlotte McElwain, handles windowing, input, rendering, GPU compute, MIDI, and audio, and can be embedded via FFI, compiled to WASM for browsers, or exposed to Python through PyO3. Results include flocking simulations scaling from thousands of 2D boids to tens of thousands of 3D boids on GPU, and rendering a 3D cube made of 1 million smaller cubes. Rust Embedded support for microcontrollers is on the roadmap, and the same core now powers sketches in both Java and Python.
Table of contents
About Processing FoundationThe Challenge: An Aging Graphics API and a Java-Only CeilingWhat They Built: A Shared Rust Core, From Browser to MicrocontrollerThe Results: 50,000 Moving Objects, One Browser TabQuestions this post answers
How did Processing Foundation replace OpenGL in its rendering engine without breaking existing Java and Python support?
Processing Foundation built a shared Rust core library that can be dropped into Rust projects, linked into other languages via FFI, or compiled to WebAssembly for browsers. The core handles window management, input, rendering, GPU compute, shader pipelines, MIDI, and audio, built largely on the Bevy game engine, with Python support added through PyO3. See how daily.dev surfaces real-world Rust adoption patterns like FFI and WASM interop for teams weighing similar rewrites.
What performance gains did Processing get from moving its rendering engine to Rust and Bevy?
Flocking simulations that previously ran thousands of 2D boids can now run tens of thousands of 3D boids on the GPU, with room to scale toward hundreds of thousands. The new core also rendered a 3D cube composed of 1 million smaller cubes entirely on the GPU, demonstrating a major leap over the prior OpenGL-based Java renderer. daily.dev helps developers track concrete performance case studies like this when evaluating Rust for graphics workloads.
52.5K Impressions2 Comments