Skip to content

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.

BindingPackage proofQueueStreamsNotify/listenSchedulerOutboxWatcher backends
SQLite extensionload smokeSQLSQLnotify SQL onlySQLSQLhost language must watch/read
Python honkeryesyesyesyesyesyespoll, kernel, shm
Node @russellthehippo/honker-nodeyesyesyesyesyesyespoll, kernel, shm
.NET Honkeryesyesyesyesyesyespoll, kernel, shm
Rust honkerCIyesyesyesyesyespoll, kernel, shm
GoCIyesyesyesyesyespoll, kernel, shm
Bun @russellthehippo/honker-bunCIyesyesyesyesyespoll, kernel, shm
C++CIyesyesyesyesyespoll, kernel, shm
Java dev.honker:honkerCIyesyesyesyesyespoll, kernel, shm
Kotlin dev.honker:honker-kotlinlocal + ORM CIyesyesyesyesyespoll, kernel, shm
Ruby honkeryesyesyesyesyesyespoll, kernel, shm
Elixir honkerCIyesyesyesyesyespoll, kernel, shm
BindingNamed handler registryWorker dispatcherConvenience syntax
PythonyesCLI and in-process@task, @periodic_task
JavayesrunTasksexplicit TaskRegistry / TaskHandle
KotlinyesrunTasksKotlin helpers over the Java registry
Node, Rust, Go, Ruby, Bun, Elixir, .NET, C++nonoqueue 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.

  • 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.
  • 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.