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