Release notes for version 1.1, 2023-10-22

  * Build bugfix: the build from a repository now works with
    GNU Make 3, as well as v4.

  * Change the repository location (from sourcehut to heptapod).
    Updates to a couple of other URIs.

  * VOUnits function-application can now include a ‘scalefactor’,
    thus `log(1e3MHz)` (issue #11, in part).

  * Recognise the four additional SI prefixes of 27th CGPM,
    resolution 3 (ie, ronto, ronno, quecto and quetta) (issue #13).

  * Recognise `%` as a unit (indicating multiplication by 0.01)
    in the VOUnits syntax (issue #11, in part).

  * Adjust parsing of leading floats: these now parse correctly with
    large positive positive or negative exponents (issue #12)

  * The `unity.jar` file is now installed to `@prefix@/data/java` (issue #16)

  * Fix status of Besselian/tropical years in FITS.

  * We now require, and claim compatibility with, Java 8.

  * Various build, configuration and documentation tweaks, avoiding warnings.
    Builds tested on a slightly broader range of platforms
    (including Alma 9 and Debian 12).

Release notes for version 1.1-b1, 2022-04-10

  * Added `"1"` as an indicator of the ‘dimensionless expression’, in
    the VOUnits syntax (only).  This is slightly provisional,
    anticipating this change in the VOUnits spec.  There is still no
    indicator of a dimensionless expression in the other units (ie,
    `""` is still unparseable in all syntaxes).

  * Added `OneUnit.getOriginalString()` to retrieve the string
    representation originally found in the parsed string, whether or
    not it is valid, preferred, or guessed.

  * The methods `OneUnit.toString(Syntax)` and `OneUnit.unitString(Syntax)` have
    changed their signature: both now throw a (new)
    `UnwritableExpression` exception.  Method `OneUnit.toString()`
    does not throw an exception.  Various other minor documentation and API
    clarifications around writing.

  * Added further lookup functions in UnitDefinitionMap:
    `UnitRepresentation lookupUnitRepresentation(Syntax syntax,
    UnitDefinition ud)` looks up unit representation information,
    given a definition object, and `UnitDefinition
    lookupUnitDefinition(String uri)` looks up unit information given
    a URI.

  * Added a UnitParser.setGuessing(boolean) method, to optionally add simple
    heuristics to identifying units.  Thus `degrees` will be
    identified as the degree, and plural unit strings , such as `ergs`
    will potentially be recognised using the singular form.  The list of
    heuristics is currently still short.

  * Deprecated Dimensions.exponents(), and replaced it with
    Dimensions.exponent(Dimensions.BaseQuantity).

  * Added a constructor `new UnitParser(Syntax)` to construct a parser once,
    and then use it repeatedly.

  * In the FITS syntax, the preferred symbol for Julian Year is now
    noted as 'a' rather than 'yr' (clarified in FITS 4.0).

  * Added `label` to UnitDefinition (Java) and the `UnitDef` structure (C).
    The testcases were rewritten accordingly.

  * The OneUnit.toDebugString() output has therefore changed slightly.

  * Some reworking of uk.me.nxg.unity.Dimensions: the 'U' 'dimension'
    has disappeared, and the output is now more consistent.

Release notes for version 1.0, 2014 May 13

  * Removed erroneous 'p' annotation for FITS/byte.

  * Tropical and Besselian years added back as known but deprecated
    VOUnits, and suitable adjustments to tests.

  * Builds on OpenBSD with all warnings enabled, including
    MALLOC_OPTIONS=AFGJ (the only changes required were the removal of
    a couple of non-problematic strcpy calls).

  * Minor adjustments/clarifications to tests.

Release notes for version 0.11, 2013 December 24

  * Remove quoting of functions.

  * Recognise binary prefixes only where the known-units list
    explicitly permits them.

  * Portability and minor bug fixes (works with llvm, as used on OS X 10.8+).

  * Configuration and build tidyups.

Release notes for version 0.10, 2013 October 25

  * The '%' character is now treated as a special case, rather than
    being a permitted 'STRING' character; it's only the CDS syntax
    that permits this character.

  * Some readability adjustments to the grammars, clarifying function
    application and raising terms in a unit string to powers.

  * Unit strings with leading slashes (eg '/m3') are no longer
    supported in the VOUnits syntax.

  * Additional test cases, involving '%' and the leading scale factor.

Release notes for version 0.9, 2013 September 22

  * Addition of leading float scale-factor and quoted units, for the
    VOUnits syntax only, following on-list discussion.

  * C library unit tests (in addition to the collection of shared
    tests in src/grammar/testcases.csv)

  * The unit 'au' is now allowed, as well as 'AU', because preferring
    'atto-atomic-unit' to 'AU' seems perverse in this context.

  * Added units 'cy', 'Ba' and 'ta' for FITS, based on FITS WCS paper
    IV section 4.2 (draft).

  * Added methods (Java) and functions (C) to test for equality
    between Units and UnitExpressions.

  * C syntaxes are now enums rather than #define constants.

  * Various minor API changes, and documentation improvements.

Release notes for version 0.8, 2013 July 24

  * Java implementation: Syntax constants are now an enumeration,
    rather than a set of final strings.

  * C implementation: VOUnits parser/writer renamed from "vou" to "vounits".

  * Support binary prefixes (kibi, mebi, and so on, of ISO/IEC
    80000-13 Sect.4) in both C and Java implementations.

  * Some adjustments to the set of 'known units'.

----

Release notes for version 0.7, 2013 July 19

  * Now supports functions-of-units (including [...] CDS syntax for logs).

  * Various grammar adjustments, following community comments.

----

Release notes for version 0.6, 2012 August 18

  * CDS parser now supports leading factors which aren't a power of ten.

  * Added reading and writing support for 'VOUnits' syntax.

  * Extra checks, so that the output of writers is now checked to be
    syntactically valid for that syntax.

  * Various minor bugfixes and documentation improvements.

  * A few minor API changes.

  * Now works with byaccj (and probably byacc), so that we don't
    absolutely require byaccj (for Java) _and_ bison.

  * Promote it to a beta release, now.

----

Release notes for version 0.5, 2012 April 19

  * Refactoring for robustness: valgrind (in C), more final fields (in Java), more assertions all round

  * Distribution fixes

----

Release notes for version 0.4, 2012 February 5

  * The units are now specified using the QUDT framework, described at
    http://qudt.org.  This is an extensive ontology for units, which
    includes a larger set of units than is described in any of the
    three supported syntaxes (though these aren't at present used),
    and information about the 'kinds/types' and dimensions of those
    units.  The units specification is now therefore much more
    flexible than the rather ragged CSV-based specification of
    before.  The src/grammar/known-units spreadsheet still exists, but
    now only desribes the _representation_ of these units -- which
    symbols are associated with which units, with which restrictions.

  * Java dependencies are now managed with Maven (mvn
    dependency:copy-dependencies), which is therefore now a
    requirement for the developer (checkout) build, but not the
    distributed build, which still needs zero external dependencies.

  * Some fairly minor adjustments to the three grammars

  * Various extra tests

----

Release notes for Version 0.3, 2011 November 15

  * Internal refactoring of grammar files

  * Distribution fixes

  * API changes: UnitExpr.getUnit() and OneUnit.getBaseUnit(), .getPower(), .getBaseUnitDefinition()

  * Java output locale-independent (closes issue 2)

  * Add basic locale support for Java

----

Release notes for 0.2-1, 2011 August 3

  * Distribution adjustments: the pre-built jar file is now targeted at a 1.5 JRE.

----

Release notes for 0.2, 2011 August 1

  * Back-ported to Java 1.5.
  * Added a command-line interface to the Java library.
  * Portability and distribution fixes.

----

Release notes for 0.1-1, 2011 July 22

  * Add class uk.me.nxg.unity.Version, for version information in Java.
  * Porting: fixes so it now builds on Scientific Linux

----

Release notes for 0.1, 2011 July 21

  * Initial release
