The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Created:      2016-11-23
Home page:    <>
Home page:    <>
Bug tracker:  <>
Maintainer:   Jonas Smedegaard (JONASS) <>

v3.11.1	2023-08-08

 [ Test Suite ]
 - test-recommend recent re::engine::RE2 and tighten test
   02-regexp-pattern_RE2.t to not fail on perl v3.38

v3.11.0	2023-07-03

 [ Bug Fixes ]
 - disambiguate objects naumen zpl_2.
 - list longest item first in synthesized patterns
 - stop make trailing 'license' optional in synthesized patterns;
   disambiguate objects mit_new x11.

 [ Documentation ]
 - document captures for trait objects version version_later
   version_numberstring version_only

 [ Test Suite ]
 - add tests checking version traits

 [ Packaging ]
 - add settings file to tidy tool precious

 [ Other ]
 - Removed: deprecate trait options or_at_option version_later_paragraph
   version_later_postfix version_number version_number_suffix
 - Removed: drop named capture version from trait object version
 - extend subpattern version_number to cover trailing letter
 - extend trait object version to cover dual-versioned grants
 - extend trait object version with named capture version_of
 - extend trait object version_later to cover another variant
 - extend trait object version_only; include in trait object version
 - extend trait objects version* to cover space inside parens
 - generalize subpattern at_option
 - generalize subpattern version_number_prefix
 - tighten fulltext patterns for objects gpl_2 osl_1 osl_1_1 osl_2 osl_2_1
   rpl_1_5 rpsl_1 simpl_2
 - use explicit license patterns (don't synthesize) for cc_* objects

v3.10.1	2023-04-02

 [ Bug Fixes ]
 - fix test library to support Perl 5.37.10
   Yves Orton++

v3.10.0	2023-01-17

 [ Documentation ]
 - update TODOs

 [ Test Suite ]
 - tighten test-requirement on Test2::V0

 [ Other ]
 - Added: implement engine => 'pseudo'
 - tighten subpattern asis_sw_name_discl

v3.9.4	2022-02-12

 [ Bug Fixes ]
 - fix define gen_args 'capture' only for patterns supporting capture, and
   add tag 'capturing'
 - fix define gen_args 'subject' and 'req' (not accidentally merge them)
 - fix detect irregular end-quote (annotation [" ])

 [ Test Suite ]
 - drop unused code in legacy test library MyTest
 - rename test library Test2::Regexp::Pattern::License ->
 - rewrite test library as Test2::Tools::LicenseRegistry
 - skip test if re object is a native Regexp object with perl before v5.12
   (where RE2 engine is unlikely to be available anyway)
 - streamline test library Test2::Tools::LicenseObject
 - use Test2::V0 for author test tidyall.t

 [ Packaging ]
 - stop test-require Test::Builder::Module
 - stop test-require Test::More

 [ Other ]
 - add summary-inspired name pattern for object perl
 - avoid barely used org software_license: replace pattern with summary.alt.misc.software_license
   for object perl
 - extend tidyall config to cover tests
 - optimize slightly: resolve gen option 'subjects' (and possible break)
   before resolving other options
 - optimize: mangle capture annotation only for patterns supporting capture
 - optimize: reuse generic gen_args hashrefs
 - work around tidyall string-encoding bug

v3.9.3	2021-08-18

 [ Packaging ]
 - declare that we break App::Licensecheck before v3.2.7 (exception objects
   were wrongly tagged until Regexp::Pattern::License v3.9.0)

v3.9.2	2021-08-17

 [ Documentation ]
 - improve SYNOPSIS

 [ Test Suite ]
 - improve regexp tests

 [ Packaging ]
 - relax to recommend (not depend on) module re::engine::RE2
 - test-require Test::Without::Module

 [ Other ]
 - stop enable RE2 option -longest_match, to match equally as without RE2
 - tighten license pattern for bsd_4_clause, to shadow bsd

v3.9.1	2021-08-16

 - permit RE2 engine to consume up to 16MiB (default 8MiB is insufficient
   e.g. on ARMv6)

v3.9.0	2021-08-14

 [ Bug Fixes ]
 - annotate wide comma (for mulan licenses) in synthesized patterns
 - avoid synth.nogrant (not only when synthesizing grant
 - cover trailing zero on synthesized patterns for objects aladdin_8
   aladdin_9 efl_1 efl_2 mulan_1 mulan_2
 - de-randomize fedora and osi IRIs
 - escape . (dot) in synthesized patterns
 - fix metadata for object afl_3
 - fix metadata
 - fix drop bogus data from bsd_3_clause
 - fix parens in synthesized patterns
 - re-tag python_2 as type:combo (not type:singleversion), and fix/update
   patterns and metadata
 - tag exception prefix traits as type:trait:exception:prefix (not bogusly
   as type:trait:grant:prefix)

 [ Documentation ]
 - document object stability (since v3.1.0)
 - extend copyright to include recent years, and add Purism SPC as
   copyright holder

 [ Other ]
 - Added: add license object psf_2
 - Added: add license object unicode_dfs, and change objects
   unicode_dfs_2015 unicode_dfs_2016 from unversioned to singleversion
 - Added: add license objects bsd_3_clause_eclipse bsd_3_clause_refractions
 - Added: add/update lots of names and captions
 - Added: support engine => none (for returning a uncompiled regexp string)
 - Removed: deprecate license object python: superceded by psf_2 and
 - Removed: deprecate license object wordnet_3: superceded by wordnet
   (license is unversioned, version belongs to software project)
 - add alternative clashing names for objects mit_new x11
 - add annotation [+]
 - add trait object license_label_spdx, and synthesize SPDX short-form
   identifiers distinct from other license labels
 - add/update lots of names and captions
 - bump version
 - improve historical metadata
 - improve and simplify license patterns for objects oldap oldap_1_1
   oldap_2_0_1 oldap_2_1 oldap_2_2 oldap_2_2_1 oldap_2_2_2 oldap_2_3
   oldap_2_4 oldap_2_5 oldap_2_6 oldap_2_7 oldap_2_8
 - optimize annotation and mangling of synthesized patterns
 - optimize: synthesize name and grant patterns in one loop
 - optimize: synthesize patterns from metadata name in general loop
 - optimize: synthesize trove patterns in name/grant loop
 - relax pattern for object license_label to cover german identifier and
   space before colon
 - relax pattern for object licensed_under to optionally end with colon
 - rewrite description for object x11 to cover origin, and add description
   to object mit_new
 - simplify structure: stop use attribute version
 - synthesize name pattern for object apache
 - tighten annotations [:] [http://] to not implicitly treat colon or slash
   as optional
 - tighten synthesized patterns to cover singleword caption only once
 - tighten version stopgap to exclude ASCII alphabetic characters and plus,
   and exclude only roman digits, in synthesized patterns
 - use general version stopgap for synthesized grant patterns from metadata
 - use general version stopgap for synthesized trove patterns

v3.8.1	2021-08-07

 [ Bug Fixes ]
 - avoid non-destructive substitution to support older perls
 - avoid randomly skipping Fedora IRIs, by normalizing property names
 - avoid randomly skipping chinese IRIs, by fully aligning with DefHash
   spec 1.0.13 which permits uppercase chararacters in properties
 - drop alternate names related to Thrift from objects bsl bsl_1: Different
   not yet included license
 - expand annotation [ / ]
 - fix default name for object antlr_pd
 - fix license pattern for object wordnet_3
 - fix licenseversion hint for object cecill_2
 - fix scope for glide and gpl_2 license patterns
 - rename attribute alt.archive.date_* -> alt.archive.time-* for iri
   property of wordnet
 - rename attribute lang -> alt.lang to comply with DefHash spec

 [ Documentation ]
 - add examples to objcts gpl_3 gpl_3_only

 [ Test Suite ]
 - add test to check DefHash structure
 - improve test library to dinstinguish default name from no name, and
   check for caption and summary regardless of org-specific name
 - rename large test to improve parallelization
 - restructure test function license_org_metadata() to take options as
 - simplify tests to rely on examples (not inspect raw regex code)
 - test object mit_unixcrypt
 - tighten test 03-match-normalized.t by wrapping lines more aggressively

 [ Other ]
 - add alternative camelcase shortname for CeCill objects
 - add annotations [. ] [". ]
 - add default name for objects mit_cmu_warranty mpich2
 - add description with origin to object cua_opl_1
 - add steward's alternative caption for object cnri_jython
 - add/update lots of names and captions, and historical names for some GNU licenses
 - annotate characters / + ( ), in synthesized patterns, and stop escape
   space or comma
 - consistently use attribute iri (not web or none) for IRI-related
 - minor optimizations
 - optimize annotation expansion
 - optimize module bootstrapping
 - optimize synthesizing metadata iri from name or caption, and stop
   synthesize useless metadata name from caption
 - optimize tag parsing
 - optimize: stop duplicate patterns and metadata to group objects
 - reduce DefHash size by annotating traits as (:...:)
 - update object beerware to fix examples and add IRI
 - use annotation [*)] in object catosl_1_1 and in cc objects
 - use attribute, dropping (coding but not license naming)
   organizers facebook freebsd gzip inria python

v3.8.0	2021-07-27

 [ Bug Fixes ]
 - always check for optional shortname (regardless if some names contain
   non-shortname parens) in synthesized grant patterns
 - exclude shortname of versioned siblings in synthesized grant patterns
 - use only defined publisher in synthesized name patterns

 [ Test Suite ]
 - avoid chained comparison in test, unsupported in older perls
 - use Test2::V0 for test regexp-pattern.t

 [ Other ]
 - Added: add licenses bsd_protection condor condor_1_1 crossword d_fsl
   d_fsl_1 dbad dbad_0_2 dbad_0_3 dbad_1 dbad_1_1 dont_ask fair_source
   fair_source_0_9 fal fal_1_1 fal_1_2 fal_1_3 festival glide ibm_pibs ijg
   imlib2 leptonica libtiff mpich2 mpl_2_no_copyleft_exception ms_cl nbpl
   nbpl_1 nosl nosl_1 odbl odbl_1 odc_by odc_by_1 pddl pddl_1
   peer_production sax_pd sds sds_1 sncl sncl_1_10 sncl_2_0_1 sncl_2_0_2
   sncl_2_1 sncl_2_3 stlport truecrypt truecrypt_3 vspl wordnet wordnet_3
   xfree86 xfree86_1_1 ypl ypl_1 ypl_1_1 zed zend zend_2 zimbra zimbra_1_3
 - collect names and captions separately in synthesized grant patterns
 - deduplicate name prefix/suffix in synthesized grant patterns
 - deduplicate names in synthesized grant patterns
 - extend internal function _join_pats to handle hashref options label
   prefix suffix
 - tighten version matching in synthesized grant patterns

v3.7.1	2021-07-22

 [ Test Suite ]
 - avoid deprecated special lang syntax in DefHash property names, and fix

 [ Other ]
 - add license pattern for group object mit

v3.7.0	2021-07-17

 [ Bug Fixes ]
 - avoid leading number in attribute component, to comply with DefHash spec
 - fix metadata and pattern for license object x11

 [ Documentation ]
 - update TODOs

 [ Other ]
 - Added: add license object bsd_4_clause_uc
 - Added: add license objects cc_devnations cc_devnations_2 cc_nc_sa
   cc_nc_sa_1 cc_nc_sp cc_nc_sp_1 cc_nd_nc cc_nd_nc_1 cc_pd cc_pdd cc_pddc
   cc_sampling cc_sampling_1 cc_sp_1
 - Added: add license objects erlpl erlpl_1_1
 - Added: add license objects gsoap gsoap_1_3b
 - Added: add licenses mit_epinions mit_openvision mit_osf mit_unixcrypt
   mit_whatever mit_widget mit_xfig
 - Added: add trait objects except_font_2 except_gcc_2 except_gcc_3_1
 - add annotation [:]
 - add metadata from old fossology shortnames
 - improve SPDX metadata
 - improve metadata and license patterns for cc_* objects
 - relax pattern for license object intel
 - tighten and generalize expat-style grant subpattern
 - tighten annotations [-] [ - ], to cover some forms of soft-wrapping
 - tighten license patterns for apache_1 bsd_4_clause openssl to
   disambiguate between them
 - tighten metadata: consistently use misc (not alt) and only once

v3.6.1	2021-07-07

 [ Test Suite ]
 - fix coverage-perl tests

 [ Other ]
 - add names and captions for website)

v3.6.0	2021-07-04

 [ Bug Fixes ]
 - fix set trove metadata for gfdl mpl_1 mpl_1_1 mpl_2

 [ Documentation ]
 - add sections SYNOPSIS and EXAMPLES
 - document origin of bsd_0_clause
 - use _simpified_ chinese language code for mulan chinese strings

 [ Test Suite ]
 - add coverage for license ipl_1
 - use Test2::V0 (not Test::Exception or Test::Requires)

 [ Packaging ]
 - stop declare dependency on strictures (unneeded since v3.0.31)

 [ Other ]

 - Added: add exception trait wxwindows
 - Added: add family cc
 - Added: add license ipa
 - Added: add license xnet
 - Added: add licenses bsd_1_clause bsd_2_clause_freebsd
   bsd_2_clause_netbsd bsd_2_clause_patent
 - Added: add licenses bsd_3_clause_attribution bsd_3_clause_clear
   bsd_3_clause_lbnl bsd_3_clause_no_military_license
   bsd_3_clause_no_nuclear_license bsd_3_clause_no_nuclear_license_2014
   bsd_3_clause_no_nuclear_warranty naumen
 - Added: add licenses efl efl_1 efl_2 entessa frameworx frameworx_1 lpl
   lpl_1 lpl_1_02 ncsa nokia opl opl_1 oset_pl oset_pl_2_1 php php_3
   php_3_01 simpl simpl_2 simple_w3c simple_w3c_1_1 upl upl_1 vsl vsl_1 x11
 - Added: add licenses eudatagrid fair
 - Added: add licenses hpnd hpnd_sell mit_open_group, and combo net_snmp
 - Added: add licenses liliq_p liliq_p_1_1 liliq_r liliq_r_1_1 liliq_r_plus
 - Added: add licenses miros mit_0
 - Added: add licenses multics nasa nasa_1_3
 - Added: add licenses nposl nposl_3 ucl ucl_1
 - Added: add licenses ogc ogc_1 w3c w3c_19980519 w3c_19980720 w3c_20021231
 - Added: add licenses sleepycat tosl
 - Added: add licenses unicode_dfs_2015 unicode_dfs_2016
 - Added: add trait except_ecos_2, and licenses ecos_1_1 ecos_2
 - add names and captions for OSI
 - annotate "as-is" as [as is]
 - improve annotations, and tighten to only use Latin-1 characters (now
   only mulan* patterns contain non-Latin-1 characters)
 - improve metadata for ipl ipl_1
 - improve patterns for zpl_2 zpl_2_1
 - optimize DefHash creation slightly
 - stop use List::Util
 - tighten patterns for licenses afl_3 osl_3
 - update metadata for mpl_1 openssl

v3.5.1	2021-06-02

 [ Bug Fixes ]
 - use desctructive substitution in tr///, needed with perl older than

 [ Test Suite ]
 - cover all license strings of perl CPAN::META spec

v3.5.0	2021-06-22

 [ Bug Fixes ]
 - always favor single-version metadata when joined in versioned objects
   (not randomly flip priority)
 - capitalize name of exception except_openssl
 - fix language strings to use ll_CC in DefHash and ll-cc in GNU URLs
 - include all member patterns in series objects (not a random subset)
   Walter Lozano++
 - version_later version_only: cover lack of leading punctuation or space

 [ Documentation ]
 - update TODOs

 [ Other ]
 - Added: add license bsd_0_clause
 - Added: add license cvw
 - Added: add license intel
 - Added: add license jabberpl
 - Added: add license motosoto
 - Added: add licenses cal cal_1
 - Added: add licenses mulan mulan_1 mulan_2
 - Added: add licenses oldap oldap_1_1 oldap_1_2 oldap_1_3 oldap_1_4
   oldap_2 oldap_2_0_1 oldap_2_1 oldap_2_2 oldap_2_2_1 oldap_2_2_2
   oldap_2_3 oldap_2_4 oldap_2_5 oldap_2_6 oldap_2_7 oldap_2_8
 - Added: add licenses sissl sissl_1_1 sissl_1_2
 - Added: add name and caption for perl (as listed in POD of
 - add description and extend patterns for licenses bittorrent_1
 - annotate more consistently as [word] [ word]

v3.4.0	2020-05-21

 [ Bug Fixes ]
 - version_later_postfix: cover lack of leading space

 [ Test Suite ]
 - relax deep inspection of generated regex

 [ Other ]
 - Added: add trait object generated
 - Added: add trait objects addr_fsf addr_fsf_franklin
   addr_fsf_franklin_steet addr_fsf_mass addr_fsf_temple
 - Added: add trait objects except_autoconf_data except_autoconf_2
   except_autoconf_2_archive except_autoconf_2_autotroll
   except_autoconf_2_g10 except_autoconf_3 except_bison_1_24
   except_bison_2_2 except_faust except_openssl except_openssl-lgpl
   except_openssl_s3 except_prefix_agpl except_prefix_generic
   except_prefix_gpl except_prefix_gpl_clisp except_prefix_lgpl
   except_proguard except_qt_gpl_1 except_qt_gpl_eclipse
   except_qt_gpl_openssl except_qt_kernel except_qt_lgpl_1_1
   except_qt_nosource except_sdc except_sollya_4_1 except_warzone
 - apache apache_1_1 apache_2: add caption for 'Apache Public License' and
   'Apache Software License'
 - bittorrent_1: fix list alternate SPDX caption (not bogusly as iri)
 - bsd_3_clause: add names 'EPL' 'EPL-1.0', and captions 'new BSD License'
   'Eclipse Distribution License'
 - license gpl_2: cover 'is covered by he GNU' (original revision with
 - licensed_under: cover 'subject to'
 - reorder patterns: traits before licenses
 - synthesized grants: cover 'the $license version 2 (the $shortname

v3.3.1	2020-05-17

 [ Bug Fixes ]
 - annotate apostrophe
 - avoid annotating decimal point as full stop
 - consistently annotate slash as [/]
 - disambiguate license patterns for objects agpl_2 agpl-3 gpl-2 gpl-3
 - fix annotate apostrophe as such (not as quote)
 - fix object wtfpl_2 license pattern
 - fix trove caption for object mpl_2
 - subject pattern name: fix make leading space of publisher optional
 - synthesized trove label trait: include trailing space
 - update license object cecill: add alternate IRI (not bogus URI)
 - update object gpl_2: fix detect license preamble (to avoid misdetection
   as LGPL-2)
 - update object mit_advertising: fix double-escaped boundary marker in
   patch (although seemingly didn't matter)

 [ Documentation ]
 - document tag license:contains:tag:*: extend to cover optional reference
   to different license
 - document tag license:includes:license:*
 - fix include type:usage:*:* in list of possible single-license tags, and
   order by inheritance complexity (not alphabetically)

 [ Other ]
 - Added: add license object qpl_1
 - Added: add license objects aal abstyles adsl afmparse amdplpa antlr_pd
 - Added: add license objects aml ampas ecl ecl_1 ecl_2 eupl eupl_1
   eupl_1_1 eupl_1_2 lppl lppl_1 lppl_1_1 lppl_1_2 lppl_1_3a lppl_1_3c npl
   npl_1 npl_1_1 oclc oclc_1 oclc_2 ogtsl osl osl_1 osl_1_1 osl_2 osl_2_1
   osl_3 rpl rpl_1 rpl_1_1 rpl_1_3 rpl_1_5 rscpl ruby spl spl_1 sugarcrm
   sugarcrm_1_1_3 unlicense watcom watcom_1
 - Added: add license objects apl apl_1 apsl apsl_1 apsl_1_1 apsl_1_2
 - Added: add license objects bahyph barr bittorrent bittorrent_1
   bittorrent_1_1 borceux
 - Added: add license objects bzip2 bzip2_1_0_5 bzip2_1_0_6
 - Added: add license objects caldera catosl catosl_1_1
 - Added: add license objects cnri_jython cnri_python
   cnri_python_gpl_compat cpal cpal_1
 - Added: add license objects cpol cpol_1_02 cryptix
 - Added: add license objects cua_opl cua_opl_1
 - Added: add license objects gfdl_1_1 gfdl_1_2 gfdl_1_3
 - Added: add license objects gfdl_1_1_only gfdl_1_1_or_later gfdl_1_2_only
   gfdl_1_2_or_later gfdl_1_3_only gfdl_1_3_or_later
 - Added: add license patterns lgpl_2 lgpl-2_1 lgpl-3
 - Added: add trait object version_only
 - Added: add trait object version_suffix
 - Added: add usage objects agpl_1_only agpl_1_or_later agpl_3_only
 - Added: add usage objects gpl_1_only gpl_1_or_later gpl_2_only
   gpl_2_or_later gpl_3_only gpl_3_or_later
 - Added: add usage objects lgpl_2_only lgpl_2_or_later lgpl_2_1_only
   lgpl_2_1_or_later lgpl_3_only lgpl_3_or_later
 - annnotate less-than and greater-than as [<] [>] (not $LT $GT)
 - annotate apostrophe as ['] (not $QA)
 - annotate bullet as [*] (not $B)
 - annotate colon with optional quotes as [:"] (not $CQ)
 - annotate copyright sign as [c] (not $C)
 - annotate dash or number as [-#] (not $ND)
 - annotate dash or space as [- ] (not $SD)
 - annotate dashes as [-] [ - ] (not $D $DD)
 - annotate end-of-sentence and end-of-paragraph vertical space as [ ] [  ]
   (not $E $EE)
 - annotate exempli gratia and id est abbreviations as [eg] [ie]
 - annotate full stop as [.] (not $F)
 - annotate http(s) protocol as [http://] (not $HT)
 - annotate optional slash or space as [/] (not $SL)
 - annotate quote as ["] (not $Q)
 - annotate quote or bullet as ["*] (not  $QB)
 - annotate semicolon as [;] (not $SC)
 - annotate start-of-sentence bullet or count as [*)] (not $BB)
 - drop alternate british caption: covered by synthesized subject pattern
 - extend gnu patterns to cover FSF online and postal addresses
 - generalize use of semicolon as internal variable SC
 - license objects: drop most custom subject pattern grant, superceded by
   synthesized pattern
 - license objects: drop most custom subject pattern name, superceded by
   synthesized pattern
 - optimize slightly: sort keys after grep (not before)
 - relax internal variable gpl to cover lowercase 'license'
 - singleversion objects: add field licenseversion, with decimal 0 if ever
 - synthesize subject pattern name: compose affixes separately
 - synthesize subject pattern name: cover british spelling licence
 - synthesize subject pattern name: cover dash variations
 - synthesize subject pattern name: cover embedded shortname
 - synthesize subject pattern name: cover leading version
 - synthesize subject pattern name: cover usage objects
 - synthesize subject pattern name: optimize version matching
 - synthesize subject pattern name: optimize: resolve publisher only once
   per object
 - synthesize subject pattern name: simplify: optimize: bundle names
 - tighten match for quote character
 - trait object version_prefix: cover word revision
 - update combo object perl: add tags
 - update combo object perl: improve coverage
 - update group objects bsd mit: add name and caption for a BSD-style / an
   MIT-style; cover a/an when synthesizing subject pattern
 - update group objects bsd-2-clause bsd-3-clause bsd-4-clause: add
   informal alternate names
 - update license object bittorent_1_1: add tag
 - update license object bsd_2_clause: tighten license pattern to exclude
   Cryptix license
 - update license object cpl_1: add iri and alternative caption
 - update license object openssl: add tag license:contains:license:cryptix
 - update license objects cddl_1 cddl_1_1: add alternative names and
 - update object bsd_3_clause: add a few more alternate captions
 - update object licensed_under: cover trailing 'either'
 - update object licensed_under: simplify pattern slightly
 - update trait object licensed_under: cover 'available under'
 - update trait object licensed_under: cover 'distribute it under'

v3.3.0	2020-03-13

 [ Bug Fixes ]
 - avoid synthesizing pattern grant from ambiguous name BSD for objects
   bsd_2_clause bsd_3_clause
 - fix tag object llgpl as license:contains:license:lgpl_2_1 (not bogus
 - synthesize patterns in deterministic order
 - tighten object zpl_2 pattern license to disambiguate from bsd

 [ Other ]
 - add license patterns gpl-1 gpl-2 gpl-3
 - add trait patterns by by_apache by_fsf by_james_clark by_psf
 - add trove caption for mpl_1 mpl_1_1 mpl_2
 - add unofficial option anchorleft
 - drop deprecated tags bsd cc mit zlib trait combo (replaced since v3.1.0
   by family:* type:*)
 - enable RE2 strict mode
 - enable re::engine::RE2 greedy mode
 - extend license object apache_2 to cover a few rare grant patterns
 - extend license pattern agpl-3 to mask more licensed_under
 - extend synthesized subject pattern name to include optional publisher
 - extend trait pattern licensed_under to cover "under _either_ ..."
 - extend trait pattern version to cover a trailing 'of' (needed when
 - introduce tags license:published:*
 - simplify synthesized versioned grant pattern
 - tighten license patterns agpl-1 agpl-3 to avoid wildcard
 - tighten trait object version_number to not grab first digit of a larger

v3.2.0	2020-02-21

 [ Bug Fixes ]
 - add trove caption for zpl (not zpl_1)

 [ Other ]
 - add object ssleay
 - add usage objects ofl_1_no_rfn ofl_1_rfn ofl_1_1_no_rfn ofl_1_1_rfn, and
   trait object usage_rfn
 - introduce tags type:usage:*:* type:trait:usage:rfn
 - relax generally to treat / as optional or replaced by space
 - relax license object bsd_3_clause to treat full-stop as optional

v3.1.102	2020-02-10

 [ Bug Fixes ]
 - tag object cc_cc0_1 as type:singleversion:cc_cc0 (not bogusly
 - tag objects bdwgc_matlab lgpl_bdwgc as type:unversioned (not bogusly

 [ Other ]
 - add objects agpl_1 agpl_2 agpl_3
 - add objects zpl zpl_1 zpl_1_1 zpl_2 zpl_2_1
 - extend license pattern cecill_1_1 to fully mask any_of
 - extend license patterns cecill_1_1 cecill_2 cecill_2_1 to avoid
   misdetecting as GPL-2+
 - extend trait pattern licensed_under to cover more phrases
 - stop custom-treat name-only as grant for select objects (some use for
   that now better done with tag license:is:grant)
 - tag objects license_label license_label_trove licensed_under as
   type:trait:grant:prefix (not type:trait)

v3.1.101	2020-01-30

 [ Documentation ]
 - add description for object epl

 [ Other ]
 - Added: add object cc_cc0_1
 - Added: add objects cc_by_1 cc_by_2 cc_by_2_5 cc_by_3 cc_by_4
 - Added: add objects cc_by_nc_1 cc_by_nc_2 cc_by_nc_2_5 cc_by_nc_3
 - Added: add objects cc_by_nc_nd_1 cc_by_nc_nd_2 cc_by_nc_nd_2_5
   cc_by_nc_nd_3 cc_by_nc_nd_4
 - Added: add objects cc_by_nc_sa_1 cc_by_nc_sa_2 cc_by_nc_sa_2_5
   cc_by_nc_sa_3 cc_by_nc_sa_4
 - Added: add objects cc_by_nd_1 cc_by_nd_2 cc_by_nd_2_5 cc_by_nd_3
 - Added: add objects cc_by_sa_1 cc_by_sa_2 cc_by_sa_2_5 cc_by_sa_3
 - Added: add objects cc_nc cc_nc_1 cc_nd cc_nd_1 cc_sa cc_sa_1
 - Added: add objects cddl_1 cddl_1_1
 - Added: add objects cpl cpl_1 epl_1 epl_2 ipl ipl_1
 - Added: add objects mpl_1 mpl_1_1 mpl_2
 - Added: add objects ofl_1 ofl_1_1
 - Added: add objects sgi_b_1 sgi_b_1_1 sgi_b_2
 - relax to match copyright sign as uppercase (C)
 - synthesize more CC subject patterns

v3.1.100	2020-01-28

 - temporarily drop subject license pattern from object afl (clashes with
   those of versioned child objects)

 [ Bug Fixes ]
 - tighten object adobe_2006 pattern grant to avoid false positives

 [ Documentation ]
 - add description for license objects apache_1 apache_1_1
 - update TODO

 [ Test Suite ]
 - test actually used name pattern for adobe_2006 object

 [ Other ]
 - add Trove captions
 - add tag license:contains:* for license objects apache_1 apache_1_1
   bsd_3_clause bsd_4_clause dsdp
 - add trait object license_label_trove
 - extend subject license patterns for license objects apache_1 apache_1_1
   apache_2 bsd_2_clause bsd_3_clause bsd_4_clause dsdp
 - relax leading bullet to be optional (might be misdetected as comment
   marker and stripped)
 - relax object gpl to match bogus name "the GNU License"
 - relax slightly internal pattern copr_cond_discl
 - relax trait pattern licensed_under to cover more phrases
 - relax trait pattern licensed_under to cover more phrases
 - relax trait pattern licensed_under to cover more phrases
 - synthesize subject pattern grant from Trove caption
 - tighten trait object version_number to cover only single-digit segment

v3.1.99	2020-01-05

 - give up on auto-loading for now, and support only RE2 (not PCRE2)

 [ Packaging ]
 - require (not recommend) re::engine::RE2, and stop recommend

v3.1.98	2020-01-05

 [ Test Suite ]
 - fix: test for the proper module for each test (arrgh)

v3.1.97	2020-01-05

 [ Test Suite ]
 - fix: test if re::engine::* is available before testing use of those

 [ Packaging ]
 - test-require module Test::Requires

v3.1.96	2020-01-04

 [ Documentation ]
 - add examples for object beerware

 [ Test Suite ]
 - extend testsuite with Test::Regexp::Pattern tests

 [ Packaging ]
 - recommend modules re::engine::PCRE2 re::engine::RE2
 - test-require module Test::Regexp::Pattern

 [ Other ]
 - add option engine
 - add tags license:is:grant license:contains:grant
   license:contains:license:* license:contains:name:*
 - extend object llgpl: Add alternate cliki iri
 - internalize list of GNU locales

v3.1.95	2020-01-03

 [ Bug Fixes ]
 - declare alternate caption (not name) for object mit
 - tag object artistic as type:versioned:complex

 [ Other ]
 - Add object rpsl_1.
 - Add objects apache_1 apache_1_1 apache_2.
 - Add objects artistic_1 artistic_1_cl8 artistic_1_clarified
 - Extend object afl to cover subject patterns grant license (not only
   name). Add objects afl_1_1 afl_1_2 afl_2 afl_2_1 afl_3.
 - Extend object wtfpl. Add objects wtfpl_1 wtfpl_2 wtfnmfpl wtfnmfpl_1.
 - Extend objects cecill cecill_1 cecill_1_1 cecill_2 cecill_2_1 cecill_b
   cecill_c. Add objects cecill_b_1 cecill_c_1.
 - Improve object jython: Extend metadata.
 - add alternate long caption for object bsd
 - relax internal bullet pattern to match up to 5 digits/chars
 - relax many patterns to match british spelling of licence
 - relax slightly trait pattern licensed_under to match strings with
   capital You
 - relax trait pattern licensed_under to match "covered by"
 - relax trait pattern version_prefix and synthesized grant patterns to
   match more version strings
 - synthesize patterns matching license granting declared as definition,
   i.e. in the form License: foo
 - tighten synthesized grant patterns to avoid matching derived versions

v3.1.94	2019-06-12

 [ Bug Fixes ]
 - Fix DOAP bug-database and repository URLs.
   Slaven Rezić++

 [ Test Suite ]
 - Extend testsuite: Cover objects aladdin_8 aladdin_9.

 [ Packaging ]
 - Fix declare test-requirement on Try::Tiny.
   Slaven Rezić++

 [ Other ]
 - Extend object bsl_1: Add subject pattern license. Improve metadata.
 - Extend trait patterns version version_later version_numberstring
   version_prefix: Cover scopes line sentence. Limit scope paragraph.
 - Fix objects aladdin aladdin_8 aladdin_9: Add subject pattern license for
   singleversion licenses and drop for versioned license.
 - Fix relax trait pattern version_later_postfix: Detect "any above".
 - Fix relax trait pattern version_prefix: Tolerate leading only/either.
 - Improve synthesized subject pattern grant: Use trait pattern
   licensed_under (not simpler copy).
 - Limit length of subpatterns BB (bullets) E (end of sentence) EE (end of
   paragraph) and lang, both for slight speedup and to limit risk of issues
   like Debian bug#926392.
 - Relax synthesized name pattern to make commas optional (not strip them).
 - Relax trait pattern version_prefix: Include optional non-text prefix
   (not only in pattern version).
 - Relax trait pattern version_prefix: Make whole pattern optional (not its
   use in version_numberstring).
 - Synthesize subject pattern name.

v3.1.93	2019-06-08

 [ Bug Fixes ]
 - Fix DOS in pattern for leading bullets.
   Niels Thykier++
   Sandro Mani++

 [ Other ]
 - Avoid regex option /r to support Perl < 5.14.
 - Extend trait pattern licensed_under.
 - Fix metadata for object afl: Drop bogus tldr name. Slightly improve
   metadata for object adobe_glyph.

v3.1.92	2018-04-05

 [ Bug Fixes ]
 - Fix avoid chained regexes (seemingly unsupported in perl <5.16).

 [ Documentation ]
 - Update and slightly reorganize TODOs.

 [ Other ]
 - Added: Add trait objects any_of licensed_under or_at_option version
 - Added: Implement DefHash option "capture".
 - Improve embedded summary (and related comment) for option "subject".
 - Stop cache compiled patterns internally: Not part of Regexp::Pattern
   spec and better handled externally when really needed.

v3.1.91	2018-03-30

 [ Bug Fixes ]
 - Fix avoid alternate name MIT except for objects expat mit.
 - Fix metadata for object aladdin: Use tag type:versioned:decimal (not
 - Fix resolve Fedora IRIs.

 [ Other ]
 - Added: Add objects aladdin_8 aladdin_9.
 - Added: Cover more types of generic grants (used mostly for llgpl and
 - Added: Extend object llgpl: Add canonical iri.

v3.1.90	2018-03-29

 [ Bug Fixes ]
 - Fix object cecill_b subject pattern license.
 - Fix object fsfullr to match grant at all.
 - Fix relax object mit_new_materials to match license at all.
 - Fix strip duplicate tagline for object ntp, accidentally suppressing tag
 - Tighten objects qpl sgi_b: Avoid bogusly match optional trailing FSF

 [ Documentation ]
 - Add TODO file to source, with a bunch of ideas.

 [ Test Suite ]
 - Extend testsuite to cover most license patterns.

 [ Other ]
 - Added: Add object json.
 - Added: Add object kevlin_henney (replacing recently added but broken
 - Added: Add objects bsl bsl_1.
 - Added: Add objects jython python_2.
 - Added: Extend object cc_cc0: Add subject pattern grant.
 - Added: Extend object ftl: Add subject pattern license.
 - Added: Extend objects ms_pl ms_rl: Add subject pattern license.
 - Added: Generate default pattern dynamically, and provide alternative
   subject patterns statically as plaintext (also for non-Perl use). Drop
   alternative flavor pattern artifact.
 - Added: Implement DefHash option "subject".
 - Added: Synthesize metadata caption, and subject pattern grant.
 - Added: Synthesize metadata iri, and subject pattern iri.
 - Added: Synthesize subject pattern license.
 - Extend metadata: Add iri.
 - Extend object public_domain: Improve subject pattern license.
 - Fix and extend metadata: Consistently use "name" for license shortname
   (i.e. single-word), "caption" for license name, and "summary" for
   non-name short description.
 - Fix metadata for objects cecill_b cecill_c: Use tag
   type:versioned:decimal (not type:unversioned).
 - Implement per-object default pattern.
 - Relax license objects agpl beerware gpl lgpl public_domain qpl: Detect
   uppercase variations.
 - Relax object bsd_3_clause to match SPDX template.
 - Stringify patterns (as preparation for central compilation).
 - Synthesize metadata name.
 - Synthesize subject pattern trait.
 - Tighten  object openssl to differentiate from apache_1.
 - Tighten object eurosym: Avoid wildcard.
 - Tighten object postgresql: Limit to lowercase pattern (uppercase or
   varying case seemingly unused).
 - Tighten objects ntp ntp_disclaimer: Disambiguate from kevlin_henney.
 - Uniformly detect copyright sign.
 - Uniformly detect hyphens.
 - Uniformly detect quotation marks.
 - Uniformly detect sentence and paragraph endings.
 - Uniformly detect sentence enumerators.

v3.1.0	2018-02-09

 [ Documentation ]
 - Improve POD: Fix list covered licenses aladdin icu mit_cmu
   mit_cmu_warranty ofl rpsl.
 - Improve POD: Rephrase sections about license combinations and license
   groups, to better disambiguate.

 [ Other ]
 - Added: Add hierarchical tags family:* type:*. Deprecate undocumented
   non-hierarchical tags.
 - Added: Add license patterns bdwgc bdwgc_matlab isc_minidiscl lgpl_bdwgc.
 - Added: Introduce alternate license patterns: pat.alt.flavor.artifact.

v3.0.31	2017-08-15

 [ Packaging ]
 - Initial independent CPAN release (based on App::Licensecheck).

 [ Other ]
 - Use strict and warnings (not strictures).