Binding support
Honker’s core is Rust. The extension owns the SQLite schema and SQL functions. Bindings are thin language wrappers over that same shape.
“Yes” means the feature has a typed binding. “SQL” means the extension feature is available through raw SQL, but the language wrapper does not expose the nice API yet. The Package proof column says whether the binding itself is tested in root CI or only by a local proof; feature-level exceptions are noted below. For install and ORM details, see the language guides.
| Binding | Package proof | Queue | Streams | Notify/listen | Scheduler | Outbox | Watcher backends |
|---|---|---|---|---|---|---|---|
| SQLite extension | load smoke | SQL | SQL | notify SQL only | SQL | SQL | host language must watch/read |
Python honker | yes | yes | yes | yes | yes | yes | poll, kernel, shm |
Node @russellthehippo/honker-node | yes | yes | yes | yes | yes | yes | poll, kernel, shm |
.NET Honker | yes | yes | yes | yes | yes | yes | poll, kernel, shm |
Rust honker | CI | yes | yes | yes | yes | yes | poll, kernel, shm |
| Go | CI | yes | yes | yes | yes | yes | poll, kernel, shm |
Bun @russellthehippo/honker-bun | CI | yes | yes | yes | yes | yes | poll, kernel, shm |
| C++ | CI | yes | yes | yes | yes | yes | poll, kernel, shm |
Java dev.honker:honker | CI | yes | yes | yes | yes | yes | poll, kernel, shm |
Kotlin dev.honker:honker-kotlin | local + ORM CI | yes | yes | yes | yes | yes | poll, kernel, shm |
Ruby honker | yes | yes | yes | yes | yes | yes | poll, kernel, shm |
Elixir honker | CI | yes | yes | yes | yes | yes | poll, kernel, shm |
Function Task Helpers
Section titled “Function Task Helpers”| Binding | Named handler registry | Worker dispatcher | Convenience syntax |
|---|---|---|---|
| Python | yes | CLI and in-process | @task, @periodic_task |
| Java | yes | runTasks | explicit TaskRegistry / TaskHandle |
| Kotlin | yes | runTasks | Kotlin helpers over the Java registry |
| Node, Rust, Go, Ruby, Bun, Elixir, .NET, C++ | no | no | queue and result primitives only |
This table describes the high-level function-task layer, not queue support. All bindings can enqueue jobs and reach the underlying result table through a typed helper or the shared extension SQL.
What CI Proves
Section titled “What CI Proves”- PR CI runs Rust core/extension on Linux, macOS, and Windows.
- PR CI runs Python on Linux, macOS, and Windows.
- PR CI runs Node on Linux, macOS, and Windows.
- PR CI runs .NET on Linux, macOS, and Windows.
- The aggregate Linux binding smoke runs Rust wrapper, Go, .NET Python interop, C++, Bun, Ruby, Elixir, and Ruby/Python interop.
- The packaged-install proof workflow builds and installs Python, Node, Ruby, and .NET packages into clean throwaway consumers.
- PR CI builds and installs the Java artifact, runs the Java package tests, and exercises the documented JVM ORM recipes. The Kotlin Exposed ORM recipe also runs in PR CI. The Kotlin wrapper package tests and clean-consumer proof remain local checks.
- Node runs cross-process watcher-backend queue proofs so extension loading, database reopen, SHM reopen, wake delivery, and no-fallback behavior are exercised outside a single runtime process.
What Is Not Proven Yet
Section titled “What Is Not Proven Yet”- Published registry installs after release. The proof workflow uses locally-built artifacts, which catches packaging shape but not registry permissions or CDN weirdness.
- Every possible cross-language pair. CI proves representative pairs and shared table behavior. It does not run N x N interop.
- Cross-binding named-consumer checkpoints involving Node. The current Node wrapper reverses the topic and consumer arguments at its stream-offset SQL boundary; Node resume is internally consistent, but another binding will not see the same saved checkpoint.
- Long soak on every OS. The scary nightly workflow soaks Linux; PR CI stays shorter.