- Feature - Implemented fast atomics resetting via
Abit.clear/1andAbit.Counter.clear/1. - Feature - Implemented bit toggling via
Abit.toggle_bit_at/2andAbit.Bitmask.toggle_bit_at/2. - Feature - Implemented set theory missing operations:
Abit.difference/2,Abit.symmetric_difference/2, andAbit.invert/1. - Deprecation -
Abit.merge/2is deprecated in favor ofAbit.union/2to align with standard set theory terminology.
- Feauter -
Abit.Atomicsimplementsserialize/1anddeserialize/1functions.
- Fix - compile warning about using
^^^/2inAbit.Counter
- Fix - work with elixir 1.7 by not using Kernel.floor/1 & Kernel.ceil/1
- BREAKING - removed
Abit.Matrixmodule. Extracted to matrax.
- Feature -
Abit.CounterimplementsEnumerableprotocol
- Feature -
Abit.Matriximplementsadd/3,exchange/3,compare_exchange/4,min/1,max/1, ... functions. - Feature -
Abit.Matriximplements theEnumerableprotocol - Feature -
Abit.Bitmaskimplementsto_list/2function. - Feature -
Abitimplementsto_list/1function.
- Feature -
Abit.Matrixmodule for working with atomics as an M x N matrix.
- Performance - improvements for the
Abit&Abit.Bitmaskmodule functions
- BREAKING - renamed function
set_bit/3toset_bit_at/3to make it consistent with the API of the Bitmask module.
- BREAKING - Added an option
wrap_aroundto set wrap around behavior. By default wrap around is disabled from now on. - BREAKING - Using built-in signed/unsigned implementation of integer matching instead of the custom one. Signed integers now wrap around the same way as in Elixir.
- BREAKING - The return value of
put/3andadd/3changed to{:ok, {index, final_value}}or{:error, :value_out_of_bounds}if the optionwrap_aroundis set to false and value is out of bounds.