All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
1.3.0 - 2022-08-28
- Added flag to relocate() allow short cutting in case of identical keys. #68
- Added tested support for move-only and copy-only value objects. #56
- Added custom bucket implementation (similar to std::unordered_set). This improves update performance by 5%-20%. #44
- Added
PhTree.relocate(old_key, new_key)
andPhTree.relocate_if(old_key, new_key, predicate)
. This is a lot faster than using other methods. #43 - Added try_emplace(key, value) and try_emplace(iter_hint, key, value) #40
- Added FilterBoxAABB and FilterSphereAABB as examples for filtering a PH-Tree with box keys #33
-
Moved tests and benchmarks into separate folders. #67
-
Cleaned up unit tests. #54
-
Simplified internals of
erase()
. #47 -
Removed internal use of
std::optional()
to slightly reduce memory overhead #38 -
Removed restrictions on bazel version #35
-
API BREAKING CHANGE: API of filters have been changed to be more correct, explicit and flexible. #21
- Correctness: Converters and distance functions are not copied unnecessarily anymore.
- Explicit:
Filters must have a mandatory parameter for a converter reference. This ensures that the correct
converter is used, probably
tree.converter()
. - Flexible: Distance functions can be provided through a universal reference (forwarding reference). Also, filters are now movable and copyable.
-
API BREAKING CHANGE: Allow filtering on buckets in multimaps. Multimap filters have different functions and function signatures than normal
PhTree
filters. #26
- Fixed compiler warnings when compiling with Visual Studio 2019. #74
- Fixed cmake to work with Visual Studio 2019. Added tests and benchmarks to cmake. (benchmarks still do not work with VS at the moment). #62
- Fixed compilation problems and a memory leak when compiling with Visual Studio 2019.
(also added
msan
support). #64
1.2.0 - 2022-04-14
- Bugfix: FilterSphere was not working correctly. #27
- Potentially BREAKING CHANGE: Refactored API of all methods that accept callbacks and filters to
accept universal/forwarding references.
Also changed filters and callback to not require
const
methods. #22 - Clean up iterator implementations. #19
- Make PhTree and PhTreeMultimap movable (move-assign/copy). #18
- Potentially BREAKING CHANGE when using
IsNodeValid()
in provided filters: Changedbit_width_t
fromuin16_t
touint32_t
. This improves performance of 3D insert/emplace on small datasets by up to 15%. To avoid warnings that meant that the API ofFilterAABB
andFilterSphere
had to be changed to acceptuint32_t
instead ofint
. This may break some implementations. #17 - DIM>8 now uses custom b_plus_tree_map instead of std::map. This improves performance for all operations, e.g. window queries on large datasets are up to 4x faster. Benchmarks results can be found in the issue. #14
- postfix/infix field moved from Node to Entry. This avoids indirections and improves performance of most by ~10%. operations by 5-15%. #11
- Entries now use 'union' to store children. #9
- Avoid unnecessary find() when removing a node. #5
- Avoid unnecessary key copy when inserting a node. #4
- for_each(callback, filter) was traversing too many nodes. #2
- Build improvements for bazel/cmake
1.1.1 - 2022-01-30
- Replaced size() in filters with DIM #26
1.1.0 - 2022-01-25
- FilterSphere for filtering by sphere constraint (by ctbur) #16
- IEEE converter for 32bit float, see
distance.h
(by ctbur) #18
- Performance improvement for updates and queries: removed use of
std::variant
. #23 - Fixed imports
<climits>
-><limits>
(by ctbur) #15 - Cleaned up build scripts #21
- Fixed warnings: #20
- "unused function argument" warnings
- gcc/clang warnings
- MSVC warnings
- reserved identifier warnings (identifiers starting with
_
)
- typos in README.md #22
1.0.1 - 2021-05-06
- replaced compilation flag
-fpermissive
with-Werror
, and fixed all warnings/errors, see issue #10
1.0.0 - 2021-03-23
- API:
MultiMap
: A wrapper that makes PH-Tree behave as a multi-map. - API:
erase(iterator)
- API:
emplace_hint(iterator, ...)
- API for
PhTreeF
andPhTreeBoxF
: 32bit floating point options - Support for custom key classes
- BREAKING CHANGE: The query functions now require a query box as input (instead of a min/max point pair)
- BREAKING CHANGE:
phtree_box_d.h
has been removed, please use `phtree.h instead. - BREAKING CHANGE:
phtree_d.h
has been removed, please usephtree.h
instead. - BREAKING CHANGE: Data converters (IEEE, Multiply, etc) are now structs i.o. functions/functors
- BREAKING CHANGE:
PhFilterNoOp
has been renamed toFilterNoOp
- BREAKING CHANGE: kNN queries now always require the distance function to be specified.
- BREAKING CHANGE: Preprocessors have been refactored and renamed to Converter/ScalarConverter
- Moved CI builds from Travis to GitHub actions
- Nothing.
- GCC warnings from
-Wsign-compare
and-Wsequence-point
.
- Initial version.
- Nothing.
- Nothing.
- Nothing.