Changes for version 2.26 - 2026-10-16

  • PURL: Improved component validation and percent-encoding
  • PURL: Added UTF-8 support (RFC 3629) in components, "purl-tool" input and output
  • PURL: Added "is_purl" utility and validation flag (enabled by default) in "URI::PackageURL->from_string" and "decode_purl"
  • PURL: Reduced execution time by ~39% for "URI::PackageURL::Type"
  • PURL: FIX "0" value lost in namespace, name, version, qualifiers and subpath
  • PURL: FIX "clone" and qualifiers modified by "new" and "to_string"
  • PURL: FIX missing "URI::VersionRange" import ("vers" qualifier)
  • PURL: FIX "URI::PackageURL::Type->validate" default "pkg" scheme'
  • VERS: FIX code injection via "scheme" in "URI::VersionRange::Version->load" (removed string eval)
  • VERS: FIX "vers:none/*" contained all versions (vers-spec: no versions)
  • VERS: Added "is_vers" utility and "scheme" validation (aligned to vers-spec "type")
  • VERS: Added "semver", "npm", "intdot", "lexicographic" and "datetime" scheme comparators
  • VERS: The scheme comparator class is now used by "contains", "to_string" (sort), "version_compare" and "from_native" (if implemented)
  • VERS: Improved scheme comparator class loading ("." and "-" in scheme, croak on load errors)
  • VERS: FIX percent-encoding (vers-spec canonical form, decoded exactly once) and added UTF-8 support
  • VERS: FIX constraint parser (croak on empty version)
  • VERS: FIX "alpm" and "pypi" schemes compared as SemVer
  • VERS: FIX "vers-tool --contains" fallback comparator warning
  • VERS: FIX npm/semver native range intersection (eg. ">=5.0.3 >=4.2.1" --> "vers:npm/>=5.0.3") and croak on unsatisfiable ranges
  • VERS: Improved "pypi" and "generic" schema and "gem" native range
  • Synced PURL and VERS spec and tests, switched to "purl-test.schema-0.2.json"
  • Improved tests ("parse" vers-spec tests, experimental PURL examples) and disabled "legacy" PURL test suite

Documentation

Package URL tool
Version Range tool

Modules

Perl extension for PURL (Package URL)
PURL type definition class for URI::PackageURL
Utility for URI::PackageURL
Perl extension for VERS (Version Range Specifier)
URI::VersionRange (vers) Command Line Interface
Version Constraint for Version Range Specification
Utility for URI::VersionRange
Version scheme helper class

Provides

in lib/URI/PackageURL/App.pm