资讯动态

如何从源码构建honker:SQLite扩展编译与多语言绑定的开发者完整指南

发布时间:2026/9/30 17:34:08 来源:尧图企业网站定制
如何从源码构建honkerSQLite扩展编译与多语言绑定的开发者完整指南【免费下载链接】honkerSQLite extension bindings for Postgres NOTIFY/LISTEN semantics with durable queues, streams, pub/sub, and scheduler项目地址: https://gitcode.com/gh_mirrors/ho/honkerhonker 是一个 SQLite 扩展加多语言绑定的开源项目为 SQLite 带来 Postgres 风格的 NOTIFY/LISTEN 语义、持久化任务队列、事件流和定时调度无需额外部署 Redis 或消息中间件。本指南带你从零完成 honker 源码构建先编译核心的 SQLite 可加载扩展再分别构建 Python、Node.js、Go、Ruby 等各语言绑定并跑通测试验证。全程命令都很短跟着做即可。️ 开始之前先看懂 honker 仓库结构honker 是一个多语言 monorepo但分层非常清晰理解这三层后面的构建命令就一目了然了层级目录作用核心引擎honker-core/共享 Rust 引擎实现队列、流、cron 解析、共享监视器等SQLite 扩展honker-extension/编译产物就是.so/.dylib/.dll可加载扩展注册全部honker_*SQL 函数语言绑定packages/Python、Node、Go、Ruby、Bun、Elixir、C、.NET、JVM、Kotlin 等薄绑定根目录的 Makefile 把所有常用命令都封装成了make目标是最快的入手点CONTRIBUTING.md 里也给出了同样的目录说明。✅ 环境依赖清单一次装好不踩坑不同语言绑定需要的工具链不同建议按需安装Rust 工具链必须编译扩展和 Python 绑定都用它。注意 honker-extension/Cargo.toml 使用了edition 2024需要较新的 Rust 版本遇到 edition 报错时先升级 rustup。Python ≥ 3.11构建 Python 绑定时需要packages/honker/pyproject.toml 明确要求requires-python 3.11构建后端是maturin。Node.js npm构建 Node 绑定时需要。可选MavenJVM/Kotlin 绑定、Bun、Elixir、Go、.NET SDK——只在你需要对应绑定时才装。所有命令都在仓库根目录下执行先克隆代码git clone https://gitcode.com/gh_mirrors/ho/honker cd honker SQLite 扩展编译一行命令出产物整个项目里最关键的构建产物是 SQLite 可加载扩展。任何能执行SELECT load_extension(...)的 SQLite 客户端3.9加载它之后就自动拥有全部honker_*函数。编译命令只有一行cargo build --release -p honker-extension产物输出在target/release/下按平台命名为libhonker_ext.soLinux、libhonker_ext.dylibmacOS或honker_ext.dllWindows。命名规则就写在 honker-extension/Cargo.toml 的注释里crate-type [cdylib]且库名固定为honker_ext。两个可选编译特性默认构建走PRAGMA data_version轮询每 1 ms 检查一次跨进程唤醒延迟在毫秒级。如果想要更快的内核事件或共享内存唤醒路径可以加上特性重新编译cargo build --release -p honker-extension \ --features honker-core/kernel-watcher,honker-core/shm-fast-path这两个特性是 cfg 门控的默认不参与类型检查所以 Makefile 的lint目标会专门跑两遍 clippy 来覆盖它们。 Python 绑定编译maturin 两步走Python 绑定是全家桶包——发布轮子里同时包含 PyO3 原生模块和上面编译出的可加载扩展。官方推荐的构建方式就是一条 make 命令make build-pyo3它背后做了三件事cargo build --release -p honker-extension先编出扩展scripts/copy-python-extension.sh 按当前系统找到libhonker_ext.*并复制到packages/honker/python/honker/_lib/这个目录会被打进 wheel运行时extension_info()就从这里定位扩展maturin develop --release编译 PyO3 模块并装入当前虚拟环境。如果你只想快速验证扩展本身make build build-ext build-pyo3也可以一次全搞定。 其他语言绑定怎么构建各语言绑定都是薄封装直接复用honker-core或扩展产物。按你需要的语言选择对应小节Node.js / BunNode 绑定的原生库是静态链接的装包即带全部能力见 packages/honker-node/README.md。只有当你要把扩展加载到自己已有的 SQLite 连接比如 better-sqlite3、Drizzle时才需要可加载扩展文件——源码构建时把HONKER_EXTENSION_PATH环境变量指向上面编译出的libhonker_ext即可各绑定的查找顺序统一为显式路径参数 →HONKER_EXTENSION_PATH→ 内置副本这套契约在 BINDINGS.md 中有完整对照表。Go / Ruby / Elixir / C / .NET / JVM这些绑定都在 packages/ 目录下维护各自有独立的构建体系Go、Elixir绑定本体不包含扩展文件需要先把扩展编译好再按各自ExtensionPath()/Honker.Extension.path/0的查找规则定位Ruby、.NET、JVM、Kotlin原生资产打包在各自包内按各包 README 的说明用bundle、dotnet、mvn构建即可例如 Makefile 中的test-jvm就是先cargo build -p honker-extension再跑 Maven 测试。各绑定支持的功能面和唤醒路径差异直接查 BINDINGS.md 的 API 对照表不用逐个翻包内文档。 验证构建是否成功跑测试构建完别急着用先跑一遍测试确认环境没问题make test # Rust 核心 Python Node 快速路径 make test-all # 全量含慢速测试soak、真实 cron 边界单语言验证命令make test-rust、make test-python、make test-node、make test-jvm等含义都写在 Makefile 开头的help说明里。跨语言集成测试位于 tests/ 目录覆盖 Python 与 Ruby、Node 互操作等场景——这正是 honker 的核心卖点一种语言入队另一种语言认领任务。⚠️ 一个常见坑升级版本时必须同步刷新Cargo.lock因为 CI 和本地构建全程带--locked缺了对应 lock 行会直接报the lock file needs to be updated详见 CONTRIBUTING.md 的发布说明。本地跑cargo check --workspace即可自动刷新。 小结回顾一下 honker 源码构建的最短路径git clone仓库装好 Rust 工具链按需加 Python 3.11、Node 等cargo build --release -p honker-extension一行编出 SQLite 扩展make build-pyo3完成 Python 绑定的复制扩展 maturin 编译两步其他语言绑定按 packages/ 各 README 构建必要时用HONKER_EXTENSION_PATH指到自编译的扩展make test跑通快速测试构建即完成。构建完成后一个 SQLite 文件里就同时装下了队列、流、pub/sub 和调度器——这正是 honker单文件、零服务器设计的全部意义。【免费下载链接】honkerSQLite extension bindings for Postgres NOTIFY/LISTEN semantics with durable queues, streams, pub/sub, and scheduler项目地址: https://gitcode.com/gh_mirrors/ho/honker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑