xord/all

May 15, 2026 ยท View on GitHub

Ask DeepWiki License Build Status

๐Ÿš€ 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

ModuleDistributionRole
xotgem xotShared C++ utilities and Ruby helpers used by everything below
rucygem rucyC++ helper layer over Ruby's C API for writing native extensions
beepsgem beepsAudio synthesis and playback โ€” oscillators, filters, envelopes, effects, sound files
raysgem raysHardware-accelerated 2D drawing engine on OpenGL
rays-videogem rays-videoVideo encoding / decoding with audio support, built on Rays and Beeps
reflexgem reflexionCross-platform GUI toolkit โ€” Window / View / Events on top of Rays
processinggem processingProcessing-compatible creative-coding framework for CRuby
rubysketchgem rubysketchProcessing-style game engine โ€” adds Sprite, physics, Sound, MML, easings
reightgem reightFantasy-console-style retro game engine with built-in sprite / map / sound editors
crubyCocoaPod CRubyEmbeds 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:

SelectorTargets
(default)All gems (xot, rucy, beeps, rays, rays-video, reflex, processing, rubysketch, reight)
:allAll repositories, including cruby
:extsModules that build a native extension (xot, rucy, beeps, rays, rays-video, reflex)
:gemsSame 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.