存储库:https://github.com/Query-farm-haybarn/haybarn

Haybarn

Haybarn 是 DuckDB 的一个独立衍生发行版,由 DuckDB 驱动。

Haybarn 将 DuckDB 源码构建为自有品牌的二进制文件、库和一个已签名的扩展生态系统,并采用独立的发布节奏。它由 Query Farm LLC 发布。

Haybarn 与 DuckDB 基金会或 DuckDB Labs 无关,不受其赞助,也未经其认可。DuckDB 是 DuckDB 基金会的商标。详情请参见 NOTICE。

重要说明

Haybarn 1.5.4 目前处于发布候选(release-candidate)阶段。当前标签为 haybarn-v1.5.4-rc1。最终版 1.5.4 将在扩展目录稳定后发布。在此之前,下面的安装片段明确指定了 rc 频道。API 和磁盘存储格式继承自上游 DuckDB v1.5.4,在 rc 版本之间不会发生变化。

所有 Haybarn 仓库的实时构建和发布状态:https://haybarn-status.query.farm。

此 Haybarn 发布版本基于 DuckDB v1.5.4 构建。

Haybarn 交付内容

制品 名称 分发渠道
CLI haybarn GitHub Releases, npm (@haybarn/cli-*), PyPI (haybarn-cli)
共享库 libhaybarn.{so,dylib,dll} GitHub Releases
静态库 libhaybarn_static.a GitHub Releases
Python 绑定 haybarn PyPI (haybarn), Query-farm-haybarn/haybarn-python
Node 绑定 @haybarn/node-api npm, Query-farm-haybarn/haybarn-node-neo
JDBC 驱动 farm.query.haybarn:haybarn_jdbc Maven Central, Query-farm-haybarn/haybarn-jdbc
Rust crate haybarn crates.io, Query-farm-haybarn/haybarn-rust
WASM @haybarn/haybarn-wasm npm, Query-farm-haybarn/haybarn-wasm
核心扩展 Haybarn 签名 https://haybarn-extensions.query.farm/core
社区扩展 Haybarn 签名,针对 Haybarn 引擎重新构建 https://haybarn-extensions.query.farm/community

C/C++ API、duckdb:: 命名空间、公共头文件(duckdb.h/.hpp)、DUCKDB_VERSION 宏、扩展平台字符串、.duckdb_extension 文件后缀以及磁盘数据库格式与上游 DuckDB 保持一致——Haybarn 在 ABI 和文件格式上兼容。不同的地方在于品牌标识、制品名称、扩展信任根、扩展缓存目录以及发布/分发管道。

安装 CLI

# npm(无需安装)
npx haybarn@rc

# PyPI(无需安装)
uvx haybarn-cli==1.5.4rc1          # 或 `pipx run haybarn-cli==1.5.4rc1`

# GitHub Releases — 根据您的操作系统/架构选择对应的 zip 包
https://github.com/Query-farm-haybarn/haybarn/releases

三个渠道均提供相同的 haybarn 二进制文件,均基于相同的引擎提交构建。一旦 1.5.4 正式版发布,npx haybarnuvx haybarn-cli 将无需 @rc / ==… 等后缀即可正常使用。

Python

Python 包名和导入名均为 haybarn。由于 API 表面与 DuckDB 完全相同,迁移现有代码只需一行改动:

import haybarn as duckdb

对于您无法编辑的第三方代码,可以使用一个可选的兼容性垫片:

import haybarn.compat   # 将 `haybarn` 注册为 `duckdb` 模块
import duckdb           # 现在解析为 Haybarn

haybarn 库发布在 PyPI 上(在 rc 阶段使用 pip install --pre haybarn),在 Query-farm-haybarn/haybarn-python 中基于 20 种组合(操作系统 × Python 版本)的 wheel 矩阵构建。haybarn-cli PyPI 项目(打包的 CLI)是独立的,并且也已上线。

扩展

Haybarn 扩展的安装方式与 DuckDB 相同:

INSTALL iceberg;
LOAD iceberg;

它们由 haybarn-extensions.query.farm 提供服务(核心扩展在 /core 下,社区扩展在 /community 下),并使用单个 Haybarn RSA 密钥签名。DuckDB 签名的扩展无法在 Haybarn 引擎上加载——信任根是有意分开的。

扩展二进制文件缓存在 ~/.haybarn/extensions/ 下(而非 ~/.duckdb/extensions/)。

分发与供应链

二进制文件发布在 GitHub Releases 上,附带 SHA256SUMS 和分离的 GPG 签名(HAYBARN/haybarn_release_signing.pub)。

SLSA 构建来源证明通过 actions/attest-build-provenance 附加到每个发布制品上。使用以下命令验证:

gh attestation verify haybarn_cli-linux-amd64.zip \
  --repo Query-farm-haybarn/haybarn

扩展托管在 Cloudflare R2 上,通过 haybarn-extensions.query.farm 提供服务,每个资源前端独立(每个部署的制品都位于一个由版本 + git sha 键控的不可变 URL 上)。

操作系统原生代码签名(Apple Developer ID + Windows Authenticode)尚未配置。

从源码构建

make release

这将生成 build/release/haybarnbuild/release/src/libhaybarn.*。有关前提条件和构建选项,请参见上游 DuckDB 构建文档——它们同样适用。

仓库布局

Haybarn 作为 duckdb/duckdb 的硬分支(hard fork)进行维护。所有 Haybarn 特有的更改都作为一个精选的小型提交栈,堆叠在上游发布标签之上,因此与 DuckDB 的差异是可审计的,并且易于向前移植。采用新上游版本的变基过程在 HAYBARN/REBASE.md 中有文档说明。

Query-farm-haybarn 组织下的相关仓库:

仓库 用途
haybarn(本仓库) 引擎分支、核心扩展配置、树内扩展
haybarn-python Python 绑定——fork of duckdb-python
haybarn-node-neo Node 绑定——fork of duckdb-node-neo
haybarn-jdbc JDBC 驱动——fork of duckdb-java
haybarn-rust Rust crate——fork of duckdb-rs(向 crates.io 发布 haybarn、libhaybarn-sys、haybarn-loadable-macros)
haybarn-iceberg, haybarn-ducklake, haybarn-delta, haybarn-httpfs 这些核心扩展的构建分支
haybarn-community-extensions duckdb/community-extensions 的镜像,针对 Haybarn 引擎重新构建
haybarn-extension-ci-tools duckdb/extension-ci-tools 的分支,包含 vcpkg + GHCR + ccache 补丁

许可证

Haybarn 采用 MIT 许可证分发,与 DuckDB 相同。上游许可证在 LICENSE 中原样保留。修改列表和商标归属请参见 NOTICE

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐