Releases: AlayaDB-AI/AlayaLite
Release list
v1.0.4
What's Changed
- feat(diskann): expose Python update APIs by @ScissorJack-ever in #105
- feat(diskann): expose cross-platform Python update APIs by @ScissorJack-ever in #106
Full Changelog: v1.0.3...v1.0.4
v1.0.3
Highlights
Yi-aligned DiskANN update path, coroutine-based async I/O, and search hot-path optimizations — targeting 100M+ scale search throughput.
What's New
Query-level coroutine pipelining
search_pipelined() drives concurrent query coroutines over a shared io_uring reactor. Each query suspends on beam-wave reads instead of parking a thread; throughput follows Little's law. Requires update_io=uring.
Batched PQ distance kernel
pq_distance_batch() gathers code rows into a contiguous stack tile with software prefetch, then accumulates chunk-major so the dist_table row stays L1-hot. Eliminates the per-neighbor dependent random 32B code fetch that dominated eval at 100M scale. Bit-identical to the scalar path.
Coroutine async update I/O
The update path uses a cooperatively-polled io_uring reactor for asynchronous disk I/O, replacing blocking threads during page reads/writes.
Unified page pool
Searches peek and fill the shard page cache, so hot pages written by updates are visible to subsequent searches without cold reads.
Performance improvements
- Dirty-word visited bitset:
clear()costs O(words set) instead of full-array memset, removing ~12MB per-query DRAM bandwidth wall at 100M slots. - Page cache node recycling: at steady-state capacity,
write()splices the LRU victim's map node and 4KB buffer in-place instead of erase+alloc. - Tombstone snapshot skip:
make_search_snapshot()skips bitmap copy when count is zero — zero overhead on the common post-compaction path.
Build & tooling
- Modular CMake rewrite with presets-based layout
- Official Conan dependency provider replaces hand-rolled scripts
make formatnow routes through pre-commit pinned formatters (no more version-drift)- Python runtime dependencies corrected; rag subpackage repaired
Fixes
- Portable
alaya::prefetch_l3()replaces__builtin_prefetchfor MSVC compatibility io_engine.hppadds<io.h>andssize_ttypedef for Windows buildsuring_reactor_testgated behind Linux platform check
What's Changed
- perf(diskann): Yi-aligned update path, async I/O, and search hot-path optimizations by @huanglune in #103
Full Changelog: v1.0.2...v1.0.3
v1.0.2
What's Changed
- perf(diskann): reduce search scratch allocations by @huanglune in #101
- fix(python): preserve API state on failed operations by @huanglune in #102
Full Changelog: v1.0.1...v1.0.2
v1.0.1
What's Changed
- feat(diskann): self-contained DiskANN disk index with in-place updates by @huanglune in #99
Full Changelog: v1.0.0...v1.0.1
v1.0.0
What's Changed
- ci: enable Windows build and skip Python 3.8 on Windows by @huanglune in #61
- ci: add pre-commit hook to auto detect Chinese characters by @huanglune in #63
- docs: add community documentation and templates by @huanglune in #64
- fix: update rag example dependency by @Carl-Rabbit (0339b41)
- fix: try resolve by @Carl-Rabbit (cdc3048)
- feat: add scalar storage, hybrid search, and recovery support by @ScissorJack-ever in #67
- feat(disk,laser,python): DiskCollection batch_search, LASER unified fit, thread-safety, CI hardening by @huanglune
in #75 - feat(laser): warmup path fix and PCA write optimization by @huanglune in #77
- test(bench): consolidate benchmark smoke tests by @huanglune in #78
- chore(repo): require scope in commit messages and PR titles by @huanglune in #79
- chore(license): relicense to AGPL-3.0 and adopt REUSE/SPDX by @huanglune in #80
- fix(rabitq): improve portable builds and wheel CI by @ScissorJack-ever in #76
- chore(recovery): harden WAL snapshot handling by @ScissorJack-ever in #81
- ci(code-checker): remove duplicate python unit gate by @ScissorJack-ever in #85
- refactor(pybind,python): codegen-driven index dispatch by @huanglune in #86
- fix(build): resolve generic cc/c++ to canonical compiler for Conan detect by @huanglune in #87
- fix(laser,executor): stabilize LASER QG search validation by @huanglune in #88
- fix(storage): enforce unique scalar item ids by @ScissorJack-ever in #82
- feat(vamana): log build progress with ETA and 60s heartbeat by @huanglune in #89
- feat(laser,simd): runtime SIMD dispatch with AVX-512BW selection by @huanglune in #90
- feat(ci,laser): portable LASER I/O backend with libaio-vs-threadpool CI by @huanglune in #91
- feat(laser,windows): add IOCP I/O backend and enable Windows wheel lane by @huanglune in #93
- chore(release): v1.0.0 by @huanglune in #94
- ci(code-checker): skip commit-format-check on push to main by @huanglune (4feed59)
- ci(cibuildwheel): trigger on v* tags, attach wheels to release + PyPI by @huanglune (5ffb64e)
- docs(readme): add hybrid search quickstart and benchmark by @ScissorJack-ever in #97
Full Changelog: v0.1.1a1...v1.0.0
v0.1.1a1
What's Changed
- perf: optimize CI test execution with parallel testing and micro dataset by @huanglune in #51
- refactor: Refactor build system and add SIMD optimizations by @huanglune in #53
- refactor: Improve Makefile and fix compiler warnings by @huanglune in #57
- ci: add cibuildwheel support for Linux and macOS multi-arch builds by @huanglune in #59
Full Changelog: v0.1.0a3...v0.1.1a1
v0.1.0a3 - Alpha Release
What's Changed
- feat: finish standalone app by @huanglune in #35
- feat: add reset functionality with disk deletion option by @huanglune in #36
- fix: rag example embeddings check fail error by @Carl-Rabbit in #37
- refactor: refactor annbenchmark adaptation by @huanglune in #38
- feat: add SetMetricRequest and endpoint to set collection metric by @huanglune in #39
- feat: update alayalite version to 0.1.0a3 by @huanglune in #40
- docs: update annbenchmark result by @huanglune in #41
- feat: add RaBitQ implementation by @ScissorJack-ever in #30
- fix: update alayalite wheel URL in Dockerfile to correct version by @huanglune in #42
- fix: resolve CMake compile warnings by @huanglune in #43
- refactor: optimize utility and hnsw builder implementation by @ScissorJack-ever in #44
- refactor: simplify Space and dataset utils by @huanglune in #45
- fix: add perl-Time-Piece installation to before-build script by @huanglune in #47
- fix: add cache permission fix step by @huanglune in #48
- feat: allow custom index params in Collection and add corresponding test by @ScissorJack-ever in #46
- fix: fix import wrong package in ARM architecture by @huanglune in #49
Full Changelog: v0.1.0a2...v0.1.0a3
v0.1.0a2 - Alpha Release
What's Changed
- fix: multiple bug fixes by @huanglune in #6
- fix: delete_by_filter cannot work properly by @Carl-Rabbit in #8
- fix: fix batch query bug by @huanglune in #11
- fix: correct search results after deletion by @huanglune in #12
- refactor: refactor CI and Python compilation by @huanglune in #13
- fix: fix the bug in automatically compiling whl packages by @huanglune in #14
- feat: compile and run on MacOS and Windows by @haotian-l in #17
- feat: add reindexing support with test by @haotian-l in #22
- feat: finish python codecov by @huanglune in #23
- docs: change relative links to absolute URLs for online access and add icons by @huanglune in #24
- feat: complete typo's pre-commit check by @huanglune in #26
- fix: Bug fixes and small refactors by @ScissorJack-ever in #27
- refactor: modularize CMake configuration and add formatting/lint tooling by @huanglune in #31
- feat: feat codecov C++ support by @huanglune in #33
New Contributors
- @haotian-l made their first contribution in #17
Full Changelog: https://github.com/AlayaDB-AI/AlayaLite/commits/v0.1.0a2
v0.1.0a1 - Alpha Release
This is the very first alpha release of Alayalite.
This version provides the core functionalities of Alayalite, intended for early testing and feedback.
Installation:
You can install this alpha version using pip:
pip install alayalite==0.1.0a1
Important Notes:
- This is an early preview and may contain bugs or breaking changes in future versions.
- We welcome any issues or suggestions via GitHub Issues.