Revision history for Regexp-Grammars

1.001_003 Tue Apr  7 08:42:33 2009
       Initial public release.


1.001_004  Sun Aug  2 23:08:52 2009

    * Fixed mishandling of (??{....}) blocks

    * Attempted to patch around three-way bug with lexicals in regexes
      (further testing may be required to ensure patch is effective
       across various perl configs)


1.001_005  Sun Aug  2 23:08:52 2009

    * Rerelease to sync numbering with CPAN



1.002  Tue Dec  8 21:30:11 2009

    * Various doc tweaks

    * Removed intermittent "uninitialized" warnings

    * Added warning when no main regex specified

    * Refined error message status indicators (now only errors get an
      indicator for every separate message; info is consolidated)

    * Fixed exponentiation associativity for demo_calc (thanks Schwern!)

    * Fixed bug in charset parsing (thanks Dave!)

    * Removed false error messages regarding explicitly use of built-in
      <ws> and <hk> rules

    * Fixed bug with negative lookaheads that incorporate subrule calls

    * Localized $/ during debugger interactions

    * Added <objrule: Class::Name=rulename> variation to allow distinct
      "internal" and "external" names for objrules and objtokens
      (thanks Casiano)
    
    * Fixed handling of (?#...) comments (thanks Casiano)

    * Added pure grammar definitions: <grammar: NAME>

    * Added inheritance from grammar definitions: <extends: NAME>

    * Added fully qualified subrule calls to allow derived rules to call
      base rules: <Base::Class::rulename>



1.005  Tue Jun 22 05:41:35 2010

    * Tweaked internals to allow matches against stringifying objects,
      without nasty warnings

    * Extended demo/calc* to allow negatives outside parens (thanks Steven)

    * Pod tweaks (thanks Carl)

    * Added autoaction callbacks

    * Made @! contents unique (no more duplicates due to backtracking retries)

    * Made <MATCH=...> work in the top-level pattern of a grammar

    * Added set_context_width() to allow width of context string column 
      to be adjusted either permanently or within a scope. (Thanks Daniel)

    * Added l10n feature for <error:...> and <warning:...> directives
      (thanks Aki!)

    * Added <minimize:> directive

    * Fixed debugging directives in grammars

    * Added per-hash key patterns to <%HASH>  (Thanks Aki)

    * Added <\IDENT> backrefs

    * Added </IDENT> inverserefs


1.008  Fri Sep 17 20:53:31 2010

    * Pod nits denitted (thanks Christopher)

    * Added builtin <matchpos> and <matchline> subrules

    * Added <subrule(arg=>list)> and %ARG

    * Added <:argname>

    * Added <\:argname> and </:argname>

    * Added Lucene example to demos (thanks Christian)

    * Added <ws:...> directive

    * Updated diagnostics list

    * Improved behaviour (and documentation) of non-bracketed
      separators in **



1.009  Sun Sep 19 09:11:06 2010

    * Rerelease to remove spurious dependencies on Data::Show
      (thanks Salvatore!)



1.010  Tue Sep 28 08:03:42 2010

    * Added documentation warning about non-reentrancy of Perl 5 regex engine
      (thanks Andrew).

    * Fixed behaviour of ** repetitions wrt whitespace (thanks Andrew)

    * Documented more explicitly that start-pattern is supposed to act
      like a regular regex (or a token) wrt to whitespace



1.011  Sun Oct 10 18:57:10 2010

    * Added <!RULENAME> as alias for: (?! <.RULENAME> )

    * Added <?RULENAME> as alias for: (?= <.RULENAME> ) 
      (and made it work around normal lookahead/capture problem)

    * Fixed major bugs in <:arg> handling


1.012  Wed Nov  3 20:24:36 2010

    * Added RFC5322 example (thanks Tom and Abigail!)

    * Added <:nocontext> and <:context> directives to optimize
      away unwanted context substrings.

    * Solved transitive inheritance problem
      (grammars now fully polymorphic)

    * Added NEXT:: namespace for generic polymorphism


1.013  Wed Jun 29 14:39:40 2011

    * Improved in-doc calculator example (thanks Jake!)

    * Improved RFC5322 example (thanks Tom and Abigail)

    * Added <timeout:...> directive (thanks Dan)

    * Added <fatal:...> directive

    * Added better compile-time debugging of standard Perl subpatterns

    * Added documentation of problems when using objrules
      whose ctors re-invoke the regex engine (thanks Nathan)

    * Added new tests for objrules whose classes are based
      on Moose or autoloading (thanks Nathan!)


1.014  Wed Nov  2 13:57:09 2011

    * Improved description of <error:...> directive to make it clearer 
      that errors manifest in @! variable (thanks Leigh)

    * Added t/error_non_backtracking.t and
      demo/demo_error_nonbacktracking.pl to demonstrate use of (*COMMIT)
      to optimize error messages (thanks Nicolas)

    * Removed undocumented dependency of test suite on Class::Accessor
      (thanks Duff)

    * Tweaked caveats section to reflect improvements both in module
      (grammar inheritance now fully polymorphic) and in Perl 5.14
      regexes (regexes now reentrant)

    * Fixed problem with \N{NAMED CHARS} under 5.12 and later (thanks Tom!)

    * Added *% +% and {n,m}% separated repetitions to track the
      Perl 6 feature



1.015  Wed Feb 29 12:37:25 2012

    * Enabled limited support for tracking raw regex components when
      debugging a grammar (mainly literals and backslashed
      metacharacters)

    * Fixed bug that prevented named subpattern captures from including 
      lookbehinds (e.g. <name=( (?<!foo) bar )> didn't work)


1.016  Sat Mar 10 07:01:30 2012

    * Fixed omissions in charset recognition within metagrammar
      (now handles \] and otehr escapes correctly)


1.020  Thu Aug 16 14:13:03 2012

    * Fixed licence generation in Makefile.PL

    * Fixed issues with the stupid behaviour
      of Perl 5.17+ wrt (un)backslashed {'s

    * Fixed bad code in SYNOPSIS example
      (Thanks Paul!)

    * Fixed bad code in demo/demo_pos.pl
      (Thanks Peng)

    * Corrected docs for <debug: on>
      (Thanks Peng)

    * BACKWARDS INCOMPATIBLE CHANGE!!!!
      Due to limitations in Perl's qr overload
      The <\IDENT> backreference syntax has had to be changed
      to <\_IDENT>


1.021  Mon Aug 20 13:55:34 2012

    * Made Latin-1 encoding of docs explicit


1.022  Tue Jan 22 18:39:16 2013

    * Fixed minimization (by handling nocontext marker correctly)
      (thanks Thomas!)


1.025  Wed Jan 30 09:39:52 2013

    * Reuploaded with no substantive modifications


1.026  Thu Jan 31 08:20:14 2013

    * Re-fixed minimization (by handling nocontext marker correctly)
      (thanks again Thomas!)



1.027  Fri May 10 07:43:52 2013

    * Fixed nasty bug where 0 used as an atom
      (many thanks Arseny!)


1.028  Sat May 11 06:00:00 2013

    * Fixed very nasty caching bug within interpolation support
      (many more thanks Arseny!)




1.029  Tue Jun 25 15:44:35 2013

    * Doc patch (thanks Steven)

    * Added workarounds for some unfortunate changes in 5.18 behaviour
      (thanks Steven)

    * CRITICAL: Added warning regarding fundamental and intractable
      incompatibilities with Perl 5.18, and announcing that
      Regexp::Grammars is not supported under that version of Perl. :-(


1.030  Wed Jun 26 07:17:41 2013

    * Added essential-but-missing Skip_if_Perl_518 to the MANIFEST



1.031  Mon Aug 19 09:55:37 2013

    * Updated warning re 5.18 incompatibilities. Some progress has been
      made, but a complete solution is still at least a month away,
      possibly longer.

    * Added dependency on Lexical::Var under Perl 5.18 to overcome
      problem with magic pseudo-variables


1.032  Thu Aug 29 10:44:21 2013

    * Culled stray DB::single = 1 (thanks Robert!)


1.033  Sat Aug 31 13:10:57 2013

    * Listed dependency on Lexical::Var under Perl 5.18 to overcome
      problem with magic pseudo-variables (thanks Andreas!)



1.034  Wed Jun 11 06:50:04 2014

    * Reverted actual encoding to match nominated encoding (i.e. Latin-1)
      (thanks Olivier)

    * Fixed last bug preventing module from passing
      its own test suite under 5.20.

    * Gave up (for the present) on Perl 5.18 compatibility.

    * Noted limitations of passing %MATCH values as subrule args
      under 5.18+


1.035  Sat Jun 28 19:03:54 2014

    (All of the following with deepest thanks to Hugo...)

    * Removed no-longer-necessar Skip_if_Perl_518.pm from MANIFEST

    * Allowed rule declarations to be made anywhere
      (not just at the start of a line)

    * Fixed buggy edge-case for in-rule whitespace auto-matching
      at start of rule body (now works even if there is only a single
      whitespace between <rule: NAME> and first element of rule body)

    * Made R::G auto-/x any regex used under its suasion
      (solves formerly intractable problem of detecting a missing /x)

    * R::G now short-circuits any regex in its scope that does not
      contain any R::G constructs (and does not auto-/x them either)

    * Added line numbers to all warnings generated by the module

    * Added detection of "stray" quantifiers: unquoted quantifiers that
      don't actually quantify anything.

    * Added line-number annotations to the transformed regex as a
      last-gasp kind of assistance when confronted with the dreaded
      post-transformation "error marked with <-- HERE" message



1.036  Mon Sep 15 12:58:47 2014

    * Minor doc improvements

    * Fixed odd behaviour of <debug: off> 
      (Thanks, Chris!)



1.038  Thu Dec 11 14:52:05 2014

    * Fixed bug where actions persisted after a failed ->with_actions() match
      (Thanks Hao Wu!)




1.039  Sat Feb  7 08:39:58 2015

    * Module works correctly under 5.18.4.
      Updated warnings to reflect this.
      (Thanks p5p!)


1.040  Thu Mar 26 07:44:41 2015

    * Tweaked Makefile.PL and BUILD.PL to (maybe)
      work more happily with the CPANTesters toolchain



1.041  Sun May  3 12:57:37 2015

    * Documented edge case where new 5.18 regex compilation semantics
      breaks the <%hash> construct, listing two work-arounds
      (thanks David and Gianni!)

    * Fixed subtle problem with implicit whitespace-matching invalidating
      subrule argument lists
      (thanks Alex!)


1.042  Wed Sep 16 16:32:23 2015

    * Prelimary attempt to support raw named captures as well as R::G syntax
      (may induce bugs, though none found in the test suite)

    * Fixed bug deep inside demo/demo_rfc5322.pl
      (Thanks, Dale!)

    * Replaced Lexical::Vars with B::Hooks::Parser for 5.22+ compatibility
      (Thanks Alex!)


1.043  Mon Dec 14 13:14:25 2015

    * Eliminated redundant calls to setup() and teardown() for B::Hooks::Parser

    * Removed timeout test, as it cannot be reliably run across platforms
      much faster or slower than the author's development platform.
      (Thanls Slavin)


1.044  Wed Dec 16 08:22:01 2015

    * Yet another attempt to code around the changes in vars-inside-regexes
      to preserve post-5.18 compatibility (Thanks, Kent!)



1.045  Tue Jan 12 15:55:21 2016

    * Fixed bug causing premature clearing of action handlers
      (thanks Keith!)



1.047  Tue Sep 26 15:41:13 2017

    * Fixed misleading (mis-)documentation of <[MATCH=item]>
      (thanks, Felix!)

    * Fixed handling of (?>...) construct
      (thanks, Hugo!)




1.048  Wed Sep 27 06:20:49 2017

    * Hid use of Regexp package from CPAN
      (Thanks, Neil)


1.049  Fri Oct  5 06:55:49 2018

    * Modified documentation of problems with "non-backtracking"
      constructs, to cover new cases that have been discovered.
      (Sorry, Hugo)

    * Extended documentation of rules vs tokens with a short
      example demonstrating the explicit equivalence
      (thanks, Stefan)

    * Miscellaneous POD fixes (thanks, Hugo)

    * Clarified behaviour of <[MATCH=subrule]>* on zero match
      (Thanks, Alex)

    * Added %% operator for separated lists
      with optional trailing separator


1.050  Sat Apr 27 08:38:21 2019

    * Improved detection of explicit space matching in rules
      (now handles \h and \v as well as \s)

    * Improved transparency of debugger so that it no longer injects
      spurious whitespace matching after debugged constructs
      (Thanks, Louis!)