Ecosystem
Everything that consumes Amber lives outside the engine repository and
reaches it through one of three seams: libamber.so, the in-process ext/
registry, or a TCP socket. Nothing below is mentioned anywhere in src/, and none of it is
compiled, linked or configured by the engine's build.
The satellites
| Repository | Seam | What it is |
|---|---|---|
| python-amber | libamber.so |
pip install amber. Zero-copy NumPy views of Amber columns, pandas and Arrow bridges, dynamic dispatch (am.gentq(10_000_000)). |
| amber-arrow | libamber.so |
ArrowArrayStream over an Amber table — batches that are windows onto one export, not slices of it. Plus amberd, the TCP query server, and an Arrow Flight daemon. |
| amber-jupyter | python-amber |
A Jupyter kernel. Amber cells and %%python cells in one process, so a column crosses as a pointer. |
| amber-tick | store + runtime | A US-equity market simulator, a partitioned column store the engine reads natively, TAQ analytics, a live tickerplant/RDB/HDB pipeline and provisioned dashboards. |
| grafana-amber | amberd socket |
Live dashboards. Bare qSQL panels, column-oriented on the wire, with time macros in both epochs. |
| vscode-amber | amberd socket |
Syntax highlighting, and a standalone LSP daemon with qSQL-aware completion, idiom hovers and diagnostics that never evaluate. |
| amber-ai | ext/ registry |
A local, offline co-pilot that reads your live tables before it answers. One endpoint, 127.0.0.1, and it cannot hang or break the REPL. |
| amber-notepad | WebAssembly | The real C interpreter compiled to wasm32 with plain clang. A split-pane editor with Result / AST / Bytecode tabs, twelve bundled programs, fully offline. |
| amber-flame | python-amber / amberd |
A visual profiler — flamegraphs, Speedscope and Chrome tracing, built on the engine's own \trace. |
One build flag (--shared), one export map (src/libamber.map) and one
section of ext.h. Delete every satellite and ./build.sh produces
byte-for-byte what it produced before.
Picking a seam
libamber.so
Same process, same heap, same address space. This is the only seam where a query result crosses as a pointer. Use it whenever the data is large and the consumer can be in-process.
python-amber · amber-arrow · amber-jupyter
ext/ registry
Compiled into the binary you already had, plugged in from a constructor. Use it
when you are extending the language or the REPL — new verbs, new \-commands,
editor behaviour.
amber-ai
TCP socket
A different process, possibly a different machine, definitely a different language. Results are serialised. Use it for dashboards, editors and anything that must survive the engine restarting.
grafana-amber · vscode-amber
Version compatibility
Every satellite that links the engine checks amber_abi_version() at load time and
refuses politely on a mismatch, naming both numbers. The ext/-seam installer additionally
checks the target's version before it copies a single file, so an install against the wrong engine
fails before it touches anything.