- Dropped support for Elixir versions before 1.6.
- Fixed a deprecation warning from
Bitwise.
- Added support for iolists in
Msgpax.Ext. - Fixed iolist
Msgpax.Fragmentinspecting.
- Introduced support for MessagePack data fragment manipulation.
- Optimized unpacking even more for typical usage scenarios.
- Fixed error raising in
Msgpax.pack/1when protocolMsgpax.Packeris not implemented for the given data types. - Complete IEEE 754 support: added NaN and ±infinity.
- Optimized list and map packing.
- Optimized packing by generating less garbage.
- Fixed bare struct unpacking in
Msgpax.PlugParser—the same behaviour when unpacking maps.
- Fixed deprecation warnings for using non-empty lists with the Collectable protocol.
- Added the
:unpackeroption support inMsgpax.PlugParser.
- Made unpacking even slightly more optimized.
- Added support for the Timestamp extension type.
- Improved handling of reserved extension types—unpacking will not fail for reserved extension types added in future.
- Optimized unpacking by using single match context.
- Optimized packing by producing smaller iodata.
Breaking changes:
- Dropped support for Elixir versions before 1.4.
- Converted all error reasons to proper exceptions: non-raising functions now return
{:error, Msgpax.PackError.t | Msgpax.UnpackError.t}in case of failure instead of{:error, term}. - Stopped packing keyword lists as maps and started raising an exception when trying to pack a keyword list: from now on explicit conversion from keyword lists to maps is required, or alternatively the
Msgpax.Packerprotocol must be implemented for tuples.
- Added the
:include_struct_fieldoption forMsgpax.Packerprotocol deriving.
- Added the
:iodataoption toMsgpax.pack/2andMsgpax.pack!/2. - Added the
Msgpax.Ext.Unpackerbehaviour. - Added the
Msgpax.PlugParsermodule which implements thePlug.Parsersbehaviour. - Added the
:fieldsoption for@derive.
Breaking changes:
- Renamed
Msgpax.Packer.transform/1toMsgpax.Packer.pack/1, so all protocol implementations should be updated.