Revision history for XS-Parse-Sublike

0.41    2025-12-09
        [CHANGES]
         * Support optional refalias parameters with defaulting expressions
         * Support named refalias parameters

0.40    2025-11-14
        [CHANGES]
         * Experimentally support refalias syntax in extended signatures

0.39    2025-09-12
        [BUGFIXES]
         * Make sure to set `B::Deparse`'s ->ambient_pragmas when running
           deparse tests (https://github.com/Perl/perl5/issues/23674)

0.38    2025-08-08
        [BUGFIXES]
         * Improvements to handling of anonymous parameters or missing
           defaulting expressions in subroutine signature parsing (RT168812)

0.37    2025-02-07
        [CHANGES]
         * Added `xps_signature_query_*()` API

        [BUGFIXES]
         * Don't store signature parsing state in the `PL_parser->sig_*` vars,
           so as to cope when Perl v5.41.9 removes them

0.36    2025-01-15
        [BUGFIXES]
         * Handle the new shape of `PL_compiling.cop_features` in perl 5.41.8
           or above

0.35    2025-01-07
        [BUGFIXES]
         * Restore the original kw/kwlen after a failed `my` prefix hack to
           avoid confusing other modules that are doing the same thing

0.34    2025-01-06
        [BUGFIXES]
         * Don't get confused by function names immediately followed by the
           colon of attribute syntax with no intervening whitespace

0.33    2025-01-02
        [BUGFIXES]
         * Ensure test .xs files are valid C before C23, by not using unnamed
           parameters to functions (RT158225)

0.32    2024-12-20
        [BUGFIXES]
         * Ensure that signature start+finish hooks are run if present even on
           empty signatures

0.31    2024-12-20
        [CHANGES]
         * Optionally permit named function declarations in fully-qualified
           packages if all hooks agree
         * Added experimental `start_signature` and `finish_signature` hook
           stages
         * Added experimental `xps_signature_add_param()` API

0.30    2024-10-18
        [BUGFIXES]
         * Ensure that named parameter variables are introduced before the
           next variable's defaulting expression is parsed, just like
           positional ones already do

0.29    2024-10-14
        [CHANGES]
         * Allow `Sublike::Extended` to take over core perl's handling of
           `sub` or `method`, allowing extended sublike syntax without needing
           the `extended` keyword.

0.28    2024-10-08
        [CHANGES]
         * Make the subroutine body optional when using `extended` subs
         * Declare the named parameter and parameter attribute features as
           non-experimental

        [BUGFIXES]
         * Use PTR2UV() properly when making debug values (RT155804)
         * Avoid compiler warnings about unused var or label on Perl 5.16

0.27    2024-09-23
        [BUGFIXES]
         * Ensure that signature parameter attribute hook functions can
           correctly see and modify the optree fragments

0.26    2024-09-20
        [BUGFIXES]
         * Don't segfault on attempts to use unnamed slurpy variables with
           named parameters (RT155654)

0.25    2024-09-19
        [BUGFIXES]
         * Make sure not to introduce signature parameter variables until
           after their own defaulting expression is parsed (RT155630)

0.24    2024-09-18
        [CHANGES]
         * Support lexical subs when prefixed with `my`
         * Rewritten implementation of named parameters to avoid indirection
           via a slurpy HV for much performance improvement
         * Support also slurpy AVs along with named parameters
         * Docs updates for clarity about named params

        [BUGFIXES]
         * Avoid some more C99 `for()` loop variable declarations and struct
           initialisers as they upset some C compilers

0.23    2024-08-15
        [CHANGES]
         * New ABI version 6
            + Adds a `ver` field to the `XSParseSublikeHooks` structure
         * Support named parameters using defined-or and true-or defaulting
           operators
         * Support positional parameters using defined-or and true-or
           defaulting operators in extension parser, on Perl version 5.38+
         * Store the `File::ShareDir` data in the per-module path, not the
           per-dist path

0.22    2024-07-08
        [CHANGES]
         * Use `File::ShareDir` for storing .h include file, rather than
           storing the contents in the `__DATA__` section of the build helper

0.21    2023-10-11
        [BUGFIXES]
         * Ensure that exceptions thrown from runtime signature handling
           appear to come from the callsite and not declaration
         * Fix signedness of printf format when complaining about 
           mismatched `->ver`

0.20    2023-09-09
        [BUGFIXES]
         * Correct ->VERSION check for Object::Pad or Future::AsyncAwait
           cross-module tests (RT149700)
         * Don't upset gcc's -Wformat by passing an unbounded STRLEN into
           %.*s format (RT133035)
         * Avoid colons in filename of t/71extended+Object-Pad.t because
           Windows doesn't like them (RT149712)
         * Ensure that mixed positional + named params in signatures work
           properly (thanks alh)
         * Ensure name shadowing of param names prints the right diagnostic
           warning (thanks alh)

0.19    2023-09-07
        [CHANGES]
         * Added `Sublike::Extended`, a prefix keyword to enable the extended
           signature parser for named params and attributes
         * Beginnings of an (experimental) XS-level API for attributes on
           parameters
         * Complain on attempts to register a sublike keyword with neither a
           permit function nor hinthash key

0.18    2023-06-14
        [CHANGES]
         * Swap all the unit tests from Test::More to Test2::V0

        [BUGFIXES]
         * Remember to set `-std=c99` compiler flag on Perls before v5.36

0.17    2023-03-21
        [CHANGES]
         * Experimental support for named param syntax in parse_subsignature()
         * Support core perl's `method` syntax when available by setting
           CVf_IsMETHOD (perl >= 5.37.10)

0.16    2021-12-16
        [CHANGES]
         * No longer support ABI version 3 even in back-compatibility mode

        [BUGFIXES]
         * Remember to adjust the SET_CVNAME and INSTALL_SYMBOL actions bits
           in the non-dynamic-actions case
         * Avoid using C99-style `//` comments as some compilers dislike it
           (mistagged RT140487)

0.15    2021-12-15
        [CHANGES]
         * Added ctx->actions, the DYNAMIC_ACTIONS compat flag, and associated
           flags and machinery
         * Added ctx->moddata

0.14    2021-10-28
        [CHANGES]
         * Added XS_PARSE_SUBLIKE_FLAG_PREFIX; discourage the _any() function
           to achieve similar effect
         * Added XS_PARSE_SUBLIKE_FLAG_BODY_OPTIONAL to permit bodyless sublike
           declarations
         * Better compiletime warnings when a sub declaration lacks a
           body-delimiting brace

        [BUGFIXES]
         * Fix for Perl < 5.20 on Win32 (thanks ilmari) (RT139296)
         * Handle the new OP_ARGCHECK aux structure of perl 5.31.5 (thanks
           ilmari) (RT139295)
         * Accomodate newly-added core sv_setrv_*() functions

0.13    2021-08-30
        [CHANGES]
         * New ABI version 4
            + Set up functions in PL_modglobal instead of perl-visible global
              symbol table
            + Add a `permit_hintkey` convenient shortcut
         * Better code structure of XS::Parse::Sublike::Builder

0.12    2021-06-21
        [BUGFIXES]
         * Try to work around parse_block()'s unbalanced scopestack messups
         * Namespace the static variables in the .h file appropriately in case
           both this as XSParseKeyword are loaded

0.11    2021-01-18
        [BUGFIXES]
         * Don't SEGV on signature parse error (RT133865)
         * Account for change of signature validation error message in latest
           bleadperl (RT134012)

0.10    2020-06-20
        [BREAKING CHANGES]
         * New ABI version 3

        [CHANGES]
         * Pass an additional 'hookdata' parameter around between caller and
           hook stage functions

0.09    2020-06-15
        [CHANGES]
         * Define API for an optional stage for filtering and applying
           attributes during parsing

0.08    2020-06-12
        [CHANGES]
         * Define API to either require or skip parsing the name of a sub, or
           skip parsing attributes or signatures           

0.07    2020-04-02
        [BUGFIXES]
         * Ensure that empty-signature functions are still parsed correctly
           and include arg count check (RT132284)

0.06    2020-03-27
        [CHANGES]
         * Pass a standard shared context struct through the various hook
           stages
         * Add an early hook stage before the call to start_subparse()

0.05    2020-03-26
        [BUGFIXES]
         * Fix hax/parse_subsignature.c.inc to cope with whitespace between
           parameter declarations

0.04    2020-03-18
        [CHANGES]
         * Pass a required module version number to boot_xs_parse_sublike()
         * Added lots of unit tests

0.03    2020-03-18
        [CHANGES]
         * Added xs_parse_sublike_any() allowing custom keywords to combine
           with registered hooks

        [BUGFIXES]
         * Avoid double-free of sigops in case of parse failure
         * Fix hax/parse_subsignature.c.inc for named parameters with default
           expressions

0.02    2020-03-17
        [CHANGES]
         * Added `register_xs_parse_sublike()` and the `permit` hook stage
         * Added toplevel PL_keyword_hook parser function

0.01    2020-03-15
        First version, released on an unsuspecting world.
