Releases: erikerlandson/coulomb
Releases · erikerlandson/coulomb
v0.3.6
- dependency version updates
- sbt build dependency updates
v0.3.5
- new integration with pureconfig
v0.3.4
- build and deps updated for scala 2.13.0
v0.3.3
- putQuantity for Avro
v0.3.2
- support for integration with avro schema
- minor documentation upgrades
v0.3.1
- 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
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
- Added numeric representation types
- Compile-time annotations for cleaner unit declarations
- Macro implementations of all numeric operations
- More operators (especially comparison operations)
- Unit testing
Pilot release
- allow a programmer to assocate unit analysis with values, in the form of static types
val length = 10.withUnit[Meter]
val duration = Second(30.0)
val mass = Quantity[Kilogram](100)
- express those types with arbitrary and natural static type expressions
val speed = Quantity[(Kilo <*> Meter) </> Hour](100.0)
val acceleration = Quantity[Meter </> (Second <^> _2)](9.8)
- let the compiler determine which unit expressions are equivalent (aka compatible) and transparently convert beween them
val mps: Quantity[Meter </> Second] = Quantity[Mile </> Hour](60.0)
- cause compile-time error when operations are attempted with incompatible unit types
val mps: Quantity[Meter </> Second] = Quantity[Mile](60.0) // compile-time type error!
- automatically determine correct output unit types for operations on unit quantities
val mps: Quantity[Meter </> Second] = Mile(60) / Hour()
- allow a programmer to easily declare new units that will work seamlessly with existing units
// a new length:
trait Smoot extends DerivedType[Inch]
object Smoot extends UnitCompanion[Smoot]("smoot", 67.0)
// a unit of acceleration:
trait EarthGravity extends DerivedType[Meter </> (Second <^> _2)]
object EarthGravity extends UnitCompanion[EarthGravity]("g", 9.8)