File libimmer.changes of Package libimmer
-------------------------------------------------------------------
Thu Jan 15 17:34:01 UTC 2026 - marec@detebe.org
- Update to version 0.9.1:
* Add the IMMER_GC_TEST_GUARD to more tests
* Restrict the value-constructor of immer::box
* Fix issues with collections of boxes failing to compile
* Add pkg-config to nix shell
* Add direnv support
* Streamline shell.nix
* Add backwards compatibility for oss-fuzz
* Some gc test failures on Linux arm
* Add one job per build
* Simplify test matrix
* Fuzzers and sanitizers are already built with `nix build`
* Fix building on macos arm...
* Update Github Actions to latest changes
* Upgrade nixpkgs to nixos-25.11
* Unify `nix-build` and `nix build` and `nix flake check`
* Enable cmake-format for emacs users
* Simplify the way to enable benchmarks and Valgrind in tests
* Fix some tests using libgc fail when enabling ASan
* Fix building immer::persist with ASan on GCC
* Fix compiling with GCC because of false warnings
* Unify nix-build and nix-shell code
* Fix benchmarks would not compile
* Style: clang-format some benchmark files
* Fix CMake warnings
* More GCC fixes
* Make `nix develop` equivalent to `nix-shell`
* Use pinned version of nixpkgs from flake
* Make immer::persist build with GCC
* Delete shell-compat.nix
* Make immer::persist build with standard nix-shell
* Use nixfmt-rfc-style instead of alejandra
* Remove pre-commit-hooks
-------------------------------------------------------------------
Wed Dec 03 17:33:06 UTC 2025 - marec@detebe.org
- Update to version 0.9.0:
* Bump version 0.9.0
* Fix free lists would misalign the data in a very stupid way
* Fix upload-artifact issue
* include <exception> for std::termiate
* fix: syntax error in cmake utility function
* Use sfinea to conditionally exclude iterator facade operators
* Add default ctor ability to gc policy's edit
* Update README.rst with build2 instruction
* Mark package as arch independent
* Support hash size that's not std::size_t
* Run cmake-format on cmake file
* Allow users to explicitly enable or disable exceptions
* Fix exception detection code
* cereal loading into containers must not append
* Make persist compatible with C++17
* Use an American spelling of "stabilizes"
* Fix typos in the documentation
* Ooopsie, last commit broke file references
* Ooops, subfolders cause problems with images in the sidebar
* Turn the persistence into multiple pages and...
* Wrap the text at 72 characters
* Fix missing include
* Document that incompatible_hash_wrapper caches the container
* Split with_pools.hpp into save and load
* Remove any mention of spdlog
* Explain the purpose of values_save and values_load
* Add option to pass parameters to cereal archive
* More compact maps format: pairs are lists of 2 elements
* Support persisting immer::array
* After merge fixes
* Try fix usage of distance with glm
* Auto-format
* Rephrase the descriptions
* Document the missing public API parts
* Transforming nested containers
* More on the hash-based containers
* Describe more transformations
* Move the persist docs
* Describe transforming into the same type
* Comments for the archive wrappers
* Move more stuff into details
* Simplify xx_hash definitions
* Rename the cereal archive wrappers
* Custom policy
* Renames
* Map and vector cereal support is not part of persist
* Separate details from public API
* Remove some functions from the API part
* Fix build
* WIP Splitting implementation details from public API
* Move out non-API docs
* Rephrase the pool explanation. More implementation docs.
* Policies documented
* More narration in the docs, less in the code
* Start the docs for persist, document the policy concept
* Start the docs for persist
* Rename to get_pools_for_hana_type to make it clear it expects a hana struct
* Save B and BL in vector pools
* Policy returns the pool's name directly
* Remove wrapping functions from the policy
* Reduce hana in the interface
* Add to_json streaming version
* Runtime detection of non-unique pool names
* Fix types traversal
* Export hasName from previous
* Policy controls how the final value is saved into the archive
* Define policies to control how pool types and names are defined
* Remove loaders from the pools for the normal scenario
* Less repetition with load_pools
* Remove dead code
* Increase/preserve structural sharing with boxes by preferring the older ones
* Demonstrate the problem with boxes and recursive types
* Test XML and streamline output archive
* Unified custom archives
* More generic custom archives implementation
* Recursive traversal of types to generate required pools
* Rename "archive" into "persist"
* Loading inside or outside of the archive preserves sharing
* Demonstrate the current problem with two loaders
* Using defaulted equality operator where possible
* Type-wrapping function is customizable
* Avoid generating useless JSON string
* Support converting hash-based containers even when transformation changes the hash
* Hit a weird compile-time bug with hana::overload
* boost::hana::value template is unnecessary
* Fix building with Clang14
* Load once again with exceptions enabled to validate the archive's consistency
* Fix loading a nested archive
* Converting loaders handle exceptions without corrupting memory
* Trying to reproduce the weird crash but failing
* set conversion
* Convert table properly
* Conversion continues, map works
* Conversion preserves internal structural sharing
* Recursive transformation works, mostly
* Demonstrate the problem of circular dependency between archives
* Add missing traits for conversions
* Fix for when not all archive types are converted
* Much better interface for the recursive archives transformation
* Recursive transformation actually works
* Explore the problem of conversion
* Ran `pre-commit run --all-files`
* Format cmake
* Disable format around NONIUS_BENCHMARK calls
* Do not format tools/include
* Manually fixed files because the include order matters
* Enable auto-format
* Fix build for clang 14
* Try auto-archive with type conversion
* Saving and loading with archives for immer-types without wrapping them in archivable
* Remove the is_constructible check because it breaks the usecase with forward declared types
* Support loading from streams
* Add save_archives helper function for the app code
* Test conversion with a special archive
* Archive conversion for tables
* Rename immer-archive into just archive
* Rename fix_leaf_nodes to to_load_archive, in line with champ
* Champ archive conversion for a map
* Test vectors archive conversion
* Make sure that the type names are unique
* Test recursive map, no problems
* Recursive box seems to work
* Start testing recursive types, WIP
* Box archiving. Recursive type WIP
* Comfortable shell in macOS and Linux with `nix develop`
* Integrate immer-archive
* set/map nothrow move constructible/assignable
* Include util.hpp
* Make `details::aligned_storage` trivially constructible
* Remove usage of `std::aligned_storage`
* Make immer::box work with forward declared types
* Do not disable StrictHostKeyChecking
* Use standard ssh port and correct path for uploading docs
* Fixes `difference_type` being mispelled as `diference_type`.
* Fuzzers do not require Catch2
* Use Catch2 v3
* cmake: Only use ccache for C++
* Fix portability of IMMER_THROW when exceptions are disabled
* Add vcpkg installation instructions
* Add example with variant, same issue
* Add test for case shown by @ajihyf
-------------------------------------------------------------------
Tue Oct 03 15:07:38 UTC 2023 - marec@detebe.org
- Update to version 0.8.1:
* cmake: use ${CMAKE_CURRENT_SOURCE_DIR} where possible
* cmake: drop FindGuile.cmake
* Drop unused copy of Catch2
* Switch to system Catch2
* nix: disable tests & examples
* Drop the unused doctest copy
* tests: port dvektor to catch2
* Trying to satisfy LLVM.
* Remove unneeded include
* Manual destroy_at for C++14
* Add missing #include required by gcc
* Fix whitespace
* Remove unused capture default
* Use destroy_at to call explicit destructor in make_inner_n
* Fix MSVC compile error C2975
* Fix MSVC compile error C2059
* Upgrade Nix in Actions
* Fix includes
* Upgrade install-nix-action
* Use alternative logo in dark mode
* Return a direct reference from iterator operator[]
* Fixing annoying unused local variable warning
* Fixes and tests for C++20 Range compatibility
* Make pretty-printer loading more robust
* Add .gdbinit file to autoload pretty printers
* Add array printer
* Add table printer
* Add GDB pretty-printing support
* Fix typos
* Add quotes
* Add export CMake Config version file
* Fix wrong order in operator<(T2, box<T>)
* Use lambda for initialization.
* Fixing assertions.
* Attempt to make flex_vector nothrow move constructible/assignable.
* Lower constants for memory usage so CI does not timeout
* Add benchmarks for checking CHAMP memory usage
-------------------------------------------------------------------
Sat Dec 10 15:52:57 UTC 2022 - marec@detebe.org
- Update to version 0.8.0:
* Do not install specific old version of Nix
* Upgrade install-nix-action
* Upgrade cachix action
* Prepare release 0.8.0
* Add identity API
* Add CIFuzz GitHub action
* Add fuzzers that produce more conflicts
* make clang ignore gcc pragma warning for champ
* Strengthen the fuzzers even further
* Fix issues in map/set erase() found by fuzzer
* Fix fuzzer was not doing what we thought it did
* Add set fuzzer that can find if the tree is corrupted by moves
* Add map fuzzer that can find if the tree is corrupted by moves
* Fix typo in comment
* Fix debug stats
* Remove dec_unsafe() from the policies
* Remove dec_unsafe() usage in HAMT data-structures
* Remove usage of dec_unsafe() in RBTS data-structures
* Fix sometimes HAMTs would move out values that it should not!
* Fix iteration over data-structures would sometimes allow mutation!
* Add update_if_exists method to map and table and related transients
* Fix table and table_transient update()
* Improve debug stats API
* Add tools for printing statistics about trees
* Fix memory leak
* Try something
* Remove vestige
* Fix memory leak
* Add test for memory leak found by oss-fuzz
* Add update_move operation to map fuzzer
* Remove vestige
* Ensure that champ update operations move the payload in the value
* Fix #219, ambiguous calls to destroy_n
* Move objects whenever possible during champ erasure operations
* Fix -fno-exceptions build (regression from 35147686)
* Fix ambiguities when compiling in C++17 mode
* Mark a bunch of functions as noexcept
* Fix implementation of unordered_copy
* Optimize our own implementation of uninitialized_copy
* Use std::copy when possible, our own uninitialized_copy elsewhere
* Our own implementations for uninitialied_... are better, use always
* Improve implementation of std shims
* Use standard library implementations of shims whenever possible
* Move values when node can be mutated but needs realloc (champ::update_mut)
* Move values when node can be mutated but needs realloc (champ::add_mut)
* Fix table documentation header
* Improve sequential initialization of HAMTs
* Update the documentation of HAMT-based transients
* Make immer::table and table_transient use mutation when possible
* Add missing link table_transient in the documentation
* Add benchmarks for HAMT erasure
* Ensure that edit markers are set properly during transient updates
* Sketch mutable removal from HAMTs
* review: add to docs/container & fix update docs
* Fix mutable HAMT insertion with conflicts
* Test more exception safety of mutable operations on vectors
* Style: clang-format
* Implement transients for map update()
* add docs & run clang-format
* add test stub for table_transient
* cosmetics + table tests
* Fix sanitizers were not properly enabled in CI
* Fix memory leak when mutating inner nodes
* add headers + examples
* cosmetic fixes
* Fix insertion benchmarks
* Mutate collision nodes in-place when possible
* Mutate champ nodes values in place when possible
* Fix potential destruction of uninitialized values
* Reuse same-sized inner nodes during HAMT insertions
* Sketch implementation interface for transient insertion
* Add move and transient versions for the HAMT insertion benchmarks
* Style: clang-format
* Add naive implementation of map and set transients
* Add move-based updates on immutable maps and sets
* Add map and set range constructors
* Sketch map and set transient types
* Fix compiling some tests would crash
* Immer is compatible with C++14
* Add spm job
* Work on SPM support.
* Update README.rst
* Update README.rst
* Update README.rst
* Update memory.rst
* Update atom.hpp
* Update transients.rst
* Update map.hpp
* Update vector.hpp
* Update array.hpp
* Update array.hpp
* fix typo
* Fix typo in documentation of diff
* Tweak diff docs
* Add missing header
* Add the diffing algorithm to the fuzzers
* Document diff algorithm
* Simplify diff algorithm interface
* Avoid passing Differ template param, use universal references
* Remove incorrect usage of std::forward
* Introduce struct differ
* Add diff to set and avoid std::pair in champ
* Add diffing algorithm to maps
* Typo fix: frony -> front
* Do not try to use a build dir, because we have a BUILD file
* Do not rely on git to fetch the code locally
* Allow changing nixpkgs version
* Upgrade Nix related actions
* Disable ssh stuff when it's not me
* Ignore Nix result links
* Fix comment
-------------------------------------------------------------------
Tue Nov 09 18:10:49 UTC 2021 - marec@detebe.org
- Update to version 0.7.0:
* Bump version
* Make script NixOS compatible
* Fix Catch exception throwing tests
* Upgrade Catch to fix issues with C++20
* Style: clang-format
* Fix sign issues
* Fix C++20 construction issue
* Fix some comparison operators are ambiguous under C++20
* Disable newer warning causing false positives
* Add C++20 to CI
* Upgrade Nix
* Fix Nix issues
* Fix nix-build failing with newer nixpkgs
* Allow disabling debug_size_heap
* Clean up.
* Add overloaded versions that only participate in overload resolution if is_transparent is set.
* Added support for transparent hash for maps and sets.
* Change <exception> include to <stdexcept>
* Fix issue #177
* Documentation fixes
* Fix Github action
* Add missing include
* Update README badge
* Delete Travis configuration
* Fix, use ssh key to upload benchmark reports
* Fix GNU errors
* Reorder jobs
* Use better system for specifying options in the matrix
* Fix build job
* Migrate to Github Actions
* Added missing <immer/config.hpp> and <cstddef> includes
* clang-format
* Fix issues when using libgc and vectors
* Fix exit-time destructor warning from Clang for rbts
* Make excpetions optional depending on build-time feature checks.
* Fix exit-time destructor warning from Clang for champ
* Fix OSS-Fuzz issue 24466
* Fix crash 5078027885871104
* Fix misprint
* Fix #127
* Fix popcount overload resolution problem
* Use smaller ints for bitmap_t if applicable
* Fix #149
* Limit the size of the fuzzer input
* Fix GC based fuzzers would sometimes run out of memory
* Add flag to enable memory sanitizer
* Fix issues 24374 and 24393
* Allow enabling IMMER_GC_REQUIRE_INIT from the outside
* Fix issue 24412
* Attempt to reproduce 24371
* Update tracing of flex-vector-gc fuzzer vm
* Add fuzzers w/o free list to avoid hiding leaks
* Add missing new-line
* Fix issue 24366
* Reduce can_compare
* Use gc_gcollect instead of gc_collect_a_little
* Decouple locking policy from refcount policy
* Increase the number of bits in the new flex vector test
* Add new fuzzer for flex vectors with `embed_relaxed`
* Remove redundant returns
* Enable collissions in map and set fuzzing
* Do not loop on GC_collect_a_little
* Use latest compilers for running benchmarks
* Fix formula for deriving the maximum size of an rrbtree
* Reproduce 24339
* Fix subtle bug producing too much rebalancing in flex vector
* Oooops!
* Add tracing for flex_vector fuzzer test
* Attempt fix 24159 and 24159
* Fix timeouts 24244 and 23176
* Remove dead code
* Collect garbage on every input to increase determinism
* Thanks, gcc!
* Add proper concat size safety guard for non-gc flex vector fuzzer
* Fix issue 24147
* Fix issue 24144
* Attemp to reproduce 24139
* Add support for LLVM 10 in nix shell
* Fix flex-vector-gc fuzzer issues related to large concats
* Attempt to reproduce 24209
* Attempt to reproduce 24196
* Attempt to reproduce 24168
* Attempt to reproduce 24162
* Attempt to reproduce 24143
* Fix oss-fuzz issue 24148, and potentially others
* Split sanitization flags
* Fix typo: chungs -> chunks.
* Add fuzzers for garbage collected arrays
* clang-format fuzzer code
* Fix linking issues
* Upgrade LLVM, older version are not in Nix anymore
* Fix nix upgrade
* Remove noop operations
* Revert "Only link libgc with the necessary fuzzers"
* Only link libgc with the necessary fuzzers
* Use LIB_FUZZING_ENGINE when provided
* Build and run fuzzers on CI
* Add simple way to build the fuzzers
* Upgrade the way we set up the toolchain
* Damn you Travis!
* Remove over constraining assertion, fixes #134
* Add Emacs dir-locals
* Added set::find
* Mention Lager in README
* Improve to-do information for map and set transients...
* Reorganize documentation
* Format everything with clang-format
* Add clang-format file
* Fix iterator facade not properly exposing iterator traits
* FIX: MSVC static analysis warnings
* Minimal changes to support inclusion via add_subdirectory()
* Fix issues with array capacity
* Fix position.hpp integer shift warnings on 64-bit systems
* Add test that array_transient default constructor compiles
* Fix compilation error when default-initializing array_transient
* Get some extra list-initialised tuples missed by 7d930f8
* Replace list-initialised tuples with std::make_tuple
* Create FUNDING.yml
* Ooops!
* remove dead code, fix var naming, rewrite loops
* add fuzzers for array, map and set
* Add method to get a mutable reference from a transient array
* add missing include in flex-vector fuzzer
* rename macro
* more macros
* remove define in node.hpp
* Make tagged nodes configurable
* Add empty() methods for map and set
* Fix array transient empty
* Remove bogus submodule definition
* Fix invalid access regarding storing unaligned types
* Cleanup test
* Disable Nix hardening flags, so we can see vars in gdb
* Test to reproduce invalid write after allocated buffer with immer::set and a type without alignment requirements
* Workaround internal compiler crash
* Fix warning about capturing polymorphic exception by value
* Fix warning about deperacted implicit copy contructor
* Fix warning about unnecessary move
* Fix issue #91
* Upgrade nixpkgs
* fixed typo in comment of set.hpp
* MSVC: support 32bit builds
* Update config.hpp
* Update config.hpp
* Fix warnings with msvc + [[nodiscard]] support
* Add missing include call
-------------------------------------------------------------------
Mon Oct 25 19:15:41 UTC 2021 - marec@detebe.org
- Update to version 0.6.2:
* Bump version
* Fix array::empty
* Expand macros in the documentation
* Bump version
* Remove unnecessary tools that cause warnings on Fossology
* Bump version
* Remove unnecessary tool
* Fix license headers
* Actually fix issues found by [nodiscard]
* Add minimal Bazel support
-------------------------------------------------------------------
Mon Oct 25 18:46:01 UTC 2021 - marec <marec@detebe.org>
- initial package build