Skip to content

name-parser 5.0.0

Latest

Choose a tag to compare

@mdoering mdoering released this 14 Jul 15:08
· 4 commits to master since this release

First release of the 5.x line. This is now an API-only, single-module project (name-parser-api): the data model, the NameParser contract, and name/rank/unicode utilities. The parsing engine has been reimplemented in Rust and is
consumed through this interface via a native binding — see gbif/name-parser-rust (https://github.com/gbif/name-parser-rust).

Highlights

  • Three-way ParseResult (Parsed | Informal | Unparsable), sealed. parse(...) never throws; type() and code() are available on all three variants. Informal is a new dedicated result for a supraspecific taxon carrying a provisional,
    non-code designation (Rhizobium sp. RMCC TR1811, Bartonella group).
  • parseAuthorship(...) returns Optional instead of throwing.
  • UnparsableNameException is now unchecked, raised only by the opt-in ParseResult.orElseThrow().
  • NameType.IDENTIFIER — a new classification for anchorless machine identifiers (BOLD BIN, UNITE SH, OTU/ASV, culture-collection accessions) that previously fell into OTHER.
  • The bundled Java parser is gone. For a working NameParser, use the native Rust binding; to stay on the pure-Java engine, remain on the 4.x branch.

Fixes in this release

  • Authorship.addAuthor/addExAuthor no longer drop real authors (inverted blank-check corrected).
  • equals/hashCode now include authorship — previously two names differing only in authorship compared equal. Behavioral change: any code relying on the old authorship-blind equality (e.g. dedup) should re-check.
  • copy() deep-copies its mutable collections instead of aliasing them.

Migration

See Migrating from 4.x to 5.0 (https://github.com/gbif/name-parser#migrating-from-4x-to-50) in the README.