First-party spices for the Turmeric ecosystem. Each spice has its own docs -- click through for a front page and a per-spice API reference.
| Spice | Description | Tier | macOS | Linux | Windows | WASM | C dep | Docs |
|---|---|---|---|---|---|---|---|---|
tur-ansi | ANSI terminal control, raw-mode key input, color, style, inline images (Kitty/iTerm2/sixel) | 2 | ✅ | ✅ | ⚠️ | ⚠️ | -- | API |
tur-c-dsl | Lisp-syntax DSL that compiles to C99 source | 1 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-crdt | Conflict-free replicated data types: counters, sets, registers, maps and a replicated sequence, over a join-semilattice, with delta-state mutators | 1 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-dom-core | Shared Document/Node markup tree and SAX event vocabulary for tur-xml and tur-html | 2 | ✅ | ✅ | ? | ? | -- | API |
tur-ecs | Entity-Component-System for Turmeric. E1 surface: dense + sparse + tag storages, variadic-looking for-each (up to 8 components) over the row-typed Query value, with/without tag filters, defquery + run-query! functional surface | 2 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-ecs-raylib | Raylib companion to tur-ecs: standard 2D components, systems, and a with-game-loop macro for ECS-driven games | 2 | ✅ | ✅ | ✅ | ✅ | tur-raylib | API |
tur-frame | In-memory dataframe (Arrow-compatible columnar) | 1 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-glsl | Lisp-syntax DSL that compiles to GLSL shader source | 1 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-html | WHATWG HTML parsing: browser-identical trees, fragments, tokenizer events | 3 | ✅ | ✅ | ? | ? | lexbor 3.0.1 | API |
tur-http | HTTP/HTTPS client | 3 | ✅ | ✅ | ❌ | ❌ | mbedTLS 3.6.2 | API |
tur-httpd | Minimal threaded HTTP/1.1 server (POSIX sockets) | 2 | ✅ | ✅ | ❌ | ❌ | tur-json, tur-http (optional), tur-tls (optional) | API |
tur-json | JSON parsing and serialization | 3 | ✅ | ✅ | ✅ | ✅ | yyjson 0.10.0 | API |
tur-linalg | Dense float linear algebra: matrices, vectors, Cholesky/LU/QR solvers, mat4 graphics helpers | 2 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-math | 2D/3D vector and matrix math | 1 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-msgpack | MessagePack binary serialization for Turmeric -- the binary twin of tur-json | 2 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-nng | nanomsg-next-generation scalability protocols (req/rep, pub/sub, pipeline, pair, bus, survey) over inproc, ipc, tcp and ws | 3 | ✅ | ✅ | ✅ | ❌ | nng 1.12.4 | API |
tur-notebook | Literate `.tur.md` notebooks with TUI, HTML export, and cell execution | 3 | ✅ | ✅ | ❌ | ❌ | libturi (linked against turmeric build) | API |
tur-opengl | OpenGL 3.3 Core + GLFW + GLAD bindings | 3 | ✅ | ✅ | ✅ | ⚠️ | glfw 3.4, glad v2.0.6 | API |
tur-osc | Open Sound Control (OSC) messaging via liblo | 3 | ✅ | ✅ | ? | ❌ | liblo 0.32 | API |
tur-plot | 2D data visualization (functions, points, histograms, contours) | 1 | ✅ | ✅ | ✅ | ✅ | tur-plutovg | API |
tur-plutovg | 2D vector graphics rendering via plutovg | 3 | ✅ | ✅ | ✅ | ✅ | plutovg 1.3 | API |
tur-png | PNG image read/write via libpng | 3 | ✅ | ✅ | ✅ | ✅ | libpng 1.6.43 | API |
tur-postgres | PostgreSQL client via libpq | 3 | ✅ | ✅ | ✅ | ❌ | libpq (system) | API |
tur-prob | Probabilistic data structures: Bloom filter, Cuckoo filter, HyperLogLog, Count-Min Sketch, Top-K, with join-semilattice merge. | -- | -- | -- | -- | -- | -- | API |
tur-raygui | Immediate-mode GUI controls for Turmeric, layered on tur-raylib | 2 | ✅ | ✅ | ✅ | ✅ | raygui 4.0 (vendored), tur-raylib | API |
tur-raylib | Raylib 5.5 graphics and input | 3 | ✅ | ✅ | ✅ | ✅ | raylib 5.5 | API |
tur-regex | PCRE2 regex bindings | 3 | ✅ | ✅ | ✅ | ✅ | PCRE2 10.44 | API |
tur-rtaudio | Cross-platform audio I/O via RtAudio | 3 | ✅ | ✅ | ✅ | ❌ | RtAudio 6.0.1 | API |
tur-rtmidi | Cross-platform MIDI I/O via RtMidi | 3 | ✅ | ✅ | ✅ | ❌ | RtMidi 6.0.0 | API |
tur-scscm | scscm s-expression -> sclang compiler, tested against scsynth and hcsynth ([guide](docs/guides/scscm-guide.md)) | 2 | ✅ | ✅ | ⚠️ | ⚠️ | -- | API |
tur-sdf-raylib | SDF-based solid modeling with raylib rendering and colored mesh export | 3 | ✅ | ✅ | ✅ | ⚠️ | raylib 5.5 | API |
tur-secret | Linear key material and crypto hygiene primitives for Turmeric | 2 | ✅ | ✅ | ✅ | ❌ | -- | API |
tur-signal | Arrow-based signal processing (SF, DSP, ADSR, synth) | 1 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-sqlite | SQLite3 database bindings | 3 | ✅ | ✅ | ✅ | ✅ | sqlite 3.47.2 | API |
tur-stats | Statistical analysis on dataframes (summary, distributions, hypothesis tests, OLS, resampling) | 2 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-template | ERB/EJS-style string templating engine | 2 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-test | Testing framework utilities | 1 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-thread-pool | Bounded POSIX worker-thread pool for Turmeric (typed, linear Pool<T> handle; futures; with-pool) | 2 | ✅ | ✅ | ❌ | ❌ | -- | API |
tur-tidal | Tidal-like mini-notation -> Pbind/event text | 2 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-tls | TLS termination for tur/httpd via mbedTLS | 3 | ✅ | ✅ | ❌ | ❌ | mbedTLS 3.6.2 | API |
tur-tourist | Sinatra/scotty-style HTTP micro-framework | 2 | ✅ | ✅ | ❌ | ❌ | tur-httpd, tur-http (optional) | API |
tur-tourist-session | Swappable-store session middleware for tur-tourist (memory + file stores) | 2 | ✅ | ✅ | ❌ | ❌ | tur-tourist, tur-httpd | API |
tur-tourist-session-valkey | Valkey-backed session store for tur-tourist-session | 2 | ✅ | ✅ | ❌ | ❌ | tur-tourist-session, tur-valkey | API |
tur-tourist-ws | WebSocket routes for the tur-tourist framework (ws-route!) | 1 | ✅ | ✅ | ❌ | ❌ | tur-tourist, tur-ws-server, tur-httpd, tur-json | API |
tur-valkey | Valkey/Redis client via hiredis | 3 | ✅ | ✅ | ✅ | ❌ | hiredis 1.2.0 | API |
tur-watch | Cross-platform filesystem watching (inotify + kqueue) with debounce and coalescing for CLI tools | 2 | ✅ | ✅ | ❌ | ❌ | -- | API |
tur-wav | WAV and PCM audio file read/write via libsndfile | 3 | ✅ | ✅ | ✅ | ✅ | libsndfile 1.2.2 | API |
tur-ws-client | RFC 6455 WebSocket client (ws:// and wss://) for Turmeric | 3 | ✅ | ✅ | ❌ | ❌ | mbedTLS 3.6.2 (wss:// only) | API |
tur-ws-core | Shared RFC 6455 WebSocket protocol types + handshake crypto | 2 | ✅ | ✅ | ✅ | ✅ | -- | API |
tur-ws-server | RFC 6455 WebSocket server upgrade for tur-httpd | 2 | ✅ | ✅ | ❌ | ❌ | tur-httpd | API |
tur-xml | XML SAX (one-shot and push) and DOM parsing with safe defaults | 3 | ✅ | ✅ | ? | ? | expat 2.9.0 | API |
tur-zlib | zlib + gzip encode/decode for Turmeric | 3 | ✅ | ✅ | ✅ | ✅ | zlib 1.3.1 | API |
Long-form, task-oriented walkthroughs for individual spices. See the full guide index for sidebar navigation.
| Guide | Summary |
|---|---|
| ANSI Terminal Control | Colors, cursor movement, raw-mode input, box drawing, and inline images -- a lightweight ncurses alternative |
| Conflict-Free Replicated Data Types | Convergent data types for offline-first and peer-to-peer state -- counters, sets, registers, maps, and sequences that merge without coordination |
| tur-ecs cross-world systems guide | This guide covers the cross-world ECS surface: a single system that reads from one typed world and writes to another, with the scheduler proving non-conflict per (world, component) pair. |
| Dataframe Guide | Apache Arrow-compatible columnar in-memory format. |
| HTML Parsing | WHATWG HTML parsing with tur-html -- documents and fragments into the shared dom-core tree, the tree's shape, the depth cap, tokenizer-level events, and why parsing is not sanitizing |
| tur-linalg Guide | Dense float linear algebra for Turmeric. |
| Vector and Matrix Math | 2D/3D vectors, 4x4 transform matrices, quaternions with slerp, and scalar helpers -- pure Turmeric, no C deps |
| MessagePack Binary Serialization | Typeclass-driven binary serialization -- encode/decode/derive macros for structs, opaques, and sums, with an accumulating validator for untrusted input |
| Scalability Protocols with nng | Request/reply, pub/sub, pipeline, pair, bus, and survey messaging over inproc, ipc, tcp, and ws (WebSocket, browser peers included) -- blocking calls over a linear socket handle, poll fds for event loops, completion-based async (nng/aio), and per-conversation contexts (nng/ctx) |
| Notebook Guide | Literate .tur.md notebooks with a static renderer and an interactive terminal TUI. |
| Modern OpenGL with GLFW and GLAD | OpenGL 3.3 Core bindings -- window creation, vertex arrays, buffers, shaders, textures, draw calls, and input, with linear GPU handles |
| 2D Vector Graphics Guide | Audience: Turmeric users who want off-screen 2D rendering (PNG/JPEG output, SVG-shape rasterisation, text composition). |
| Probabilistic Data Structures | Bloom and Cuckoo filters, HyperLogLog, Count-Min Sketch, Top-K and t-digest -- answer "seen it?", "how many?", "how often?" and "what's the p99?" over a stream in fixed memory, with merge for sharded data |
| Raylib Graphics and Input | Windows, shapes, text, textures, audio, camera, and input -- the full small-game stack with raylib 5.5 |
| scscm to SuperCollider | Compile scscm, a Scheme-like syntax for SuperCollider, to sclang with tur-scscm, then run it on scsynth or hypercollider's hcsynth -- live or rendered to a WAV |
| Secrets and Crypto Hygiene | Linear key material with tur-secret -- a wipe the optimizer cannot delete, an OS CSPRNG, constant-time comparison, and a Secret type whose destructor the compiler enforces |
| Session Guide (tur-tourist-session) | This guide shows how to add server-side sessions to a tur-tourist app with tur-tourist-session: a cookie + a pluggable store, modelled on Rack's session middleware. |
| Signal Processing with Typed Signal Functions | Oscillators (LFO, band-limited, FM and PM), one-pole, biquad, state-variable and ladder filters, delays and combs, colored noise, sample buffers and scanning with nearest/linear/cubic/sinc interpolation, MIDI note/Hz conversion and sequencing, Scala .scl/.kbm tunings, shapers, ADSR envelopes, and SF-pipeline composition -- a typed Signal/SF abstraction for building audio DSP graphs |
| String Templating Engine | ERB/EJS-style string templating -- interpolation, conditionals, loops, and local bindings for server-side HTML generation |
| Valkey and Redis Client | Connect, run commands, walk reply trees, and subscribe to pub/sub -- a linear Client handle over hiredis, speaking the RESP protocol |
| Filesystem Watcher Guide | cross-platform filesystem watcher (Linux inotify, Darwin kqueue) with debounce + coalescing for CLI tools. |
| WebSocket Client Guide | tur-ws-client is the client half of RFC 6455. |
| WebSocket Server Guide | tur-ws-server is the server half of RFC 6455. |
| XML Parsing (SAX and DOM) | Streaming SAX and in-memory DOM parsing of XML with tur-xml -- choosing between them, the shared node API, push parsing, namespaces, errors, and the safe defaults for untrusted input |