                 Changes in version 1.0-1 (2026-03-11)                  

  - Add internal workaround for udunits2 bug with parsing of units that
    contain "per", e.g. "percent" or "person"; #414

  - Update minimum Rcpp version; #421

  - Fix print methods for units and mixed_units, which now correctly
    return invisibly the object being printed; #422

  - Wrap all pointers to avoid memory leaks derived from errors.

  - Check for exception propagation in udunits2; #423

  - Fix ud_convert() for empty input vectors; #428

                 Changes in version 1.0-0 (2025-10-09)                  

  - Breaking change: a new tokenizer fixes longstanding issues with
    parsing complex unit expressions, but may break existing code that
    relied on the previous (buggy) behavior. The major change is that
    now numbers are consistently treated as prefixes, so that units like
    ml / min / 1.73m^2 used in physiology are now correctly parsed as ml
    / (min * 1.73 * m^2). See ?as_units for details; #416 addressing
    #221, #383

  - Printing: follow NIST recommendations. In particular, numerator and
    denominator are separated by a single slash, and a parenthesis is
    used when the denominator contains several symbols (see example
    above); #86

  - Vectorize ud_*() helpers; #405 addressing #404

  - Loading units no longer initializes the RNG state; #409

  - Fix scale training in ggplot2 scales; #412

  - Add scale_{type}_units() scales for additional continuous aesthetics
    (colour, fill, alpha, size, linewidth); #369

  - Implement matrixOps.units, with support for %*% (R >= 4.3.0); #226

  - New convert_to_base() implements conversion to base units; #132
    @jamarav

                 Changes in version 0.8-7 (2025-03-11)                  

  - Deep copy of ud_convert() input to avoid side effects; #403

  - Set C++17 standard for old versions of R; #402

                 Changes in version 0.8-6 (2025-03-07)                  

  - Add methods for cbind and rbind; fixes #311

  - Performance improvements in data.frame methods; suggested in #361
    @grcatlin

  - Fix weighted.mean.units for unitless objects; #363

  - Fix incorrect use of round() in %% and %/% methods; #365
    @UchidaMizuki

  - Fix ggplot2 deprecation warnings; #367

  - Fix hist() error; #368

  - Add support for lims() in ggplot2 scales; #370

  - Fix simplification of inverse units; #378

  - Replace call to Rf_error() with Rcpp::stop(); RcppCore/Rcpp#1247

  - Fix UBs in the C++ glue code; #380

  - Add support for brew path discovery in macOS; #384

  - Several performance improvements; #387, #388, #393, #400 addressing
    #386, #389

  - Improve keep_units() helper for more general usage scenarios; #394
    @d-morrison addressing #392

  - Add ud_convert() to convert units of a vector; #399 @dlebauer
    addressing #398

  - Fix scale_units for upcoming version of ggplot2; #401

                 Changes in version 0.8-5 (2023-11-28)                  

  - avoid -Wformat-security warning on CRAN

                 Changes in version 0.8-4 (2023-09-13)                  

  - Identical unit division and multiplication will now respect
    units_options(simplify = FALSE) reverting a change from #310; #355
    @billdenney

  - Fix scale_units when both unit and trans are specified; #357

                 Changes in version 0.8-3 (2023-08-10)                  

  - Remove tolerance from comparisons with logical operators, restoring
    behavior changed in previous release; #353 addressing #351

                 Changes in version 0.8-2 (2023-04-27)                  

  - Names are preserved when doing unit conversions; #305 @billdenney

  - Identical units will always divide (/) and allow integer division
    (%/%). And, inverse units will always be able to multiply; #310
    @billdenney

  - Compare units via ud_compare(), fixing inconsistent results for
    aliases and symbols; #339, #346, #347

  - Fix units<-() to treat an empty unit the same as NULL; #332

  - New as.data.frame() method for mixed_units; #309

  - Use short paths for database loading on Windows to fix UTF-16
    issues; #342

  - Add example in the docs about reversing a ggplot2 units scale; #343

  - Force storage mode to double; #344 addressing #324

  - Fix units in transformed axis; #323

  - Consider unitless as radians in trigonometric functions; #328

                 Changes in version 0.8-1 (2022-12-10)                  

  - fix %/% and %% if arguments have different units; #313

  - fix multiplier parsing for exp(log(x)) operations; #321

  - fix specification of secondary axes with scale_units; #326

                 Changes in version 0.8-0 (2022-02-04)                  

  - enhance unit mapping for newly installed units; #290

  - remove deprecations: install_symbolic_unit, remove_symbolic_unit,
    install_conversion_constant, install_conversion_offset; #290

  - fix multipliers for round trip log-exp operations; #292

  - integrate ggplot2 scales (previously in the ggforce package) to
    automatically print axes with units; #294 addressing #164

  - fix all.equal.units for non-units current

  - fix zero power; #285

  - fix unique.units to support arrays and matrices, implement methods
    for duplicated and anyDuplicated

  - fix plot labels with spaces; #298 addressing #297

  - always add units to labels, including user-provided ones; as part of
    #298

  - new symbols/names with a percentage character are not allowed due to
    an upstream bug; #289

                 Changes in version 0.7-2 (2021-06-08)                  

  - enhance pillar integration; #273, #275, #280 @krlmlr

  - new unique method for units and mixed_units objects; #283 addressing
    #277 @lewinfox

                 Changes in version 0.7-1 (2021-03-16)                  

  - allow longer units grouping; #270 addressing #269 @bart1

  - fix regression in set_units method for mixed_units to ensure that
    ordering is preserved; #272 addressing #271

                 Changes in version 0.7-0 (2021-02-25)                  

  - add load_units_xml to enable database reloading as well as loading
    user-provided unit systems; #254 addressing #243, #244

  - add install_unit and remove_unit for adding/removing custom
    user-defined symbols or names, with optional mapping to existing
    units; install_symbolic_unit, remove_symbolic_unit,
    install_conversion_constant, install_conversion_offset are
    deprecated; #261 addressing #89

  - add keep_units, a helper to apply functions that do not preserve
    units; #255 addressing #252

  - fix as_units(""), which is now equivalent to unitless; #199

  - fix plot axes for plot.formula and plot.data.frame; #213

  - fix arithmetic for powers above 1 and below -1; #264

  - improve arithmetic of logarithms; #249

  - export ud_are_convertible; #263 addressing #258 @cregouby

  - remove deprecations: as.units, as_cf, make_unit, parse_unit; #259

  - remove deprecated pre-computed ud_units database; #259

                 Changes in version 0.6-7 (2020-06-13)                  

  - port isFALSE to fix regression in old R versions; #230 addressing
    #229

  - fix replacement operation for units objects; #233 addressing #232

  - fix compatibility with dplyr 1.0; #247 addressing #239

                 Changes in version 0.6-6 (2020-03-16)                  

  - prettier str print for units and mixed units; #228 addressing #227

  - add compatibility with upcoming tibble v3.0.0; #225

                 Changes in version 0.6-5 (2019-10-08)                  

  - skip test on CRAN to avoid issues with strict latin1 environments

                 Changes in version 0.6-4 (2019-08-22)                  

  - fix support for weights with units in weighted.mean; #205

  - invalid names for new units now trigger a proper error message; #209
    addressing #208

  - fix issues in strict latin1 environments; #202

                 Changes in version 0.6-3 (2019-05-03)                  

  - improve platform dependent encodings handling; #183

  - don't force as.numeric when unnecessary; #182 addressing #181

  - fix valgrind issues on CRAN and tidy up tests; #193 addressing #192

  - new method drop_units for data frames; #191 addressing #187

                 Changes in version 0.6-2 (2018-12-05)                  

  - fix support for logarithms and decibels; #177 addressing #176
  - add delayed S3 registration mechanism for R >= 3.6.0

                 Changes in version 0.6-1 (2018-09-21)                  

  - vectors with mixed units are now supported; #145

  - NA values for units now trigger a proper error message; #163

                 Changes in version 0.6-0 (2018-06-09)                  

  - print units as [unit] more consistently, e.g. for single unit and in
    data.frames; #132

  - improve printing of unitless units; provide option to print
    something else than 1; #150

  - fix printing unitless in labels when negative_power is TRUE; #133

  - install_symbolic_unit now adds a dimensionless unit, integrated in
    the units system, meaning that prefixes on it work as well; #71

  - install_conversion_constant and install_conversion_offset now
    install a new unit that is a function of an existing udunits unit.;
    #71, #84

  - unit simplification can now be user-controlled by units_options; #89

  - set_units(15, mg/kg) is now no longer simplified to 1e-9 unitless;
    #89

  - directly uses the udunits2 C library; drop dependence on R package
    udunits2, fixing R package udunits2 memory leaks; #135

  - drops %*%, no longer gives warning when loading

                 Changes in version 0.5-1 (2018-01-08)                  

                 Changes in version 0.5-0 (2018-01-07)                  

  - deal with trigonometric functions for units degree; return units rad
    on inverse trigonometric functions.

  - Unit creation has been significantly refactored. units<- now accepts
    strings or quoted language objects on the right hand side, powered
    by new S3 methods for as_units. All valid unit symbols and unit
    names recognized by package 'udunits2' are now accepted. New user
    facing function make_units() (plural s) is also provided. See
    ?as_units for details. @t-kalinowski

  - new functions valid_udunits() and valid_udunits_prefixes() generate
    tidy dataframes listing all the valid unit names, symbols, and
    prefixes recognized by udunits. @t-kalinowski

  - new function install_symbolic_unit() for adding custom, user-defined
    units. @t-kalinowski

  - make_unit and parse_unit (singular unit) have been deprecated,
    please use as_units instead.

  - ud_units is no longer necessary and is soft-deprecated, and may be
    removed in a future release.

  - add %*% as an S3 generic; #54

  - add %% and %/% to Ops.units

  - support unary + and - ; #56

  - add seq method for units, converting units to those of the first
    argument

  - Deprecate as.dt for as_difftime, as.units for as_units and as_cf for
    deparse_unit

                 Changes in version 0.4-6 (2017-08-27)                  

  - add all.equal method for units; #51

  - add deparse_unit to replace as_cf

  - add calender/time conversions between udunits time units like
    minutes from 1900-0-0, and R's POSIXct and Date

  - add as_units to replace as.units

  - rename as.dt to as_difftime

                 Changes in version 0.4-5 (2017-06-14)                  

  - add support for user-defined unit conversion; #31

  - allow for 1/n integer powers, as in set_units(1:10, m^-2) ^ 0.5; #29

  - properly set log units after log transform; #33

  - sin, cos and tan no longer complain when units is rad, and return
    unitless; #40

  - now allow for set_units(1:3, "°C") and also set_units(1:3,
    "degree_Celsius") by resolving names to symbols first; #43

  - set_units(x) with x numeric sets units to unitless; #41

                 Changes in version 0.4-4 (2017-04-20)                  

  - fix a result units bug when multiplying or dividing units vectors of
    different length, #34

  - add a rep method for units vectors

                 Changes in version 0.4-3 (2017-03-25)                  

  - support for set_units(1:10, m) which does not require to declare or
    define, m (m is resolved automatically from ud_units)
