View Source Changelog

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.

unreleased

[Unreleased]

added

Added

changed

Changed

deprecated

Deprecated

removed

Removed

fixed

Fixed

security

Security

v0-3-0-2022-11-21

[v0.3.0] - 2022-11-21

added-1

Added

  • Mostly automatic support Ecto.Type (including for builtin interval types)
  • left/1 and right/1 to extract the left and right values from the interval.
  • Builtin Jason.Encoder support.
  • Interval.__using__ option jason_encoder for including encoder. Defaults to true.
  • Interval.to_map/1 to convert an Interval struct to a map suitible for JSON and similar serialization.
  • Interval.Decimal for Decimal support.

changed-1

Changed

  • Interval.__using__ option discrete is now optional, and defaults to false

deprecated-1

Deprecated

removed-1

Removed

fixed-1

Fixed

security-1

Security

v0-2-0-2022-10-27

[v0.2.0] - 2022-10-27

added-2

Added

  • Allow opting out of built in implementations by configuring :interval, Interval.Float: false
  • Adding Interval.Intervalable protocol, which allows you to define what interval implementation to use for value types. This is purely for ergonomic reasons.
  • Special-case for empty intervals, which doesn't require implementation-specific behaviour.
  • Adding Interval.contains_point?/2
  • Adding Interval.partition/2
  • Adding Interval.size/1

changed-2

Changed

  • Various RuntimeErrors handling bad input to a function has been converted to ArgumentErrors
  • Point.previous(a) and Point.next(a) became point_step/2 in the Interval.Behaviour.
  • Interval.new/1 now requires a :module option of the specific implementation to use, however the implementation has a new/1 that infers this when creating new intervals.

removed-2

Removed

  • The idea of a "zero" point was removed because it doesn't make sense for all intervals.
  • Removed the Interval.Point protocol in favor of a behaviour for the entire interval.
  • Removed Interval.size/2

v0-1-3-2022-10-12

[v0.1.3] - 2022-10-12

added-3

Added

  • Added Interval.size/2.
  • Added parameterized typespec Interval.t/1

changed-3

Changed

  • The internal Endpoint struct has been replaced by a simple 2-tuple.
  • Empty intervals are now represented by two identical exclusive points.

fixed-2

Fixed

v0-1-2-2022-10-10

[v0.1.2] - 2022-10-10

fixed-3

Fixed

  • Fixed a correctness bug in intersection, where intersections between intervals containing unbounded endpoints would be incorrectly computed.