Skip to content

Releases: Cantido/int_set

2.0.0

30 Mar 01:23
v2.0.0
55f09bc
Compare
Choose a tag to compare

I was able to introduce some pretty hefty optimizations that eliminated the need for a lot of the manual bit-twiddling this library was doing. Benchmarks show a massive improvement in speed and memory usage. I didn't check any benchmarks in because running them seems to crash my machine 😭.

Changed

  • Inspecting an IntSet now returns a string using IntString.new([1, 2, 3, ...]) syntax.
  • The internal binary that IntSet uses to store values is now always byte-aligned, and each byte has changed endianness to allow for some internal optimizations.
  • Binaries returned by IntSet.bitstring/1 is now always byte-aligned.

Removed

  • BREAKING: The byte_align option for IntSet.bitstring/1 was removed.

1.5.2

06 Sep 00:24
v1.5.2
1e467a9
Compare
Choose a tag to compare

Added

Changed

  • Fixes for Elixir 1.14 deprecations
  • The project now uses Earthly for CI. You can run the entire CI pipeline on your local machine by installing Earthly and running earthly +all.

1.5.1

12 Sep 18:16
v1.5.1
7ba716e
Compare
Choose a tag to compare

Added

  • Sponshorship link to mix.exs

Fixed

  • inspect/2 no longer renders certain sets as charlists.

Byte-aligned bitstrings

11 Oct 02:48
Compare
Choose a tag to compare

Changed

  • IntSet.bitstring/1 is now IntSet.bitstring/2 and now accepts an option: :byte_align.
    When this option is set to true, the bitstring is padded at the end to make it byte-aligned.

Add inverse/1

11 Oct 02:47
Compare
Choose a tag to compare

Added

  • The IntSet.inverse/2 function, which is like taking the difference of your IntSet with a completely-full IntSet with n members.
    Say you have a list of indices, and you want to create a list of all the indices you don't have.
    Just take the inverse, providing a member limit.
  • Added an .editorconfig file to the project.

Typespecs and optimizations

11 Oct 04:12
ce3608a
Compare
Choose a tag to compare

Added

  • IntSet.difference/2 now has a typespec.
  • IntSet.disjoint?/2 now has docs and a typespec.

Changed

  • IntSet.union/2 has been optimized

Add difference/2 and disjoint/2

11 Oct 02:46
2070a3d
Compare
Choose a tag to compare

Added

  • The IntSet.difference/2 function.
    This function subtracts set B's members from set A.
  • The IntSet.disjoint?/2 function.
    Returns true if sets A and B have no members in common.

Changed

  • The Collectable implementation was dramatically optimized.

Typespecs, optimizations, and bitstring/1

11 Oct 02:43
01eb9ac
Compare
Choose a tag to compare

Added

  • The IntSet.bitstring/1 function.
    Returns a binary with bits flipped at the indices at which the set has members.
    For example, say you have a set containing 0, 1, and 4.
    Calling IntSet.bitstring/1 on that set will return a five-bit-long binary with the first, second, and fifth bits set to 1, and the rest are 0.
  • The library is now typespecced and documented.

Initial Release

11 Oct 02:42
b2bbd94
Compare
Choose a tag to compare

Added

  • Constructor IntSet.new/0, which creates a new empty set.
  • Constructor IntSet.new/1, which accepts either an enumerable and returns a set containing those elements.
    This constructor also accepts a bitstring.
    See the documentation for details on that behavior.
  • The IntSet.put/2 function.
    Just like MapSet.put/2, this function returns a new set with the given value added.
  • The IntSet.delete/2 function.
    Again, just like MapSet.delete/2.
    Returns a new set with the given value removed.
  • The IntSet.union/2 function.
    Returns a set that contains elements of both given sets.
  • An implementation of Inspect that sorts members before printing them,
    so the order can be relied upon in doctests.
  • An implementation of Collectable.
  • An implementation of Enumerable.

More bugfixes to inverse/2

11 Oct 02:50
Compare
Choose a tag to compare

Fixed

  • IntSet.inverse/2 is now totally fixed.