Skip to content

Releases: jlblancoc/nanoflann

nanoflann 2.0.1

Choose a tag to compare

@github-actions github-actions released this 11 Oct 23:24
18f4edf
  • Merge pull request #322 from jlblancoc/fix/planesplit-build-regression
    Fix single-thread build regression: restore two-pass partition in planeSplit()
  • Restore two-pass Hoare partition in planeSplit()
    The one-pass three-way partition introduced in 1.9.0 swaps almost every
    element it visits, while the previous two-pass scheme only swaps misplaced
    pairs (about 7x fewer swaps on LiDAR data). This made the single-thread
    KD-tree build 9-12% slower than in 1.8.0.
    The two-pass version is restored over half-open ranges, so it stays safe
    for unsigned Offset types, and keeps comparing coordinates in DistanceType.
    Results are unchanged. A new test exercises heavy ties on the split planes,
    where all three partition regions are populated.
  • fix test warnings for ignored return values
  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

nanoflann 2.0.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 22:57
  • Add compile-time product-manifold metrics (SO2, SO3, SE2, SE3, S^N, tori and products) for exact non-Euclidean nearest-neighbor search (C++17, opt out with NANOFLANN_NO_MANIFOLDS). Supported by the static and the incremental KD-trees.
  • Tighter block-level pruning bound for SO(3), up to ~28x faster queries on rotation-heavy data.
  • Add NANOFLANN_INCREMENTAL_NO_FREELIST (ablation-only) switch.
  • Breaking: remove the legacy SO2_Adaptor / SO3_Adaptor metrics, superseded by Manifold_Adaptor. SO(2) and SO(3) now require C++17; C++11 users needing the old metrics should stay on nanoflann 1.x.
  • Honor NANOFLANN_NODE_ALIGNMENT > 16 in the node array before C++17 and in PooledAllocator (#321).
  • Robustness and performance: reject corrupt vector sizes in load_value(), cheaper post-deletion rebalancing in the incremental index, radius results sorted once in the dynamic adaptor.
  • KDTreeEigenMatrixAdaptor now owns its index via std::unique_ptr.
  • New examples (SE3, S2, incremental Euclidean and manifold) and tests (Eigen adaptor, radius boundary, incremental manifolds); CI matrix for the compile-time macros.
  • Docs: README and Doxygen refresh, clarify that chord_sq_to_angle returns an arc angle.
  • Remove dead Travis CI files; add a release helper script.
  • Contributors: Jose Luis Blanco-Claraco

nanoflann 1.14.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 07:42
  • Store kd-tree nodes in one contiguous std::vector instead of pointer-linked
    allocations, shrinking Node and speeding up kNN queries and builds
    (#319).
  • Gather split coordinates once into a scratch array reused across builds,
    avoiding a second pass over the dataset in middleSplit_().
  • Release node memory in freeIndex() and cap the node reservation at 2N.
  • loadIndex() now validates the loaded node array and rejects corrupt files.
  • Concurrent build: splice only the subtrees actually built by a task,
    avoiding unnecessary memmoves.
  • Prefetch the right child while descending the tree, improving kNN
    query speed.
  • CI Linux: do not upgrade runner packages before installing build tools
    (#320).
  • Contributors: Jose Luis Blanco-Claraco, Luca Bartoli

nanoflann 1.13.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 15:48
1.13.0
a9051da
  • Merge pull request #318 from spyridon97/improve-build-multithreading
    Rewrite nanoflann's concurrent index build
    At 16 threads, index build time drops ~3.5x on uniform data
    (79ms -> 23ms) and ~3.8x on clustered data (108ms -> 29ms).
  • Merge pull request #317 from jschueller/mtune
    CMake: Check for mtune=native flag
    For some archs like ppc64 this is not always available
  • Merge pull request #315 from jlblancoc/fix/unsigned-elementtype-crash
    Fix crash and wrong results with unsigned ElementType (alternative to #314)
  • fix: compute all coordinate differences in DistanceType
  • Contributors: Jose Luis Blanco-Claraco, Julien Schueller, Spiros Tsalikis

nanoflann 1.12.1

Choose a tag to compare

@github-actions github-actions released this 08 Aug 08:48
7812aa0
  • docs: badges updates to use nanoflann_vendor
  • Merge pull request #313 from jlblancoc/chore/rename-ros-package-to-nanoflann-vendor
    chore(ros): rename the ROS package to nanoflann_vendor
    Only the ROS package name changes. The CMake package name comes from the
    CMake project, so find_package(nanoflann) keeps working unchanged.
  • Contributors: Jose Luis Blanco-Claraco

nanoflann 1.12.0

Choose a tag to compare

@github-actions github-actions released this 06 Aug 16:48
bf4ff20
  • Merge pull request #312 from jlblancoc/feat/automate-release-script
    automate release to ensure consistency
  • automate release to ensure consistency
  • fix: stop asserting exact NN index in bruteforce comparison tests
    Two points can be equidistant (or within float rounding) from a query;
    nanoflann does not guarantee a tie-break order unless
    NANOFLANN_FIRST_MATCH is defined, so comparing indices makes these
    tests flaky whenever a near-tie occurs. Checking the returned distance
    against the brute-force minimum already fully validates correctness.
  • Merge pull request #311 from jlblancoc/fix-potential-ram-run
    fix: ensure background rebuild spans one single thread
  • address review
  • fix: ensure background rebuild spans one single thread
  • Merge pull request #310 from jlblancoc/feat/install-examples-option
    Add opt-in NANOFLANN_INSTALL_EXAMPLES option
  • Add opt-in NANOFLANN_INSTALL_EXAMPLES option
    Lets users who need the example binaries installed opt in via CMake,
    without changing default behavior for the header-only library.
  • Contributors: Jose Luis Blanco-Claraco

Release of v1.10.1

Choose a tag to compare

@jlblancoc jlblancoc released this 09 Jun 10:03
ee278b6

What's Changed

Full Changelog: v1.10.0...1.10.1

Release of V1.10.0

Choose a tag to compare

@jlblancoc jlblancoc released this 06 Jun 20:03

What's Changed

  • Fix an invalid read. by @drwells in #282
  • Fix divideTree assertion failure with KDTreeSingleIndexDynamicAdaptor removePoint/addPoints by @nh2 in #283
  • Fix duplicate-entry growth on removePoint/addPoints re-add cycles by @jlblancoc in #285
  • Fix loadIndex reading past EOF for empty indices (#286) by @jlblancoc in #287
  • fix flaky kdtree.L1_vs_bruteforce_rknn test by @jschueller in #288
  • Fix KDTreeSingleIndexDynamicAdaptor_ saveIndex/loadIndex infinite recursion by @jlblancoc in #290
  • Remove dead worst_dist branch from L1/L2_Adaptor::evalMetric by @jlblancoc in #291
  • Fix three type/correctness bugs (operator=, First0Bit, findWithinBox) by @jlblancoc in #292
  • Polish docs warnings attrs by @jlblancoc in #293
  • Efficiency: remove middleSplit_ heap alloc (§6.2) + else-if in computeInitialDistances (§6.7) by @jlblancoc in #294
  • saveIndex/loadIndex: add magic+version+type-size header, throw on mismatch by @jlblancoc in #295
  • CI: extend tested C++ standards, and increase warning levels by @jlblancoc in #296
  • Deduplicate addPoint, computeBoundingBox, and searchLevel by @jlblancoc in #297
  • Minor internal cleanups: allocateBytes, has_flag(), noexcept by @jlblancoc in #298
  • Centralize DIM dispatch in veclen() with if constexpr; widen nodiscard by @jlblancoc in #299
  • Refactor tree builders and harden Eigen adaptor ownership by @jlblancoc in #300
  • Hoist point-length computation out of search inner loops by @jlblancoc in #301
  • Incremental self-balancing dynamic k-d tree index (sync + multithreaded) by @jlblancoc in #302

New Contributors

Full Changelog: v1.9.0...v1.10.0

Release of v1.9.0

Choose a tag to compare

@jlblancoc jlblancoc released this 22 Dec 16:38
v1.9.0
92911c0

What's Changed

  • fix: respect SearchParameters::sorted in dynamic index radius search by @LeonardEyer in #276
  • Optimizations of L1 & L2 distance functors and miscellaneous improvements by @mlourakis in #277
  • Performance optimizations suggested by Claude.ai by @jlblancoc in #279
  • Update clang-format style: 100 columns, and forbid one-line braces by @jlblancoc in #281

New Contributors

Full Changelog: v1.8.0...v1.9.0

Release of v1.8.0

Choose a tag to compare

@jlblancoc jlblancoc released this 16 Nov 10:03
v1.8.0
5e3026c

What's Changed

New Contributors

Full Changelog: v1.7.1...v1.8.0