Skip to content

Latest commit

 

History

History
86 lines (63 loc) · 2.95 KB

CHANGELOG.md

File metadata and controls

86 lines (63 loc) · 2.95 KB

Changelog

v0.3.0

While this release introduces a breaking change, most of the API has been pretty stable for a long time. Consider this a 1.0.0 release candidate.

  • Breaking changes

    • Persistence functions raise an exception rather than return :noop when persistence has been disabled.
    • Error tuples all return Exception structs rather than atoms. This cleans up some error handling inconsistences, but will require changes to any code that tries to interpret the error atoms.
  • New features

    • Add raising versions (e.g., bang versions) of persistence functions

v0.2.6

  • New feature

    • Added :event_transformer option that takes a function to transform a PropertyTable.Event.t() into a custom data structure for subscribers. This lets users abstract away the use of PropertyTable.
  • Fixes

    • The :previous_timestamp field in change events had been set to nil when no information was known about the previous state of the property. It's now set to the PropertyTable's start time to fix the typespec violation (nil wasn't valid) and help differentiate unknown properties due to app restarts vs. not being set.
    • Properties set at initialization, including restored ones, all have the same timestamp.

v0.2.5

  • Fix incorrect typespec for PropertyTable.options()

v0.2.4

  • Updates
    • Fix unintended exceptions being raised when the filesystem updates start failing when table persistence is enabled
    • Reduce time when an unexpected VM exit could result in a corrupt persisted file. The backup would be usable, but now the critical steps only involve renaming or deleting files.

v0.2.3

  • Updates
    • Fix compiler warnings with Elixir 1.15

v0.2.2

  • Updates
    • Fixed missing :crypto dependency warning.

v0.2.1

  • New features
    • Automatic persistence and snapshots for PropertyTables. This makes it possible to use PropertyTable for small key/value stores like those for storing runtime settings especially for Nerves devices. PropertyTable protects against corruption and unexpected reboots that happen mid-write.

v0.2.0

  • Backwards incompatible changes

    • nil no longer deletes a property from the table. In other words, it's ok to for properties to be nil now.
    • PropertyTable.clear/2 and PropertyTable.clear_all/2 were renamed to PropertyTable.delete/2 and PropertyTable.delete_matches/2 respectively.
    • PropertyTable.put/3 raises if you give it an invalid property rather than returning an error tuple. Since these are usually programming errors anyway, this change removes the need for a return value check for Dialyzer.
  • New features

    • Added PropertyTable.put_many/2. It's possible to add many properties to the table atomically. Change notifications still only get sent for properties that really changed.

v0.1.0

Initial release

This code was extracted from vintage_net, simplified and modified to support more use cases.