All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.1.2] — 5 July 2021


  • Revised documentation and fixed formatting issues.

  • Updated typespecs.

  • Updated development & test dependencies.

1.1.1 — 2 March 2021


  • Added Packmatic.Source.Stream.

    • Added support for Streams that output IO Lists.
  • Updated Packmatic.Source.

    • Added ability for any Source to use any data type as its Source State.
    • Added ability for any Source to return an updated Source State with new data.


  • Revised Packmatic.Source.Dynamic.

    • Removed custom resolver; any entry notation now accepted.
  • Updated development & test dependencies.

1.1.0 — 3 October 2020


  • Added support for custom Sources.

  • Added support for Encoder Events.

    • Added the on_event option to the Encoder which can be used to receive events.
    • See documentation for Packmatic.Event.



  • Revised Packmatic.Encoder.
    • Fixed acceptance of IO Lists, in case of custom Sources returning these instead of binaries.

1.0.0 — 18 November 2019


  • Revised Manifests handling.

    • Revised Manifests so they are validated once, during creation.
      • Empty Manifests are now invalid.
      • Manifests can be valid or invalid depending on their entries.
      • See documentation for Packmatic.Manifest.
    • Revised Encoder to not re-validate Manifests.
      • Encoder halts immediately if given an invalid Manifest.
    • Removed Packmatic.Validator.validate_each/1.
      • Since the Manifest is validated as it is built, this function is no longer useful.
    • Revised tests.
      • Revised test on “no entries” case for invalid Manifest.
      • Added simple Manifest test with examples.
      • Made the top-level PackmaticTest asynchronous.
  • Revised Sources handling.

    • Eliminated duplicative types with code generation.
      • Known Sources are referred by name.
      • The Source Entry type is generated based on the names.
    • Revised individual Source modules.
      • Standardised nomenclature (init_arg, init_result, etc) for type handling.
    • Revised Manifest types.
      • Removed aliasing of Manifest.Entry.t().
      • Renamed Manifest.entry_keyword() to Manifest.Entry.proplist().
    • Added further documentation on how Dynamic Sources work.

0.1.0 — 30 October 2019


  • Initial Release.