The format is based on Keep a Changelog
- New user api namespace.
- Added the ability to "freeze" wraps.
- Persistent constructor now available in environment as
<-
- "multi-deftype optimization" for hot code paths.
- Constructor optimization.
- Fixed some performance regressions.
- Renamed library to
wrap
map.
Old files and naming conventions.
- Initial commit.
- Migrated logic from ti-yong.
- Introduced High-Level API: Added wrap/assoc and wrap/dissoc functions using simple keywords (e.g., :get, :assoc) for easier customization of common behaviors.
- Added examples-high-level.md and updated documentation.
- Implemented specialized internal types (WrapMap+...) to significantly speed up baseline assoc and get operations by reducing runtime dispatch overhead.
- Optimized wrap map constructor, especially when called via apply, bringing performance close to native hash-map.
- Improved transient batch assoc! performance to be nearly on par with native transients.
- Improved persistent! performance, though it remains an area with overhead compared to native maps.
- Clojure Benchmark changes:
- Read Existing Key
- Read Missing Key
- Write (Update Existing Key)
- Reduce (Sum Val)
- Construct (into)
- Construct (apply)
- Simple assoc (Baseline Wrap)
- Simple assoc (Logging Wrap)
- assoc New Key (Baseline Wrap)
- assoc New Key (Validated Wrap)
- Batch assoc! (Baseline Wrap)
- Batch assoc! (Logging Wrap)
- persistent! Cost
- Contended Update
- ClojureScript Benchmark changes:
- Read Existing Key (Large Map)
- Read Missing Key
- Write (Update Existing Key - Large Map)
- Reduce (Sum Values - Large Map)
- -2.6% regression (still faster than vanilla
hash-map
s here though)
- Simple assoc (Baseline Wrap - Small)
- Simple assoc (Logging Wrap - Small)
- assoc New Key (Baseline Wrap - Large)
- assoc New Key (Validated Wrap - Large)
- Batch assoc! (Baseline Wrap)
- persistent! Cost
- Using repo/git workflow from https://bogoyavlensky.com/blog/build-and-publish-clojure-lib-with-slim/
- Will migrate commands to
bb
tasks in a future release.