Skip to content

StrategicProjects/processing-host

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

processing-host

processing-host is the out-of-process rendering host for future Processing-compatible language bindings, starting with R. It owns the window and graphics event loop while clients send complete frames over a versioned protocol.

The project is designed to sit on top of the Processing Foundation's experimental libprocessing Rust library. The first milestone establishes the process boundary and protocol before connecting the graphical backend, because libprocessing is still R&D and its Rust API changes frequently.

Current status

The repository currently provides:

  • a versioned NDJSON protocol;
  • batched 2D draw commands;
  • request validation;
  • a host state machine;
  • a validation backend for client development and automated tests;
  • a stdio executable suitable for control by processx in R.

It does not open a graphical window yet. The next milestone replaces the validation renderer with an adapter pinned to libprocessing v0.0.8.

Quick start

cargo run -- --self-test
cargo test

Run the host with no arguments to read one JSON request per line from stdin and emit one JSON response per line to stdout. Logs and diagnostics are reserved for stderr.

Example session:

{"type":"hello","protocol_version":1,"client_name":"rprocessing","client_version":"0.1.0"}
{"type":"create_surface","width":640,"height":480,"title":"R Processing"}
{"type":"frame","surface_id":1,"frame_id":1,"commands":[{"op":"background","color":{"r":0.08,"g":0.08,"b":0.1,"a":1.0}},{"op":"circle","x":320.0,"y":240.0,"diameter":80.0}]}
{"type":"shutdown"}

See the architecture and protocol v1 for design details.

Upstream strategy

This project does not fork or reimplement Processing. Renderer work should be contributed upstream whenever it belongs in libprocessing; this host only adds lifecycle, transport, compatibility, and release concerns required by external language clients.

License

The host glue is MIT licensed. libprocessing, Bevy, and other dependencies retain their own licenses. Distributed renderer binaries must include and comply with all upstream notices and license obligations.

About

Out-of-process Rust host for Processing-compatible language bindings

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages