xord/all
May 15, 2026 ยท View on GitHub
๐ About
xord/all is the monorepo where every xord/* library is developed. Each library lives at the repository root, shares a common build / test pipeline, and is mirrored out to its own standalone repository (and published as a Ruby gem or a CocoaPod) from here.
The libraries form a stack: low-level utilities at the bottom, a 2D drawing engine and a GUI toolkit on top, and creative-coding / game-engine layers on top of those.
๐ Libraries in this monorepo
| Module | Distribution | Role |
|---|---|---|
xot | gem xot | Shared C++ utilities and Ruby helpers used by everything below |
rucy | gem rucy | C++ helper layer over Ruby's C API for writing native extensions |
beeps | gem beeps | Audio synthesis and playback โ oscillators, filters, envelopes, effects, sound files |
rays | gem rays | Hardware-accelerated 2D drawing engine on OpenGL |
rays-video | gem rays-video | Video encoding / decoding with audio support, built on Rays and Beeps |
reflex | gem reflexion | Cross-platform GUI toolkit โ Window / View / Events on top of Rays |
processing | gem processing | Processing-compatible creative-coding framework for CRuby |
rubysketch | gem rubysketch | Processing-style game engine โ adds Sprite, physics, Sound, MML, easings |
reight | gem reight | Fantasy-console-style retro game engine with built-in sprite / map / sound editors |
cruby | CocoaPod CRuby | Embeds the CRuby (MRI) interpreter into macOS / iOS apps |
See each subdirectory's README.md for installation, requirements, and usage details.
๐ Mirroring
This repository is the source of truth. Each library is mirrored out to its own standalone repository using git subtree push, and that's what the gem / pod build pipelines consume.
๐ฆ Installation
For installation instructions, please refer to the README.md file in each subdirectory. If you are reaching for a specific gem (processing, rubysketch, reight, โฆ), you don't need this monorepo โ install the gem directly from RubyGems and its dependencies will be pulled in.
๐ ๏ธ How to develop
The Rakefile delegates to each module. Without a scope it operates on all gems; pass a module name (or :all, :exts, :gems) to narrow it down.
# Build everything
$ rake lib # C/C++ libraries (libxot, librucy, libbeeps, librays, libreflex, ...)
$ rake ext # Ruby native extensions
$ rake test # run tests
# Scope to one or a few modules
$ rake rays ext
$ rake rays reflex test
$ rake xot rucy beeps lib
# Other useful tasks
$ rake vendor # clone third-party libs into each module's vendor/
$ rake erb # expand ERB-templated headers (rucy mostly)
$ rake gem # build .gem files
$ rake clean
$ rake clobber
Scope selectors:
| Selector | Targets |
|---|---|
| (default) | All gems (xot, rucy, beeps, rays, rays-video, reflex, processing, rubysketch, reight) |
:all | All repositories, including cruby |
:exts | Modules that build a native extension (xot, rucy, beeps, rays, rays-video, reflex) |
:gems | Same as default (every published Ruby gem) |
xot / rays / โฆ | A specific module |
Run samples / examples
Each gem keeps runnable samples or examples next to its source:
$ ruby reflex/samples/hello.rb
$ ruby reflex/samples/physics.rb
$ ruby processing/examples/shapes.rb
$ ruby rubysketch/examples/sprite.rb
Update shared Git hooks and CI
.hooks/ and .workflows/ at the repository root generate the Git hook scripts and CI workflow files that get distributed into each module. Edit the source under .hooks/ / .workflows/, then re-run the generator (see the local scripts) to fan changes out.
๐ค Contributions
Contributions are welcome! All development happens here in xord/all โ please open issues and pull requests against this repository, not against the per-library mirrors.
For more details, please refer to CONTRIBUTING.md.
๐ License
xord/all is licensed under the MIT License. See the LICENSE file for details.
Each bundled / vendored upstream library (Box2D, RtMidi, STK, AudioFile, r8brain-free-src, signalsmith-stretch, GLM, Clipper, earcut.hpp, splines-lib, stb, OpenSSL, libyaml, Ruby) retains its own license; see each module's vendor/ and LICENSE directories.