Revision history for XS-Parse-Sublike 0.42 2026-09-16 [CHANGES] * Use PNf/PNfARG in unit tests to avoid needing to call PadnameSV() [BUGFIXES] * Fix for perl 5.45.3 - need to invoke class_method_parse_post_blockstart() during parse time 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.