v1.0.0 - 2026-08-20

  • Stability - Declared the existing public API stable for the first major release.
  • Breaking - Raised the minimum supported versions to Elixir 1.14 and OTP 25.
  • Performance - Reduced overhead in bit-array set operations, atomics membership checks, and packed-counter access.
  • Fix - Added explicit validation and errors for malformed atomics serialization payloads.
  • Tests - Added property-based coverage for bitmasks, atomics operations and serialization, and packed counters.
  • Documentation - Updated installation instructions, package metadata, Erlang documentation links, and the 64-bit bitmask contract.

v0.4.0

v0.3.3

v0.3.2

  • Fix - Fixed a compile warning caused by using ^^^/2 in Abit.Counter.

v0.3.1

v0.3.0

  • BREAKING - Removed Abit.Matrix and extracted it to matrax.

v0.2.4

v0.2.3

  • Feature - Added add/3, exchange/3, compare_exchange/4, min/1, max/1, and other functions to Abit.Matrix.
  • Feature - Implemented the Enumerable protocol for Abit.Matrix.
  • Feature - Added Abit.Bitmask.to_list/2.
  • Feature - Added Abit.to_list/1.

v0.2.2

  • Feature - Added Abit.Matrix for working with atomics as an M x N matrix.

v0.2.1

v0.2.0

Abit

  • BREAKING - Renamed set_bit/3 to set_bit_at/3 for consistency with the Abit.Bitmask API.

Abit.Counter

  • BREAKING - Added the wrap_around option. Wraparound is now disabled by default.
  • BREAKING - Replaced the custom signed and unsigned integer matching with the built-in implementation. Signed integers now wrap around as they do in Elixir.
  • BREAKING - Changed the return value of put/3 and add/3 to {:ok, {index, final_value}}, or {:error, :value_out_of_bounds} when wrap_around is false and the value is out of bounds.