The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Revision history for XS-Parse-Keyword

0.42    2024-04-30
        [BUGFIXES]
         * Don't crash on zero-argument calls to list-associative wrapper
           functions (thanks aquanight) (RT153244)

0.41    2024-04-25
        [BUGFIXES]
         * Remmeber to EXTEND the stack in list-associative operator wrapper
           functions (thanks aquanight) (RT153173)

0.40    2024-04-23
        [CHANGES]
         * Support N-way list-associative operators, implemented as LISTOPs
         * Delete the no-longer-used API constants
           XPI_OPERAND_{ARITH,TERM,CUSTOM} from XSParseInfix.h

        [BUGFIXES]
         * Avoid a subsequent `use VERSION` in unit tests to keep perl 5.39.8
           happy

0.39    2023-12-04
        [CHANGES]
         * Added optional variants of XPK_ARITHEXPR, XPK_TERMEXPR,
           XPK_LISTEXPR and the context-forcing versions

0.38    2023-08-09
        [BUGFIXES]
         * Fix warn() non-static format string (RT149346)
         * Don't bother with Build.PL probing for PL_infix_plugin; just use
           perl version number

0.37    2023-08-08
        [CHANGES]
         * Added `XPK_WARNING()` and several conditional variants

0.36    2023-07-20
        [BUGFIXES]
         * Remember to also call `op_scope()` after `block_end()` if the
           XPK_FLAG_BLOCKSCOPE flag is set

0.35    2023-07-19
        [CHANGES]
         * Added XPK_INTRO_MY, to call `intro_my()`
         * Added XPK_FLAG_BLOCKSCOPE to wrap a block_start()+block_end()
           around a syntax construction
         * Renamed XPK_PARENSCOPE to XPK_PARENS, etc..
         * Adjusted documentation of XS::Parse::Infix for release of
           Perl v5.38

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

        [BUGFIXES]
         * Remember to set `-std=c99` compiler flag on Perls before v5.36
         * Skip whitespace between pieces of SEQUENCE or SEPARATEDLIST

0.33    2023-02-18
        [CHANGES]
         * Added XPK_LEXVAR, a non `my`-alike variant
         * Added XPK_*_pieces() macros allowing caller to dynamically generate
           sub-arrays of pieces

        [BUGFIXES]
         * Remember to consume whitespace between XPK_REPEATED elements

0.32    2023-01-12
        [BUGFIXES]
         * Ensure that XPK_TERMEXPR acting as a fullexpr is OK with empty
           parens (RT145618)

0.31    2022-12-25
        [CHANGES]
         * PL_infix_plugin now exists in 5.37.7
         * Support the new infix operator precedence levels added by
           perl v5.37.7
         * Various updates to hax/ support files

0.30    2022-12-03
        [CHANGES]
         * Added XPK_STAGED_ANONSUB; inspired a bit by XS::Parse::Sublike for
           customising the parsing of anonmethod

0.29    2022-12-01
        [CHANGES]
         * Added XPK_PREFIXED_TERMEXPR_ENTERLEAVE

        [BUGFIXES]
         * Don't try to call `SvPVX()` on a `newSV(0)` because -DDEBUGGING
           perls get upset (RT145278)
         * Remember to `break` out of switch block cases when testing for
           `KEYWORD_PLUGIN_*` return values

0.28    2022-11-25
        [CHANGES]
         * Include a XSParseInfixClassification field in the XSParseInfixInfo
           structure
         * Do not permit mixed identifier/non characters in the names of
           registered infix operators
         * No longer supports XSParseInfix ABI version 0

        [BUGFIXES]
         * When parsing an infix operator name, make sure not to be confused
           by additional identifier characters immediately after it

0.27    2022-10-31
        [CHANGES]
         * Updates to XS::Parse::Infix for latest `infix-plugin` perl5 branch
            + parsedata field is now an SV **, not an ANY *
         * Expose parse_infix() as a real ABI function, allowing infix
           operators to be hyper-operators and parse other operator names

0.26    2022-10-24
        [CHANGES]
         * Updates to XS::Parse::Infix for latest `infix-plugin` perl5 branch
            + Requires classification to set the operator precedence
            + No longer need XPI_OPERAND_ARITH or XPI_OPERAND_TERM; most of
              .lhs_flags and .rhs_flags are redundant now
            + No longer support XPI_OPERAND_CUSTOM
            + Optional `parse` phase for parametric/hyper-operators
         * Bump XS::Parse::Infix ABI version to 2
         * Declare XPI ABI v0 as deprecated, soon to be removed

0.25    2022-07-25
        [CHANGES]
         * Permit infix operators to consume fewer than all the available
           symbols; allowing for RHS operands that begin with symbols without
           intervening whitespace
         * Improved unit-testing of infix operator parser precedence issues
         * Added `XPI_OPERAND_ARITH`; renumbered `XPI_OPERAND_TERM` to be
           non-zero. Currently zero is accepted for back-compat

0.24    2022-06-26
        [CHANGES]
         * Skip attempting to create duplicate wrapper funcs, in case of
           multiple registrations of the same operator with different
           spellings

        [BUGFIXES]
         * Arrange extra_linker_flags correctly while building probe program
           for PL_infix_plugin

0.23    2022-05-18
        [CHANGES]
         * Defined XPK_KEYWORD, a better version of XPK_LITERAL for
           keyword-like tokens
         * Defined XPK_ARITHEXPR, a higher-precedence version of XPK_TERMEXPR
         * Defined XPK_ARGSCOPE, a variant of XPK_PARENSCOPE where the parens
           themselves are optional
         * Undocument the old XPK_STRING token type

        [BUGFIXES]
         * Fixes for bugs that affect -DDEBUGGING-enabled perls
            + Remember to clear OPf_KIDS when stealing the op_first of a
              LISTOP (RT142770)
            + Don't call cv_clone() at compiletime when unit testing; generate
              an OP_ANONCODE instead (RT142771)

0.22    2022-02-21
        [CHANGES]
         * Added XPK_AUTOSEMI piece type

        [BUGFIXES]
         * Don't segfault if lex_scan_lexvar() fails (RT140402)
         * Set required version of ExtUtils::ParseXS for multiple t/*.xs files

0.21    2021-10-12
        [BUGFIXES]
         * Fix for perl 5.20 - cannot use assert() as an expression

0.20    (bad MANIFEST)

0.19    2021-10-05
        [CHANGES]
         * Defined XPK_PREFIXED_BLOCK_ENTERLEAVE and XPK_SETUP for customizing
           the parser context around blocks

0.18    2021-09-28
        [CHANGES]
         * Define the XPI_OPERAND_ONLY_LOOK flag
         * Define a callchecker for list/list infix operators. Add a
           callchecker that can optimise out certain kinds of operations
           (ref to padav or pkgav, anonlist if XPI_OPERAND_ONLY_LOOK is set)

        [BUGFIXES]
         * cygwin requires deparse_infix to be declared with XS_INTERNAL()
           (RT139449)
         * Some architectures require intermediate storage for values in the
           test function pp_addpairs (RT139445)
         * Fix conditions in lexical variable type checking (RT139444)

0.17    2021-09-23
        [CHANGES]
         * Support certain kinds of list operands on LHS of infix operators
         * Generate wrapper functions around list-list infix operators, which
           unpack their argument lists from two ARRAYrefs

0.16    2021-09-21
        [CHANGES]
         * Attempt automatic deparsing of infix operators
         * Support certain kinds of list operands on RHS of infix operators

0.15    2021-09-06
        [CHANGES]
         * Optional generation of wrapper functions around scalar-infix
           operators
         * Quieter Build.PL by skipping PL_infix_plugin check on versions
           of perl known to be too old it

0.14    2021-08-31
        [CHANGES]
         * Added the entire XS::Parse::Infix subsystem
         * Added XPK_INFIX_* token types

0.13    2021-08-26
        [CHANGES]
         * Bump to ABI version 2; pass build1's arg0 param as a pointer, not a
           direct struct copy

        [BUGFIXES]
         * Back-compat for ABI version 1's build1 arg0 param not having a line
           number (RT138708)

0.12    2021-08-16
        [CHANGES]
         * Support probe on XPK_IDENT, XPK_PACKAGENAME, XPK_COMMALIST
         * Provide optional versions of XPK_IDENT and XPK_PACKAGENAME
         * Report the line number each piece was parsed from

0.11    2021-08-03
        [BUGFIXES]
         * Split Builder.pm into two parts (static + dynamic), so the static
           part can be indexed as normal by usual CPAN toolchain (RT138313)

0.10    2021-07-13
        [CHANGES]
         * Better configure-time probing for HPUX compiler support

        [BUGFIXES]
         * Fix for CHOICE/TAGGEDCHOICE corrupting the value of ->i in the
           result (RT136845)

0.09    2021-07-12
        [CHANGES]
         * Attempt to support HPUX, which may need additional compiletime
           arguments to support anonymous inner unions
         * Better compiletime error messages by attempting to include some
           source context in the same style as yyerror()
         * Slight compiletime performance boost by setting PERL_NO_GET_CONTEXT

        [BUGFIXES]
         * Check for recursive parser errors and abort (RT137458)

0.08    2021-06-17
        [CHANGES]
         * Support probe in XPK_CHOICE and XPK_TAGGEDCHOICE

        [BUGFIXES]
         * Remember to mask off the typeflags in probe_piece()

0.07    2021-06-16
        [CHANGES]
         * Added XPK_BLOCK_VOIDCTX and XPK_TERMEXPR_VOIDCTX
         * Undocumented the _flags() variants of XPK_BLOCK and XPK_TERMEXPR,
           and all the flags for them
         * Support probing in XPK_BLOCK
         * (undocumented) trial to see if all supported platforms support
           anonymous unions

0.06    2021-06-01
        [BREAKING CHANGES]
         * ABI version is now 1 - this will require a from-source rebuild of
           all modules using it.

        [CHANGES]
         * Renamed XPK_STRING to XPK_LITERAL
         * Support probe on the four bracketed scope types
         * Added _OPT-suffixed versions of the four bracketed scope types
         * Added more token types:
            + XPK_LEXVAR_MY
            + XPK_COMMA
            + XPK_PREFIXED_BLOCK
            + XPK_SEQUENCE

0.05    2021-05-31
        [CHANGES]
         * Added context-setting variants of block/expr types:
            + XPK_BLOCK_SCALARCTX, XPK_BLOCK_LISTCTX
            + XPK_TERMEXPR_SCALARCTX
            + XPK_LISTEXPR_LISTCTX

0.04    2021-05-24
        [CHANGES]
         * Added many more token types: XPK_LEXVARNAME, XPK_ATTRIBUTES,
           XPK_VSTRING, XPK_VSTRING_OPT, XPK_EQUALS
         * Added XPK_COMMALIST structure type
         * Defined hooks flags XPK_FLAG_STMT, XPK_FLAG_EXPR, XPK_FLAG_AUTOSEMI
         * API change to the way .build is invoked, allowing greater future
           compatibility for args structures

0.03    2021-04-27
        [BUGFIXES]
         * Fix the `VAR never introduced at ...` warnings from uses of
           XPK_BLOCK
         * Make sure the Builder.pm file is mentioned in META.{yml,json} so
           CPAN tools can find it

0.02    2021-04-21
        [CHANGES]
         * Back-compat to perl 5.14
         * Avoid passing user strings directly to printf, by emitting
           XPK_FAILURE using croak("%s", str)
         * Various documentation wording improvements

0.01    2021-04-14
        First version, released on an unsuspecting world.