diff --git a/CMakeLists.txt b/CMakeLists.txt index 62377bef9..810652815 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,7 +23,7 @@ project(svs # - /bindings/python/tests/test_common.py # Manually keep in-sync with: # - /bindings/python/setup.py - VERSION 0.4.0 + VERSION 0.5.0 ) set(SVS_LIB svs_devel) diff --git a/HISTORY.md b/HISTORY.md index dcbc1e91c..35802b0ec 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,25 @@ +# SVS 0.4.0 Release Notes + +## Additions and Changes + +* Native serialization support for Indexes (#300) + +* Clang-21 compiler support with gcc-11 headers for shared library builds + +* Amazonlinux2 support for shared/static library dropped + +* Consolidated to publish only minimal necessary shared library (14 -> 6) and runtime bindings (2 -> 1) release artifacts + +* Adaptive batch size heuristic for filtered search in Vamana, with new `filter_stop` early-exit parameter (#309) + +* IVF runtime support for `IDFilter`-based filtered search and dynamic `set_intra_query_threads` adjustment after `train()`/`load()` (#322) + +* IVF inter-query thread pool initialization now validates and clamps thread count against the number of centroids (#329) + +* In-memory (mmap) stream index mapping with new `map_to_file` and `map_to_memory` APIs on `FlatIndex` and `VamanaIndex` (#310) + +* Add get_distance and reconstruct_at to VamanaIndex API (#315) + # SVS 0.3.0 Release Notes ## Additions and Changes diff --git a/NEWS.md b/NEWS.md index 3d04dbeec..d0194d5b0 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,21 +1,23 @@ -# SVS 0.4.0 Release Notes +# SVS 0.5.0 Release Notes ## Additions and Changes -* Native serialization support for Indexes (#300) +* New C API for SVS — index construction, search, and lifecycle management from C, including filtered TopK search, memory accounting (`get_memory_usage` / `get_memory_breakdown`), and index threadpool size control (#305, #306, #352, #354, #363, #370) -* Clang-21 compiler support with gcc-11 headers for shared library builds +* Experimental fine-grain concurrent Vamana index, `svs::index::vamana::concurrent::MutableVamanaIndex`, supporting lock-free search concurrent with `add_points`, `delete_entries`, and `consolidate` (#369) -* Amazonlinux2 support for shared/static library dropped +* LVQ and LeanVec dataset support for the fine-grain concurrent Vamana index -* Consolidated to publish only minimal necessary shared library (14 -> 6) and runtime bindings (2 -> 1) release artifacts +* `get_memory_usage()` added to VamanaIndex to report allocated bytes (#345) -* Adaptive batch size heuristic for filtered search in Vamana, with new `filter_stop` early-exit parameter (#309) +* Optional `blocksize_elements` added to `BlockingParameters` (#344) -* IVF runtime support for `IDFilter`-based filtered search and dynamic `set_intra_query_threads` adjustment after `train()`/`load()` (#322) +* `element_size()` added to LVQ and LeanVec datasets -* IVF inter-query thread pool initialization now validates and clamps thread count against the number of centroids (#329) +* `CompressedDataset` instantiations added to the shared library -* In-memory (mmap) stream index mapping with new `map_to_file` and `map_to_memory` APIs on `FlatIndex` and `VamanaIndex` (#310) +* Fixed LeanVec `is_pca` to derive centering from matrix equality rather than matrix presence -* Add get_distance and reconstruct_at to VamanaIndex API (#315) +* Fixed GCC-12.x prefetch-loop collapse in `greedy_search` neighbor prefetch (#361) + +* `Blocked` class refactored to meet allocator requirements (#351) diff --git a/bindings/c/CMakeLists.txt b/bindings/c/CMakeLists.txt index 7a7c50ec4..7dd320769 100644 --- a/bindings/c/CMakeLists.txt +++ b/bindings/c/CMakeLists.txt @@ -13,7 +13,7 @@ # limitations under the License. cmake_minimum_required(VERSION 3.21) -project(svs_c_api VERSION 0.4.0 LANGUAGES CXX C) +project(svs_c_api VERSION 0.5.0 LANGUAGES CXX C) set(TARGET_NAME svs_c_api) include(GNUInstallDirs) diff --git a/bindings/cpp/CMakeLists.txt b/bindings/cpp/CMakeLists.txt index 8baca01de..89ab536e8 100644 --- a/bindings/cpp/CMakeLists.txt +++ b/bindings/cpp/CMakeLists.txt @@ -13,7 +13,7 @@ # limitations under the License. cmake_minimum_required(VERSION 3.21) -project(svs_runtime VERSION 0.4.0 LANGUAGES CXX) +project(svs_runtime VERSION 0.5.0 LANGUAGES CXX) set(TARGET_NAME svs_runtime) # IVF requires MKL, so it's optional diff --git a/bindings/cpp/conda-recipe/meta.yaml b/bindings/cpp/conda-recipe/meta.yaml index e75bc3641..0fa484d8b 100644 --- a/bindings/cpp/conda-recipe/meta.yaml +++ b/bindings/cpp/conda-recipe/meta.yaml @@ -13,7 +13,7 @@ # limitations under the License. -{% set version = '0.4.0' %} +{% set version = '0.5.0' %} {% set buildnumber = 0 %} {% set variant_suffix = environ.get('SUFFIX', '').replace('-', '_') %} diff --git a/bindings/cpp/include/svs/runtime/version.h b/bindings/cpp/include/svs/runtime/version.h index c8bb6d93f..36608039f 100644 --- a/bindings/cpp/include/svs/runtime/version.h +++ b/bindings/cpp/include/svs/runtime/version.h @@ -41,7 +41,7 @@ #ifndef SVS_RUNTIME_VERSION_MINOR /// Minor version number - incremented for backward-compatible feature additions -#define SVS_RUNTIME_VERSION_MINOR 4 +#define SVS_RUNTIME_VERSION_MINOR 5 #endif #ifndef SVS_RUNTIME_VERSION_PATCH @@ -51,7 +51,7 @@ #ifndef SVS_RUNTIME_VERSION_STRING /// Complete version string -#define SVS_RUNTIME_VERSION_STRING "0.4.0" +#define SVS_RUNTIME_VERSION_STRING "0.5.0" #endif #ifndef SVS_RUNTIME_API_VERSION diff --git a/bindings/python/setup.py b/bindings/python/setup.py index c00193899..690731da5 100644 --- a/bindings/python/setup.py +++ b/bindings/python/setup.py @@ -40,7 +40,7 @@ setup( name="scalable-vs", - version="0.4.0", + version="0.5.0", description="Scalable Vector Search (SVS) is a performance library for vector similarity search.", long_description=long_description, long_description_content_type="text/markdown", diff --git a/bindings/python/tests/test_common.py b/bindings/python/tests/test_common.py index 3ac6f52e8..fbfcb1376 100644 --- a/bindings/python/tests/test_common.py +++ b/bindings/python/tests/test_common.py @@ -42,7 +42,7 @@ def tearDown(self): ##### def test_version(self): - self.assertEqual(svs.library_version(), "v0.4.0") + self.assertEqual(svs.library_version(), "v0.5.0") def test_conversion(self): # signed diff --git a/tests/svs/lib/version.cpp b/tests/svs/lib/version.cpp index 4e0561b2a..8afb0e400 100644 --- a/tests/svs/lib/version.cpp +++ b/tests/svs/lib/version.cpp @@ -46,6 +46,6 @@ CATCH_TEST_CASE("Version Numbers", "[lib][versions]") { // Keep in-sync with CMakeLists.txt CATCH_TEST_CASE("Global Version", "[lib][versions]") { - static_assert(svs::lib::svs_version == svs::lib::Version(0, 4, 0), "Version mismatch!"); - CATCH_REQUIRE(svs::lib::svs_version == svs::lib::Version(0, 4, 0)); + static_assert(svs::lib::svs_version == svs::lib::Version(0, 5, 0), "Version mismatch!"); + CATCH_REQUIRE(svs::lib::svs_version == svs::lib::Version(0, 5, 0)); }