chdb-core v26.7.3
Full changelog: v26.7.0...v26.7.3 — 113 commits, 21 pull requests.
ClickHouse baseline unchanged: v26.7.2.1-stable.
The first stable release carrying the Durable V1 C ABI, and the first chdb-core on PyPI that has it. A chdb.durable user needs nothing but pip install -U chdb-core — name chdb-core rather than chdb, because pip leaves a satisfied dependency alone and an installed 26.7.0 satisfies chdb's floor.
🚀 New features
- Backup, restore and query classification in the C ABI (#202) —
chdb_backup_database_n,chdb_restore_database_nandchdb_classify_query_n. A caller passes the database name and the archive path as separate arguments instead of assemblingBACKUP DATABASE ... TO File(...)and quoting it itself, and can ask the parser what a statement does without executing it: its class, how many executable statements the text holds, whether it carries a credential, and whether every persistent write lands in one named database. The report is versioned by size, so a caller that setsstruct_sizegets a refusal rather than a write past the end of its struct. The same surface is exposed through_chdb.connectin the Python module. chdb_shutdown()(#185) — stops the engine's thread pools. The transition is atomic against concurrent connects and against itself.- ADBC: read-only connections, statement cancellation and bounded reads (#230).
- Python UDFs accept
Optional[X]andX | Noneannotations (#205).
🐛 Bug fixes
- Connecting no longer takes over the host process's deadly signal handlers (#224).
python -m chdbcrashed with aNameError(#219).- Fixed a deadlock in the parallel Arrow output encoder's backpressure wait (#213).
- An active streaming read is cancelled before a query on the same connection (#215), and cancelling an exhausted stream is a no-op, like fetching one (#180).
- ADBC entrypoints are exported from Linux Python wheels (#189), and Arrow ADBC compatibility options propagate (#197).
- Connection argv settings apply to the connection's own session (#196).
libchdb.ano longer exposes bundled libc++ / libc++abi / libunwind symbols (#199), and no longer overrides libc'sposix_spawn(#218).chdb.hships world-readable in the libchdb release tarballs (#195).
⚡ Performance
- Many-core scaling and DataFrame scan speed (#183).
🔧 CI / build / release
- A release tag has to name the ClickHouse line the tree is synced to (#184).
- Every release now carries a
SHA256SUMSover its assets (#218). - PyPI publication is decided per release (#220, #229): a candidate never publishes, only a plain
vX.Y.Ztag publishes, and a release can opt out through a marker in its own notes. This one does not opt out, which is why it is on PyPI. - Linux ARM64 debuginfo is packaged as
tar.xzto stay under GitHub's 2 GiB asset limit (#201). - CI workflows hardened against self-hosted runner infrastructure failures (#208).
- Removed the dead ownership probe from
operator delete(#211).
Assets
Four abi3 wheels (macOS x86_64 / arm64, manylinux x86_64 / aarch64), libchdb.so and libchdb.a per platform with chdb.h and chdb.hpp, debug symbols, and SHA256SUMS.