- Support the
JSON.Encode
protocol in Elixir 1.18+.
- Add
Aja.Enum.sum_by/2
andAja.Enum.product_by/2
- Fail instead of returning incorrect values when using
Enum.slice/2
on Aja structures with a stepped range (step != 1
) - Fix
Aja.Enum.empty?/1
implementation for ranges - Fix warnings in Elixir 1.18
- Fix bug in
Aja.Vector.concat/2
- Optimize
Aja.Vector.flat_map/2
andAja.Enum.flat_map/2
when used for filtering - Bump
ex_doc
to the latest version - Fix compilation warnings due to supporting Elixir 1.11
- Drop support for Elixir 1.10 and 1.11
- Bump
ex_doc
to the latest version
- Deprecate ~i sigil and Aja.IO module in favor of
Ion
- Fix
t:Aja.OrdMap.t/2
type spec - Fix
improper_list_constr
dialyzer warning inAja.ord/1
- Stop using an opaque type for
t:Aja.Vector.t/1
to enable pattern-matching. Rely on documentation instead, liket:Aja.OrdMap.t/2
. Thanks @MegaRedHand!
Aja.OrdMap.from_struct/1
respects the defined field order (Elixir >= 1.14)
- Add
Aja.OrdMap.filter/2
andAja.OrdMap.reject/2
- Add
Aja.OrdMap.from_keys/2
- Bump
ex_doc
to the latest version
- Rename top module from
A
toAja
- Remove deprecated Aja.ExRange module
- Remove deprecated functions
- Optimize
Aja.OrdMap
internals to reduce memory usage
- Fix compilation warning in deprecated module
- Add support for stepped ranges in Elixir 1.12
- More efficient implementation of vector concatenation
- Add
Aja.Enum.concat/1
andAja.Enum.into/3
- Add
Aja.Vector.zip_with/3
- Fix bug in
Aja.Enum.into/2
when merging into anAja.OrdMap
- Fix
Aja.vec/1
bug when ranges use negative number
- Deprecate Aja.ExRange
- Add
Aja.Vector.flat_map/2
- Add
Aja.Vector.reverse/2
andAja.Enum.reverse/2
- Add
Aja.Enum.concat/2
- Add
Aja.Enum.zip/2
andAja.Enum.unzip/1
Aja.OrdMap.drop/2
will only try to period rebuild once after dropping all keys
- Fix the minimal version needed for
Jason
(1.2) Aja.OrdMap.take/2
behaves as expected when keys are duplicatedAja.ord/1
warning on duplicate keys uses the proper stacktrace
- Change
Inspect
protocol forAja.Vector
andAja.OrdMap
- Deprecate Aja.Enum.sort_uniq/1, Aja.Enum.sort_uniq/2
Aja.OrdMap
new implemention, with highly improved performance ⚡️⚡️Aja.Enum
as a fasterEnum
module optimized for Aja structures (vectors, ord maps)- Added
Aja.ord_size/1
macro Aja.vec/1
can pattern-match on first and last elementsAja.ord/1
warns on duplicate errors and can generate the AST on compile time for constant keys
- Reimplement
Aja.OrdMap
, changing its internals completely - Change signature of
Aja.OrdMap.foldl/3
andAja.OrdMap.foldr/3
for consistency - Remove Aja.OrdMap.pop_first/1 and Aja.OrdMap.pop_last/1
- Modify
Aja.Vector
internals (only breaking if persisted) - Deprecate methods from
Aja.Vector
that have been moved toAja.Enum
- Remove Aja.RBMap and Aja.RBSet
- Rename
Aja.List.repeat/2
andAja.Vector.repeat/2
(previously "repeatedly")
- Add
Aja.Vector.map_reduce/3
- Add
Aja.Vector.scan/2
andAja.Vector.scan/3
Aja.Vector.with_index/2
accepts a function parameter
- Deprecate Aja.RBMap and Aja.RBSet
- Fix Aja.Vector.join/2 bug when working with chardata
- Add Aja.Vector.reduce/2 and Aja.Vector.reduce/3
- Add
Aja.Vector.split/2
andAja.Vector.split_with/2
- Add Aja.Vector.frequencies/1 and Aja.Vector.frequencies_by/2
- Add Aja.Vector.group_by/3
- Add
Aja.Vector.dedup/1
andAja.Vector.dedup_by/2
- Add Aja.Vector.min/2, Aja.Vector.max/2, Aja.Vector.min_by/3, Aja.Vector.max_by/3
- Improve performance for Aja.Vector.min/1, Aja.Vector.max/1 and
Aja.Vector.uniq/1
- Add Aja.Vector.find_index/2
- Add
Aja.Vector.take_while/2
,Aja.Vector.drop_while/2
andAja.Vector.split_while/2
- Add
Aja.Vector.zip/2
andAja.Vector.unzip/1
- Add
Aja.Vector.fetch!/2
alias
- Add Aja.Vector.find/3 and Aja.Vector.find_value/3
- Add
Aja.+++/2
convenience operator - Improve efficiency of vector access functions:
Aja.Vector.at/2
,Aja.Vector.fetch/2
,Aja.Vector.replace_at/3
,Aja.Vector.delete_at/2
... ⚡️ - Improve compile times
- Invoke callbacks in the right order for:
Aja.Vector.filter/2
,Aja.Vector.reject/2
and improve performance
- Add
Aja.vec_size/1
macro - Add
Aja.Vector.with_index/2
- Add Aja.Vector.random/1,
Aja.Vector.take_random/2
andAja.Vector.shuffle/1
- Drastically improve efficiency of
Aja.Vector.duplicate/2
⚡️⚡️⚡️
- Changed internal representation of
Aja.Vector
(only breaking if persisted) - Stop documenting and exposing internal trees (Aja.RBTree)
- Rename and deprecate Aja.Vector.append_many/2 to
Aja.Vector.concat/2
This release is mostly focused on vector slicing and performance ⚡️
- Add Aja.Vector.each/2
- Add
Aja.Vector.slice/2
,Aja.Vector.slice/3
,Aja.Vector.take/2
andAja.Vector.drop/2
Aja.Vector
efficiently implementsEnumerable.slice/1
- Reimplement
Aja.Vector.delete_at/2
,Aja.Vector.pop_at/2
efficiently
- Implement Aja.Vector.product/1
- Invoke callbacks in the right order for:
Aja.Vector.map/2
,Aja.Vector.map_intersperse/3
, Aja.Vector.map_join/3, Aja.Vector.any?/2, Aja.Vector.all?/2
- Add Aja.Vector.map_join/3 and
Aja.Vector.map_intersperse/3
- Implement
Aja.Vector.intersperse/2
more efficiently
- Aja.Vector.sum/1 adds using the same order as
Enum.sum/1
, avoiding slight inconsistencies for floats
- Introduce persistent vectors:
Aja.Vector
🚀️ - Add
Aja.vec/1
- Add Aja.sigil_i/2
- Add Aja.IO.to_iodata/1
- Add Aja.Enum.sort_uniq/1, Aja.Enum.sort_uniq/2
- Add
Aja.List.prepend/2
- Aja.RBMap.Enumerable.member?/2 returns
false
instead of crashing for values other than size-2 tuples
- Rework all internals, improved peformance for
Aja.OrdMap
, Aja.RBMap, Aja.RBSet - Add
default
parameter toAja.OrdMap.first/1
,Aja.OrdMap.last/1
, Aja.RBMap.first/1, Aja.RBMap.last/1, Aja.RBSet.first/1, Aja.RBSet.last/1
- Changed signature of
Aja.OrdMap.foldl/3
,Aja.OrdMap.foldr/3
, Aja.RBMap.foldl/3, Aja.RBMap.foldr/3 - Internals of all data structures have been changed
- Split Aja.RBTree as Aja.RBTree.Map and Aja.RBTree.Set
- Add
Aja.String.slugify/2
- Remove
Aja.Array
module
- Add
pop_first/1
andpop_last/1
to Aja.RBMap, Aja.RBSet andAja.OrdMap
- Add some guards to functions
- Aja.RBSet.disjoint?/2 was not returning the expected value
- Fix incompatibility with Elixir 1.10
- Initial release