What's Changed
v4.0 Introduces a lot of new algorithm, a new type (record) and fixes a bunch of performance and clarity issues.
A bunch of old functions has been deprecated, hence the major version bump.
New Features
- Named Fields & Records:
- New Algorithms:
- Implement
generateandfill(#107). - Introducing
windows&chunks(#123). - Introducing
filter&filter_not(#124). - Introducing
reindexalgorithm (#130). - Add
unique/all_uniquealgorithms (#139). - Introducing
reduce&scans(#137). - Introducing
rotatealgorithm (#154). - Add projection maps support (#182).
- Implement
map_traits(#104).
- Implement
- Core Logic & Performance:
- Introducing
builderfor tuple construction (#111). - Introducing
empty_product_typeconcept (#143). - Make
std::arrayand staticstd::spanbehave as product types (#140). - Introduce
as_streamableextension point (#145). - Implicit conversion operator on tuples (#152).
- Deprecate
.cast()and callable behavior (#135). - Introduce static container adaptation (#158).
- Move from opt-in to detection for product type semantic (#160).
- Empty Base Optimization (EBO) support (#163, #167).
- Introducing
FIXES
- Compiler & Compatibility:
- Logic & Bug Fixes:
- Refinement:
- Make
operator<better (#98). - Add
KUMI_ABImarkers to enhance codegen and CUDA__host____device__support (#119, #121). - Make tuple algorithms accept forwarding references (#127).
- Move towards
invokeinstead of raw callable application (#161). - Simplification of
field_captureunwrapping (#141). - Move concepts to their own namespace (#170).
- Test missing record algorithms + doc (#178).
- Make
DOC and CI infra
-
Documentation:
-
CI & Infrastructure:
New Contributors
Full Changelog: v3.1...v4.0