# Changelog ## [1.6](https://github.com/arborx/arborx/tree/v1.6) (2024-04-11) [Full Changelog](https://github.com/arborx/arborx/compare/v1.5...v1.6) **New features:** - Introduce new API for ArborX indexes (EXPERIMENTAL) [\#970](https://github.com/arborx/ArborX/pull/970), [\#1017](https://github.com/arborx/ArborX/pull/1017) - Add Moving Least Squares (MLS) interpolation (EXPERIMENTAL) [\#946](https://github.com/arborx/ArborX/pull/946), [\#992](https://github.com/arborx/ArborX/pull/992), [\#1000](https://github.com/arborx/ArborX/pull/1000) **Build Changes:** - Require Kokkos 4.1.00 [\#973](https://github.com/arborx/ArborX/pull/973) **Enhancements:** - Introduce `PairValueIndex` and `Experimental::attach_indices` [\#969](https://github.com/arborx/ArborX/pull/969), [\#1016](https://github.com/arborx/ArborX/pull/1016), [\#1036](https://github.com/arborx/ArborX/pull/1036) - Improve examples [\#1008](https://github.com/arborx/ArborX/pull/1008), [\#1009](https://github.com/arborx/ArborX/pull/1009), [\#936](https://github.com/arborx/ArborX/pull/936) - Auto-fetch Google benchmark when not found locally [\#1039](https://github.com/arborx/ArborX/pull/1039) - Allow default initialized distributed tree [\#1040](https://github.com/arborx/ArborX/pull/1040) - Implement distance point-triangle [\#1046](https://github.com/arborx/ArborX/pull/1046) - Implement nearest query for BruteForce [\#1053](https://github.com/arborx/ArborX/pull/1053) - Add helper functions to construct predicates [\#1038](https://github.com/arborx/ArborX/pull/1038) - Add an example of a distributed tree k-nearest neighbors search [\#724](https://github.com/arborx/ArborX/pull/724) - Add triangulated surface distance benchmark [\#1052](https://github.com/arborx/ArborX/pull/1052) **Deprecations:** - Deprecate `min`, `max`, `minMax` [\#998](https://github.com/arborx/ArborX/pull/998) - Deprecate `iota`, `exclusivePrefixSum`, `accumulate`, `adjacentDifference` [\#999](https://github.com/arborx/ArborX/pull/999) **Fixed bugs:** - Fixed CUDA build warning [\#1010](https://github.com/arborx/ArborX/pull/1010) - Fixed HIP build with ROCm 6 [\#1030](https://github.com/arborx/ArborX/pull/1030) - Fixed FDBSCAN-DenseBox issue with user provided `AccessTraits` [\#1045](https://github.com/arborx/ArborX/pull/1045) - Fixed stream destruction order in CUDA access traits example and execution spaces benchmark [\#1050](https://github.com/arborx/ArborX/pull/1050) ## [1.5](https://github.com/arborx/arborx/tree/v1.5) (2023-12-16) [Full Changelog](https://github.com/arborx/arborx/compare/v1.4.1...v1.5) **Build Changes:** - Require Kokkos 4.0.00 [\#895](https://github.com/arborx/ArborX/pull/895) **Enhancements:** - Add a multi-dimensional triangle (EXPERIMENTAL) [\#916](https://github.com/arborx/ArborX/pull/916) - Add example of triangle-point intersections [\#542](https://github.com/arborx/ArborX/pull/542) - Allow running individual queries in non-batch mode (EXPERIMENTAL) [\#917](https://github.com/arborx/ArborX/pull/917) - Support for MSVC (core only) [\#908](https://github.com/arborx/ArborX/pull/908) **Fixed bugs:** - Fix compilation for CUDA-12.2 [\#933](https://github.com/arborx/ArborX/pull/933) - Fix a bug in the dendrogram generation [\#955](https://github.com/arborx/ArborX/pull/955) - Fix compilation for C++20 [\#884](https://github.com/arborx/ArborX/pull/884) ## [1.4.1](https://github.com/arborx/arborx/tree/v1.4.1) (2023-06-08) [Full Changelog](https://github.com/arborx/arborx/compare/v1.4...v1.4.1) **Build Changes:** - Add support for Trilinos 14.0 [\#886](https://github.com/arborx/ArborX/pull/886) ## [1.4](https://github.com/arborx/arborx/tree/v1.4) (2023-05-05) [Full Changelog](https://github.com/arborx/arborx/compare/v1.3...v1.4) **New features:** - Add HDBSCAN (EXPERIMENTAL) [\#777](https://github.com/arborx/ArborX/pull/777), [\#783](https://github.com/arborx/ArborX/pull/783), [\#845](https://github.com/arborx/ArborX/pull/845) **Build changes:** - Require Kokkos 3.7.01 [\#834](https://github.com/arborx/ArborX/pull/834), [\#749](https://github.com/arborx/ArborX/pull/749) - Require Google Benchmark 1.5.4 when building benchmarks [\#799](https://github.com/arborx/ArborX/pull/799) **Enhancements:** - Add a faster implementation of the union-find for Serial [\#767](https://github.com/arborx/ArborX/pull/767), [\#780](https://github.com/arborx/ArborX/pull/780) - Annotate fences [\#805](https://github.com/arborx/ArborX/pull/805) - Improve performance of FDBSCAN [\#810](https://github.com/arborx/ArborX/pull/810) - Add new facility to find "half" or "full" neighbor lists (EXPERIMENTAL) [\#809](https://github.com/arborx/ArborX/pull/809), [\#812](https://github.com/arborx/ArborX/pull/812) - Introduce `ArborX::PairIndexRank` [\#819](https://github.com/arborx/ArborX/pull/819) - Reduce memory consumption when sending data in `DistributedTree` [\#829](https://github.com/arborx/ArborX/pull/829) - Avoid extra copy when sending across network in `sendAcrossNetwork` [\#830](https://github.com/arborx/ArborX/pull/830) - Deprecate `ARBORX_USE_CUDA_AWARE_MPI` and replace it with `ARBORX_USE_GPU_AWARE_MPI` [\#828](https://github.com/arborx/ArborX/pull/828) - Allow 7D data [\#853](https://github.com/arborx/ArborX/pull/853), [\#854](https://github.com/arborx/ArborX/pull/854) **Backward incompatible changes:** - Remove deprecated queryDispatch calls in the distributed tree [\#793](https://github.com/arborx/ArborX/pull/793) - Remove volatile overloads in `ArborX::Box` and `ArborX::Point` [\#838](https://github.com/arborx/ArborX/pull/838) **Fixed bugs:** - Fix a bug when using distributed tree with rays [\#786](https://github.com/arborx/ArborX/pull/786) - Fix undefined behavior when parsing boolean options in DBSCAN benchmark [\#804](https://github.com/arborx/ArborX/pull/804) - Fix compilation for CUDA 11.0-11.3 [\#850](https://github.com/arborx/ArborX/pull/850) ## [1.3](https://github.com/arborx/arborx/tree/v1.3) (2022-10-18) [Full Changelog](https://github.com/arborx/arborx/compare/v1.2...v1.3) **New features:** - Add multi-dimensional support (EXPERIMENTAL) [\#713](https://github.com/arborx/ArborX/pull/713), [\#722](https://github.com/arborx/ArborX/pull/722), [\#726](https://github.com/arborx/ArborX/pull/726), [\#731](https://github.com/arborx/ArborX/pull/731) **Build changes:** - Require C++17 [\#715](https://github.com/arborx/ArborX/pull/715) - Require Kokkos 3.6 [\#748](https://github.com/arborx/ArborX/pull/748) **Enhancements:** - Switch to using stackless spatial traversal for all backends [\#672](https://github.com/arborx/ArborX/pull/672) - Add ordered tree traversal (EXPERIMENTAL) [\#683](https://github.com/arborx/ArborX/pull/683) - Add a ray-tracing example using ordered tree traversal [\#691](https://github.com/arborx/ArborX/pull/691) - Add `distance()` function to the nearest predicate [\#700](https://github.com/arborx/ArborX/pull/700) - Template `BruteForce` on bounding volume [\#712](https://github.com/arborx/ArborX/pull/712) - Throw an exception when FDBSCAN-DenseBox may potentially produce wrong result [\#560](https://github.com/arborx/ArborX/pull/560) - Migrate full DBSCAN driver from `examples/` to `benchmarks/` [\#736](https://github.com/arborx/ArborX/pull/736) - Add a DBSCAN example [\#763](https://github.com/arborx/ArborX/pull/763) **Backward incompatible changes:** - Fail compilation when using the old `ArborX::Traits` interface [\#667](https://github.com/arborx/ArborX/pull/667) - Remove deprecated `BVH` version templated on a device type [\#705](https://github.com/arborx/ArborX/pull/705) - Remove deprecated `DistributedSearchTree` and `DistributedTree` templated on a device type [\#706](https://github.com/arborx/ArborX/pull/706) **Fixed bugs:** - Make sure default-initialized `BVH` and `BruteForce` do not give undefined behavior [\#692](https://github.com/arborx/ArborX/pull/692) - Avoid use of uninitialized core distances in the minimum spanning tree [\#753](https://github.com/arborx/ArborX/pull/753) ## [1.2](https://github.com/arborx/arborx/tree/v1.2) (2022-04-01) [Full Changelog](https://github.com/arborx/arborx/compare/v1.1...v1.2) **New features:** - Implement Euclidean minimum spanning tree algorithm (EXPERIMENTAL) [\#624](https://github.com/arborx/ArborX/pull/624), [\#631](https://github.com/arborx/ArborX/pull/631), [\#661](https://github.com/arborx/ArborX/pull/631) **Build changes:** - Require Kokkos 3.4 [\#578](https://github.com/arborx/ArborX/pull/578) **Enhancements:** - Indicate the status of the worktree in the hash string ("-dirty") [\#558](https://github.com/arborx/ArborX/pull/558) - Check valid callback and space accessibility [\#563](https://github.com/arborx/ArborX/pull/563) - Add a molecular dynamics example [\#564](https://github.com/arborx/ArborX/pull/564) - Improve performance of the HIP backend when using HIP-Clang [\#575](https://github.com/arborx/ArborX/pull/575) - Add Point-Sphere intersection algorithm [\#584](https://github.com/arborx/ArborX/pull/584) - Avoid host copy in distributed tree construction when using CUDA-aware MPI [\#597](https://github.com/arborx/ArborX/pull/597) - Print Kokkos version during configuration [\#609](https://github.com/arborx/ArborX/pull/609) - Improve performance of the brute force algorithm [\#616](https://github.com/arborx/ArborX/pull/616) - Use 64-bit Morton indices by default in the construction [\#637](https://github.com/arborx/ArborX/pull/637) - Allow alternate space filling curves (EXPERIMENTAL) [\#646](https://github.com/arborx/ArborX/pull/646) - Add ray-triangle intersection algorithm [\#617](https://github.com/arborx/ArborX/pull/617) **Deprecations:** - Deprecate `lastElement` helper function in the `ArborX` namespace [\#648](https://github.com/arborx/ArborX/pull/648) - Deprecate `ArborX::InlineCallbackTag` [\#656](https://github.com/arborx/ArborX/pull/656) **Fixed bugs:** - Fix the exit status of the DBSCAN example [\#566](https://github.com/arborx/ArborX/pull/566) - Bring DBSCAN README documentation in line with the code [\#568](https://github.com/arborx/ArborX/pull/568), [\#668](https://github.com/arborx/ArborX/pull/668) - Fix a race condition in the BVH construction [\#579](https://github.com/arborx/ArborX/pull/579) - Fix a bug in the nearest search using the DistributedTree [\#653](https://github.com/arborx/ArborX/pull/653) ## [1.1](https://github.com/arborx/arborx/tree/v1.1) (2021-09-23) [Full Changelog](https://github.com/arborx/arborx/compare/v1.0...v1.1) **New features:** - Allow k-DOP as a bounding volume in BVH [\#386](https://github.com/arborx/ArborX/pull/386) **Enhancements:** - Store a dimension value in a DBSCAN datafile [\#523](https://github.com/arborx/ArborX/pull/523) - Enable knn queries with spheres and boxes [\#495](https://github.com/arborx/ArborX/pull/495) and [\#494](https://github.com/arborx/ArborX/pull/494) - Use double-precision floating-points to normalize `Ray` direction [\#535](https://github.com/arborx/ArborX/pull/535) - Improve performance of the brute force algorithm [\#534](https://github.com/arborx/ArborX/pull/534) - Improve performance of the DBSCAN algorithm (new FDBSCAN-DenseBox algorithm) [\#508](https://github.com/arborx/ArborX/pull/508) - Allow non-View input for DBSCAN [\#509](https://github.com/arborx/ArborX/pull/509) - Install CMake package version file [\#521](https://github.com/arborx/ArborX/pull/521) - Add a simple intersection example [\#513](https://github.com/arborx/ArborX/pull/513) - Improve performance for the SYCL backend through the use of oneDPL for sorting [\#456](https://github.com/arborx/ArborX/pull/456) **Fixed bugs:** - Fix a bug in DBSCAN noise marking [\#525](https://github.com/arborx/ArborX/pull/525) ## [1.0](https://github.com/arborx/arborx/tree/v1.0) (2021-03-13) [Full Changelog](https://github.com/arborx/arborx/compare/v1.0-rc0...v1.0) **New features:** - Allow early termination of a traversal by a thread [\#427](https://github.com/arborx/ArborX/pull/427) - Implement DBSCAN clustering algorithm [\#331](https://github.com/arborx/ArborX/pull/331) - Implement brute-force algorithm [\#468](https://github.com/arborx/ArborX/pull/468) - Add initial ray-tracing support [\#414](https://github.com/arborx/ArborX/pull/414) and [\#461](https://github.com/arborx/ArborX/pull/461) **Build changes:** - Require CMake 3.16 [\#486](https://github.com/arborx/ArborX/pull/486) **Enhancements:** - Add `KOKKOS_FUNCTION` to `AccessTraits::size()` in View specialization [\#463](https://github.com/arborx/ArborX/pull/463) - Add `query()` free function [\#425](https://github.com/arborx/ArborX/pull/425) - Improve performance for the HIP backend through the use of rocThrust for sorting [\#424](https://github.com/arborx/ArborX/pull/424) - Support for SYCL and OpenMPTarget [\#422](https://github.com/arborx/ArborX/pull/422) **Backward incompatible changes:** - Change signature of the nearest callback [\#366](https://github.com/arborx/ArborX/pull/366) ## [1.0-rc0](https://github.com/arborx/arborx/tree/v1.0-rc0) (2020-10-03) [Full Changelog](https://github.com/arborx/arborx/compare/v0.9-beta...v1.0-rc0) **New features:** - New `BVH::query()` overload that only takes predicates and callback [\#329](https://github.com/arborx/ArborX/pull/329) **Enhancements:** - Implement stackless tree traversal using escape index (ropes) [\#364](https://github.com/arborx/ArborX/pull/364) - Add support for Kokkos HIP backend [\#236](https://github.com/arborx/ArborX/pull/236) - Ensure that all kernels and memory allocations are prefixed with `ArborX::` [\#362](https://github.com/arborx/ArborX/issues/362) and [\#380](https://github.com/arborx/ArborX/pull/380) - Improve performance of knn traversal [\#357](https://github.com/arborx/ArborX/pull/357) - Add new query overloads for the distributed tree [\#356](https://github.com/arborx/ArborX/pull/356) - Increase performance of the BVH construction [\#350](https://github.com/arborx/ArborX/pull/350) - Allow non device type template parameter for output views in query\(\) on distributed trees [\#349](https://github.com/arborx/ArborX/pull/349) **Fixed bugs:** - Fix double free when making copies of a distributed tree [\#369](https://github.com/arborx/ArborX/pull/369) - Resolve duplicate `Details::toBufferStatus(int)` symbol error downstream [\#360](https://github.com/arborx/ArborX/pull/360) - Fix narrowing conversion warnings [\#343](https://github.com/arborx/ArborX/pull/343) **Deprecations:** - Deprecate `DistributedSearchTree` in favor of `DistributedTree` [\#396](https://github.com/arborx/ArborX/pull/396) ## [0.9-beta](https://github.com/arborx/arborx/tree/v0.9-beta) (2020-06-10) [Full Changelog](https://github.com/arborx/arborx/compare/v0.8-beta2...v0.9-beta) **New features:** - Enable user-defined callback in BVH search [\#166](https://github.com/arborx/ArborX/pull/166) - Make predicates sorting optional [\#243](https://github.com/arborx/ArborX/pull/243) - Use user-provided execution space instances [\#250](https://github.com/arborx/ArborX/pull/250) - Implement algorithm for finding strongly connected components (halo finder) [\#237](https://github.com/arborx/ArborX/pull/237) - Store bounding boxes in single-precision floating-point format [\#235](https://github.com/arborx/ArborX/pull/235) - Allow usage of CUDA-aware MPI [\#162](https://github.com/arborx/ArborX/pull/162) **Build changes:** - Require Kokkos 3.1 [\#268](https://github.com/arborx/ArborX/pull/268) - Require C++14 standard when building ArborX [\#226](https://github.com/arborx/ArborX/pull/226) - Require Kokkos CMake build [\#93](https://github.com/arborx/ArborX/pull/93) **Enhancements:** - Template BVH on memory space [\#251](https://github.com/arborx/ArborX/pull/251) - Add example for callbacks and lift requirement for tagging inline [\#325](https://github.com/arborx/ArborX/pull/325) - Enable building against Trilinos' Kokkos installation [\#156](https://github.com/arborx/ArborX/pull/156) - Add access traits CUDA example [\#107](https://github.com/arborx/ArborX/pull/107) - Let `BVH::bounds()` be a `KOKKOS_FUNCTION` [\#326](https://github.com/arborx/ArborX/pull/326) - Improve performance of the radius search [\#306](https://github.com/arborx/ArborX/pull/306) - Improve performance of the kNN search [\#308](https://github.com/arborx/ArborX/pull/308) - Retain the original path to Kokkos [\#287](https://github.com/arborx/ArborX/pull/287) - Disable tests, examples, benchmarks by default [\#284](https://github.com/arborx/ArborX/pull/284) - Template distributed search tree on the memory space [\#260](https://github.com/arborx/ArborX/pull/260) - Enable predicates access traits in distributed search tree [\#196](https://github.com/arborx/ArborX/pull/196) - Set default build type to `RelWithDebInfo` [\#188](https://github.com/arborx/ArborX/pull/188) - Remove all fences [\#150](https://github.com/arborx/ArborX/pull/150) - Improve performance for sorting with CUDA by using Thrust [\#147](https://github.com/arborx/ArborX/pull/147) - Improve compilation error messages produced by `BVH::query()` [\#279](https://github.com/arborx/ArborX/pulls/279) **Fixed bugs:** - Fix ambiguity in `queryDispatch()` overload resolution [\#293](https://github.com/arborx/ArborX/pull/293) - Properly update hash in version file when building from subdirs [\#266](https://github.com/arborx/ArborX/pull/266) - Avoid second pass for radius search when the results are empty [\#240](https://github.com/arborx/ArborX/pull/240) - Avoid more compiler warnings for `nvcc_wrapper` [\#185](https://github.com/arborx/ArborX/pull/185) - Fix segfault in `Distributor` [\#296](https://github.com/arborx/ArborX/pulls/296) - Allow non device type template parameter for output views in `BVH::query()` [\#271](https://github.com/arborx/ArborX/pull/271) **Deprecations:** - Deprecate `Traits::Access` in favor of `AccessTraits` [\#300](https://github.com/arborx/ArborX/pull/300) ## [0.8-beta2](https://github.com/arborx/arborx/tree/v0.8-beta2) (2019-10-10) [Full Changelog](https://github.com/arborx/arborx/compare/97bbec21cc92dd2b4bd3a68c52a230b4c3c4643c...v0.8-beta2) **New features:** - Provide access traits for predicates [\#117](https://github.com/arborx/ArborX/pull/117) - Add `version()` and `gitCommitHash()` [\#61](https://github.com/arborx/ArborX/pull/61) **Build changes:** - Replace TriBITS build system with "raw" CMake [\#14](https://github.com/arborx/ArborX/pull/14) - Rename `ArborX_ENABLE_XYZ` options to `ARBORX_ENABLE_XYZ` [\#99](https://github.com/arborx/ArborX/pull/99) - Provide an option to disable tests and examples [\#31](https://github.com/arborx/ArborX/pull/31) - Make MPI dependency optional [\#42](https://github.com/arborx/ArborX/pull/42) **Enhancements:** - Use `MPI_Comm_dup` to separate ArborX comm context from user's [\#135](https://github.com/arborx/ArborX/pull/135) - Add CMake option for enabling benchmarks [\#138](https://github.com/arborx/ArborX/pull/138) - Add intersection of a `Point` with `Box` [\#122](https://github.com/arborx/ArborX/pull/122) - Improve error messages in BVH constructor and BVH::query\(\) [\#113](https://github.com/arborx/ArborX/pull/113) - Relax CudaUVM requirement [\#24](https://github.com/arborx/ArborX/pull/24) - Find Boost in subdirectories that actually require it [\#22](https://github.com/arborx/ArborX/pull/22) **Fixed bugs:** - Optimize communication within the same rank [\#134](https://github.com/arborx/ArborX/pull/134) - Fix for distributed searches with large count of results per query [\#129](https://github.com/arborx/ArborX/pull/129)