Skip to content

Kiddo 6.0.0-alpha.1#301

Open
sdd wants to merge 120 commits into
masterfrom
feature/update-project-layout
Open

Kiddo 6.0.0-alpha.1#301
sdd wants to merge 120 commits into
masterfrom
feature/update-project-layout

Conversation

@sdd
Copy link
Copy Markdown
Owner

@sdd sdd commented May 3, 2026

This PR is to introduce the first alpha of Kiddo 6. Almost a year in the making and counting, it is effectively a full rewrite, addressing some long-standing issues.

  • v6 represents a fundamental shift to a unified single KdTree struct, replacing the previous mutable/immutable and float/fixed splits.
  • The macro-based query code that was used for v5 to permit more code reuse between plain and rkyv queries has been eliminated.
  • The blanket impls for Axis from v5 have been removed, allowing Axis to now be implemented for floats, fixed point types, and unsigned ints. This removed the need for separate Axis and AxisFixed traits which drove the previous v5 requirement for separate float and fixed tree structs.
  • The need for separate mutable / immutable trees has been removed by introducing the LeafStrategy trait, which the KdTree has as a generic property. LeafStrategies can be mutable or immutable.
  • KdTree is also now generic over the new StemStrategy trait too. This allows experimentation and selection of alternative stem layouts and traversal mechanisms, orthogonal to the choice of leaf strategy.
  • The query API has been refactored from a handful of separate methods that suffered from a bit of a cartesian product issue due to increasing numbers of options nd query types to a single unified fluent builder API. The builder approach is much more orthogonal, and protects against breaking changes when new options are introduced in the future. It permits constraints to be encoded in the type system for impossible option combinations, prevents the need for as many methods that differ only by some combination of features, and allows orthogonality against result projection, query types, and query configurations with defaults that match the v5 era separate methods.

At the moment v6 is still not quite ready for production use cases but I'm hoping to release it soon as an alpha so that people are able to try it out if interested and provide feedback, bug reports, and performance reports, to help get it to the point where it is production-ready. I'll be updating the benchmarking suite too with results from v6, as well as updating the stale results from other libraries to use their latest versions. I may add some new libraries against which to run the benchmarks too (suggestions welcome).

@sdd sdd force-pushed the feature/update-project-layout branch 6 times, most recently from 106db3a to 865b3b7 Compare May 5, 2026 18:25
@codecov
Copy link
Copy Markdown

codecov Bot commented May 5, 2026

Codecov Report

❌ Patch coverage is 68.96163% with 275 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.24%. Comparing base (11870f8) to head (7a94da2).

Files with missing lines Patch % Lines
src/dist/minkowski/avx2.rs 0.00% 198 Missing ⚠️
src/dist/chebyshev/avx2.rs 0.00% 36 Missing ⚠️
src/dist/distance_metric_core.rs 79.01% 17 Missing ⚠️
src/dist/common.rs 0.00% 16 Missing ⚠️
src/dist/mod.rs 97.42% 8 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #301      +/-   ##
==========================================
- Coverage   94.88%   86.24%   -8.64%     
==========================================
  Files          54       75      +21     
  Lines        5705    18464   +12759     
  Branches     5705    18464   +12759     
==========================================
+ Hits         5413    15925   +10512     
- Misses        274     2441    +2167     
- Partials       18       98      +80     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@sdd sdd force-pushed the feature/update-project-layout branch 3 times, most recently from 087f701 to 3535246 Compare May 5, 2026 18:44
@sdd sdd force-pushed the feature/update-project-layout branch 4 times, most recently from e1e7a04 to 2703b12 Compare May 13, 2026 20:50
@sdd sdd force-pushed the feature/update-project-layout branch from 2703b12 to 95e97ff Compare May 13, 2026 20:53
@sdd sdd force-pushed the feature/update-project-layout branch 4 times, most recently from f997037 to 6ac5775 Compare May 27, 2026 20:17
target_feature_inline_always has been removed from nightly
@sdd sdd force-pushed the feature/update-project-layout branch from 6ac5775 to f8f047a Compare May 27, 2026 21:03
@sdd sdd force-pushed the feature/update-project-layout branch from 5ab903a to 7a94da2 Compare May 28, 2026 06:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant