Set version to v0.52.0 - #1056
Merged
Merged
Conversation
Copilot started reviewing on behalf of
Mark Hildebrand (hildebrandmw)
May 12, 2026 19:56
View session
Contributor
There was a problem hiding this comment.
Pull request overview
Updates the Rust workspace and in-repo crate versions for the DiskANN v0.52.0 release.
Changes:
- Bump
[workspace.package]version to0.52.0. - Update workspace path dependency versions for the DiskANN crates to
0.52.0. - Regenerate
Cargo.lockto reflect the new workspace crate versions.
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| Cargo.toml | Bumps workspace/package version and updates workspace dependency versions to 0.52.0. |
| Cargo.lock | Updates lockfile entries for in-repo DiskANN crates to 0.52.0. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Harsha Simhadri (harsha-simhadri)
approved these changes
May 12, 2026
Aditya Krishnan (arkrishn94)
approved these changes
May 12, 2026
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1056 +/- ##
=======================================
Coverage 89.51% 89.51%
=======================================
Files 461 461
Lines 85920 85920
=======================================
Hits 76909 76909
Misses 9011 9011
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Suryansh Gupta (suri-kumkaran)
approved these changes
May 12, 2026
Jordan Maples (JordanMaples)
approved these changes
May 12, 2026
weiyaoluo (SeliMeli)
pushed a commit
to SeliMeli/DiskANN
that referenced
this pull request
Jul 22, 2026
An AI generated, human reviewed list of changes is summarized below. ([microsoft#998](microsoft#998)) `DiskANNIndex::get_degree_stats` now takes an explicit iterator of IDs instead of requiring the data provider to implement `IntoIterator`. ```rust // Before — provider had to impl IntoIterator index.get_degree_stats(&mut accessor)?; // After — caller supplies the ID iterator index.get_degree_stats(&mut accessor, id_iter)?; ``` ([microsoft#1044](microsoft#1044)) With `AlignedBoxWithSlice` removed from the PQ path, the dimension handling has been refactored into a three-layer contract: | Layer | Where | Contract | |---|---|---| | **Boundary (inmem)** | `QueryComputer::new`, `MultiQueryComputer::new`, `DistanceComputer::evaluate_similarity` | `len == dim` (returns `Err` on mismatch) | | **Boundary (disk)** | `PQScratch::set` | `len >= dim`, slices to `[..dim]` | | **Internal** | `TableL2/IP/Cosine::{new, populate}` | Trusted — no re-validation | **Other changes:** - PQ table populate/distance methods now accept `&[f32]` instead of `<U: Into<f32>>`. Callers must pre-decode quantized vectors via `VectorRepr::as_f32`. - Generic trampoline impls (`&Vec<u8>`, `&&[u8]`) on `QueryComputer` / `DistanceComputer` have been removed. ([microsoft#976](microsoft#976)) The free functions `calculate_chunk_offsets` and `calculate_chunk_offsets_auto` have been moved into constructors on `ChunkOffsets` / `ChunkOffsetsView` in `diskann-quantization::views`. ```rust // Before let offsets = calculate_chunk_offsets(dim, num_chunks); // After (allocating) let offsets = ChunkOffsets::partition(dim, num_chunks)?; // After (zero-alloc, borrows caller-owned scratch) let view = ChunkOffsetsView::partition_into(dim, &mut scratch)?; ``` Additionally, `get_chunk_from_training_data` has been moved from public API. ([microsoft#1052](microsoft#1052)) The entire `diskann_providers::model::graph::provider::async_::caching` module has been deleted. **Why:** The `CachingProvider` was an experiment in transparent caching over `DataProvider`. In practice it required double monomorphization of the indexing code, didn't save integration work for bulk methods like `on_elements_unordered`/`distances_unordered`, and was complex to maintain. An internal user who …migrated off it removed ~1,000 lines of code, improved compile times by ~20%, and substantially reduced complexity. **Upgrade:** Manage caching directly in your `DataProvider` implementation. ([microsoft#1045](microsoft#1045)) Native V4 (AVX-512) specializations for 4-bit packed vector distance computations: - **`SquaredL2`** — 16 × `u32` lanes per iteration via `_mm512_madd_epi16`. - **`InnerProduct`** — AVX-512 VNNI (`_mm512_dpbusd_epi32`) over `u8x64` / `i8x64` operands. Previously, V4 hardware fell back to two AVX2 (V3) kernel invocations per 512-bit chunk. The native kernels double per-instruction throughput. No API changes — existing code benefits automatically on AVX-512 capable hardware. * Deprecate 32-bit targets by @suhasjs in microsoft#1022 * Add a fast path to `Map::prepare`. by @hildebrandmw in microsoft#1023 * Add boundary checks in gen_associated_data_from_range() by @Copilot in microsoft#847 * [deps] Don't pull `rayon` as a dependency of `diskann`. by @hildebrandmw in microsoft#1024 * Bump openssl from 0.10.78 to 0.10.79 by @dependabot[bot] in microsoft#1026 * Cleaning up test work and changing the get_degree_stats signature. by @JordanMaples in microsoft#998 * Reduce scalar-quantization benchmark monomorphization by @suri-kumkaran in microsoft#1041 * [diskann-vector] Support truly unaligned distances. by @hildebrandmw in microsoft#981 * rename spherical.json to graph index with spherical quantization by @harsha-simhadri in microsoft#1042 * [PQ Cleanup] Part 2: Consolidate `calculate_chunk_offsets*` by @arkrishn94 in microsoft#976 * PQ: tighten dim contract; right-size scratch buffer by @wuw92 in microsoft#1044 * Add v4 distance kernels (4-bit SquaredL2 / InnerProduct) by @m3hm3t in microsoft#1045 * Remove the Caching Provider by @hildebrandmw in microsoft#1052 * @suhasjs made their first contribution in microsoft#1022 * @m3hm3t made their first contribution in microsoft#1045 **Full Changelog**: microsoft/DiskANN@v0.51.0...v0.52.0 Co-authored-by: Mark Hildebrand <mhildebrand@microsoft.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DiskANN v0.52.0 Release Notes
Breaking Changes
An AI generated, human reviewed list of changes is summarized below.
get_degree_statssignature changed (#998)DiskANNIndex::get_degree_statsnow takes an explicit iterator of IDs instead of requiring the data provider to implementIntoIterator.PQ dimension contract tightened; entries now
&[f32]only (#1044)With
AlignedBoxWithSliceremoved from the PQ path, the dimension handling has been refactored into a three-layer contract:QueryComputer::new,MultiQueryComputer::new,DistanceComputer::evaluate_similaritylen == dim(returnsErron mismatch)PQScratch::setlen >= dim, slices to[..dim]TableL2/IP/Cosine::{new, populate}Other changes:
&[f32]instead of<U: Into<f32>>. Callers must pre-decode quantized vectors viaVectorRepr::as_f32.&Vec<u8>,&&[u8]) onQueryComputer/DistanceComputerhave been removed.calculate_chunk_offsetsrelocated toChunkOffsetsconstructors (#976)The free functions
calculate_chunk_offsetsandcalculate_chunk_offsets_autohave been moved into constructors onChunkOffsets/ChunkOffsetsViewindiskann-quantization::views.Additionally,
get_chunk_from_training_datahas been moved from public API.CachingProviderremoved (#1052)The entire
diskann_providers::model::graph::provider::async_::cachingmodule has been deleted.Why: The
CachingProviderwas an experiment in transparent caching overDataProvider. In practice it required double monomorphization of the indexing code, didn't save integration work for bulk methods likeon_elements_unordered/distances_unordered, and was complex to maintain. An internal user who …migrated off it removed ~1,000 lines of code, improved compile times by ~20%, and substantially reduced complexity.Upgrade: Manage caching directly in your
DataProviderimplementation.New Features
AVX-512 4-bit distance kernels (#1045)
Native V4 (AVX-512) specializations for 4-bit packed vector distance computations:
SquaredL2— 16 ×u32lanes per iteration via_mm512_madd_epi16.InnerProduct— AVX-512 VNNI (_mm512_dpbusd_epi32) overu8x64/i8x64operands.Previously, V4 hardware fell back to two AVX2 (V3) kernel invocations per 512-bit chunk. The native kernels double per-instruction throughput. No API changes — existing code benefits automatically on AVX-512 capable hardware.
Merged PRs
Map::prepare. by Mark Hildebrand (@hildebrandmw) in Add a fast path toMap::prepare. #1023rayonas a dependency ofdiskann. by Mark Hildebrand (@hildebrandmw) in [deps] Don't pullrayonas a dependency ofdiskann. #1024calculate_chunk_offsets*by Aditya Krishnan (@arkrishn94) in [PQ Cleanup] Part 2: Consolidatecalculate_chunk_offsets*#976New Contributors
Full Changelog: v0.51.0...v0.52.0