Skip to content

Releases: erikerlandson/coulomb

v0.3.6

15 Sep 15:05
Compare
Choose a tag to compare
  • dependency version updates
  • sbt build dependency updates

v0.3.5

01 Sep 16:06
Compare
Choose a tag to compare
  • new integration with pureconfig

v0.3.4

16 Jun 20:20
Compare
Choose a tag to compare
  • build and deps updated for scala 2.13.0

v0.3.3

23 May 00:14
Compare
Choose a tag to compare
  • putQuantity for Avro

v0.3.2

21 May 21:18
Compare
Choose a tag to compare
  • support for integration with avro schema
  • minor documentation upgrades

v0.3.1

07 May 01:35
Compare
Choose a tag to compare
  • new package coulomb-typesafe-config for reading quantity values from typesafe Config objects
  • the chained implicit system that implements coulomb is now smaller and faster
  • QuantityParser is now serializable
  • The coulomb project now adheres to the Scala Code of Conduct
  • miscellaneous small fixes

v0.3.0

29 Apr 23:42
Compare
Choose a tag to compare

Massive re-write to replace all macros with chained implicits.
Removed UnitExpr hierarchy.
Put pre-defined units in separate packages.
Unit types are now decoupled from BaseUnit, DerivedUnit and friends. That means pre-existing types can be declared into the unit system.

v0.2.0 - numeric representation types, easier unit declarations, better ops

29 Apr 21:48
Compare
Choose a tag to compare
  1. Added numeric representation types
  2. Compile-time annotations for cleaner unit declarations
  3. Macro implementations of all numeric operations
  4. More operators (especially comparison operations)
  5. Unit testing

Pilot release

21 Jan 13:58
Compare
Choose a tag to compare
  1. allow a programmer to assocate unit analysis with values, in the form of static types
    1. val length = 10.withUnit[Meter]
    2. val duration = Second(30.0)
    3. val mass = Quantity[Kilogram](100)
  2. express those types with arbitrary and natural static type expressions
    1. val speed = Quantity[(Kilo <*> Meter) </> Hour](100.0)
    2. val acceleration = Quantity[Meter </> (Second <^> _2)](9.8)
  3. let the compiler determine which unit expressions are equivalent (aka compatible) and transparently convert beween them
    1. val mps: Quantity[Meter </> Second] = Quantity[Mile </> Hour](60.0)
  4. cause compile-time error when operations are attempted with incompatible unit types
    1. val mps: Quantity[Meter </> Second] = Quantity[Mile](60.0) // compile-time type error!
  5. automatically determine correct output unit types for operations on unit quantities
    1. val mps: Quantity[Meter </> Second] = Mile(60) / Hour()
  6. allow a programmer to easily declare new units that will work seamlessly with existing units
    1. // a new length:
    2. trait Smoot extends DerivedType[Inch]
    3. object Smoot extends UnitCompanion[Smoot]("smoot", 67.0)
    4. // a unit of acceleration:
    5. trait EarthGravity extends DerivedType[Meter </> (Second <^> _2)]
    6. object EarthGravity extends UnitCompanion[EarthGravity]("g", 9.8)