Branch: refs/heads/davem/xspod
  Home:   https://github.com/Perl/perl5
  Commit: fa8e6aa1bd1689b8fbc9a0800439e06571a7de46
      
https://github.com/Perl/perl5/commit/fa8e6aa1bd1689b8fbc9a0800439e06571a7de46
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: remove section on %v

The XS parser supported an extremely obscure bit of functionality which
made use of the %v package variable to maintain state between different
bits of typemap processing. This was accidentally broken in 5.10.0:
refactoring removed the 'use vars "%v"' line, and no one seemed to
notice or care.

Also, the sole example of its use in the docs seemed to be obscure,
confusing and probably wrong.

There was a consensus in the discussion at

    http://nntp.perl.org/group/perl.perl5.porters/267667

that we should stop documenting this feature rather than trying to fix
it.


  Commit: 8f8f7f00164187dadd7c6f7c5e076b5f28e8840b
      
https://github.com/Perl/perl5/commit/8f8f7f00164187dadd7c6f7c5e076b5f28e8840b
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: reindent and reformat code examples

The various XS code examples had odd and inconsistent indentation (often
with 5 leading spaces) and inconsistent formatting, e.g. foo(a,b) vs
foo( a, b ) vs foo(a, b). Fix that, and also remove any tab chars.

Whitespace-only change.


  Commit: 9710af7ee98f21a43f5073d32d61ea4833282006
      
https://github.com/Perl/perl5/commit/9710af7ee98f21a43f5073d32d61ea4833282006
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: delete most non-ref sections

This commit is a simple cut which deletes several '=head2' sections from
perlxs.pod. The next commit will tidy up and fix any broken links etc.

These sections are more tutorial-like, and aren't in line with the goal
of this branch that perlxs.pod becomes purely a reference manual for XS.
Any relevant information from these sections may be incorporated later
into new sections in perlxs.pod and/or be included in a future rewrite
of perlxstut.pod.

The sections deleted are:

    =head2 Introduction
    =head2 On The Road
    =head2 The Anatomy of an XSUB
    =head2 The Argument Stack
    =head2 The RETVAL Variable
    =head2 Returning SVs, AVs and HVs through RETVAL
    =head2 Returning Undef And Empty Lists
    =head2 Interface Strategy
    =head2 Perl Objects And C Structures


  Commit: 305e19cdf1f3882e767cefe22ca62d781c2b169e
      
https://github.com/Perl/perl5/commit/305e19cdf1f3882e767cefe22ca62d781c2b169e
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M XSUB.h
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: fix up links after deleting sections

The previous commit deleted several sections from perlxs.pod. This
commit fixes things up; done as a separate commit so that the changes
aren't drowned out in the diff listing.


  Commit: 853f692246d2dc6c2ab2ea8c254f459021f4e3f1
      
https://github.com/Perl/perl5/commit/853f692246d2dc6c2ab2ea8c254f459021f4e3f1
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: reorder sections

This big commit does a series of plain cut+pastes to reorder all the
=head2 sections within the file.

This changes the order from semi-random into roughly the order the
various XS keywords would appear within an XS file, and then within an
XSUB declaration/definition.

No changes have been made to the text: simply that all lines from a
particular '^=head2' up until the next head2 have been cut+paste as
a single unit.

No attempt has been made yet to make the text consistent with the new
ordering; that will be done by the subsequent commits of this branch.

The previous ordering in this file was:

    =head1 NAME
    =head1 DESCRIPTION
    =head2 The MODULE Keyword
    =head2 The PACKAGE Keyword
    =head2 The PREFIX Keyword
    =head2 The OUTPUT: Keyword
    =head2 The NO_OUTPUT Keyword
    =head2 The CODE: Keyword
    =head2 The INIT: Keyword
    =head2 The NO_INIT Keyword
    =head2 The TYPEMAP: Keyword
    =head2 Initializing Function Parameters
    =head2 Default Parameter Values
    =head2 The PREINIT: Keyword
    =head2 The SCOPE: Keyword
    =head2 The INPUT: Keyword
    =head2 The IN/OUTLIST/IN_OUTLIST/OUT/IN_OUT Keywords
    =head2 The C<length(NAME)> Keyword
    =head2 Variable-length Parameter Lists
    =head2 The C_ARGS: Keyword
    =head2 The PPCODE: Keyword
    =head2 The REQUIRE: Keyword
    =head2 The CLEANUP: Keyword
    =head2 The POSTCALL: Keyword
    =head2 The BOOT: Keyword
    =head2 The VERSIONCHECK: Keyword
    =head2 The PROTOTYPES: Keyword
    =head2 The PROTOTYPE: Keyword
    =head2 The ALIAS: Keyword
    =head2 The OVERLOAD: Keyword
    =head2 The FALLBACK: Keyword
    =head2 The INTERFACE: Keyword
    =head2 The INTERFACE_MACRO: Keyword
    =head2 The INCLUDE: Keyword
    =head2 The INCLUDE_COMMAND: Keyword
    =head2 The CASE: Keyword
    =head2 The EXPORT_XSUB_SYMBOLS: Keyword
    =head2 The & Unary Operator
    =head2 Inserting POD, Comments and C Preprocessor Directives
    =head2 Using XS With C++
    =head2 Safely Storing Static Data in XS
    =head3 MY_CXT REFERENCE
    =head1 EXAMPLES
    =head1 CAVEATS
    =head2 Use of standard C library functions
    =head2 Event loops and control flow
    =head1 XS VERSION
    =head1 AUTHOR DIAGNOSTICS
    =head1 AUTHOR

and is now:

    =head1 NAME
    =head1 DESCRIPTION
    =head2 The MODULE Keyword
    =head2 The PACKAGE Keyword
    =head2 The PREFIX Keyword
    =head2 Inserting POD, Comments and C Preprocessor Directives
    =head2 The REQUIRE: Keyword
    =head2 The VERSIONCHECK: Keyword
    =head2 The PROTOTYPES: Keyword
    =head2 The EXPORT_XSUB_SYMBOLS: Keyword
    =head2 The INCLUDE: Keyword
    =head2 The INCLUDE_COMMAND: Keyword
    =head2 The TYPEMAP: Keyword
    =head2 The BOOT: Keyword
    =head2 The FALLBACK: Keyword
    =head2 The NO_OUTPUT Keyword
    =head2 The IN/OUTLIST/IN_OUTLIST/OUT/IN_OUT Keywords
    =head2 Default Parameter Values
    =head2 The C<length(NAME)> Keyword
    =head2 Variable-length Parameter Lists
    =head2 The PREINIT: Keyword
    =head2 The INPUT: Keyword
    =head2 The NO_INIT Keyword
    =head2 Initializing Function Parameters
    =head2 The & Unary Operator
    =head2 The SCOPE: Keyword
    =head2 The INIT: Keyword
    =head2 The C_ARGS: Keyword
    =head2 The CODE: Keyword
    =head2 The PPCODE: Keyword
    =head2 The POSTCALL: Keyword
    =head2 The OUTPUT: Keyword
    =head2 The CLEANUP: Keyword
    =head2 The PROTOTYPE: Keyword
    =head2 The OVERLOAD: Keyword
    =head2 The ALIAS: Keyword
    =head2 The INTERFACE: Keyword
    =head2 The INTERFACE_MACRO: Keyword
    =head2 The CASE: Keyword
    =head2 Using XS With C++
    =head2 Safely Storing Static Data in XS
    =head3 MY_CXT REFERENCE
    =head1 EXAMPLES
    =head1 CAVEATS
    =head2 Use of standard C library functions
    =head2 Event loops and control flow
    =head1 XS VERSION
    =head1 AUTHOR DIAGNOSTICS
    =head1 AUTHOR


  Commit: 21ecdb84f03015acbacccf22d005813a3f63f9a1
      
https://github.com/Perl/perl5/commit/21ecdb84f03015acbacccf22d005813a3f63f9a1
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: add group headers

Following the previous commit's reordering of the all the =head2
sections, demote most of the =head2 headers to =head3, and add some new
=head2 headers which group together related headers.

Also add some =head3's for a few missing keywords.

Subsequent commits will flesh out the new sections.


  Commit: 3769e97658b11528fdd05366a36380898bc7f932
      
https://github.com/Perl/perl5/commit/3769e97658b11528fdd05366a36380898bc7f932
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: add a new introductory part

Four commits ago, I removed most of the general text sections in
perlxs (i.e. the ones not specifically about a particular keyword).

Now this commit adds a completely new introductory part to perlxs, about
1200 lines long. It represents an attempt to write a background to what
XS and XSUBs, SVs, typemaps etc are, in a complete and modern way.
The existing reference section for each keyword follows it.

I tried to avoid getting too tutorial-like (that's what perlxstut is
for), but I may have crossed the line in various places. In particular
it has a new section which could have been titled "all the bits of
perlguts you need to know in order to write non-trivial XSUBs without
having to actually read perlguts".


  Commit: ca7bdbd591c0bbaeda3b30fdd6d9a038faa83b19
      
https://github.com/Perl/perl5/commit/ca7bdbd591c0bbaeda3b30fdd6d9a038faa83b19
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: add BNF definition section

Add a section which semi-formally tries to define the syntax and
structue of an XS file, using a BNF-like format.

See http://nntp.perl.org/group/perl.perl5.porters/268701 for the
discussion of this part.


  Commit: f596116359fb57a425bb45a097206d8dc7f01362
      
https://github.com/Perl/perl5/commit/f596116359fb57a425bb45a097206d8dc7f01362
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update MODULE/PACKAGE/PREFIX

Rewrite the POD for these three keywords, and in particular, treat
them as one declaration, rather than three unrelated keywords.


  Commit: e338dfc025a1f3269d03508abf50b2ae7699a994
      
https://github.com/Perl/perl5/commit/e338dfc025a1f3269d03508abf50b2ae7699a994
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update file-scoped directive text

Populate the new

     =head2 File-scoped XS Keywords and Directives

section, partially by cannibalising (and then deleting) the old

    =head3 Inserting POD, Comments and C Preprocessor Directives

subsection. This commit only adds text about directives; subsequent
commits will update the various file-scoped keywords.


  Commit: df519363d5c711092397df0e7985d3501165f056
      
https://github.com/Perl/perl5/commit/df519363d5c711092397df0e7985d3501165f056
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update REQUIRE, VERSIONCHECK keywords


  Commit: 0312e37bb7229ea25e1eb3439e1c3f83735eb0ae
      
https://github.com/Perl/perl5/commit/0312e37bb7229ea25e1eb3439e1c3f83735eb0ae
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update PROTOTYPES: keyword


  Commit: ac07e97fd466ecbaf6069cd0e29aca965c6dfdd0
      
https://github.com/Perl/perl5/commit/ac07e97fd466ecbaf6069cd0e29aca965c6dfdd0
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update EXPORT_XSUB_SYMBOLS, INCLUDE(_COMMAND)


  Commit: 09e774da3ea277e591e1beda42f5b0ccc306ce78
      
https://github.com/Perl/perl5/commit/09e774da3ea277e591e1beda42f5b0ccc306ce78
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update TYPEMAP: keyword


  Commit: 560391d9278fafdfb186ca9c2645193b75c39004
      
https://github.com/Perl/perl5/commit/560391d9278fafdfb186ca9c2645193b75c39004
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update BOOT: keyword


  Commit: 9af5c7406b138d7b5aa95431bd78df7f17b826f1
      
https://github.com/Perl/perl5/commit/9af5c7406b138d7b5aa95431bd78df7f17b826f1
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update FALLBACK: keyword


  Commit: e5346fd194e14f59ed02a5d38630fd8c2e870770
      
https://github.com/Perl/perl5/commit/e5346fd194e14f59ed02a5d38630fd8c2e870770
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update XSUB Structure + Declaration

Populate the new

    =head2 The Structure of an XSUB
    =head2 An XSUB Declaration

sections


  Commit: 955ad90794a6cad24897c2d5c2b4c98b6b14d280
      
https://github.com/Perl/perl5/commit/955ad90794a6cad24897c2d5c2b4c98b6b14d280
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update section 'An XSUB Parameter'

Add some initial text for this new section, and also add a new
subsection "XSUB Parameter Placeholders".


  Commit: 9717f2521d0d5f70f432d128a78d9776b94d47f5
      
https://github.com/Perl/perl5/commit/9717f2521d0d5f70f432d128a78d9776b94d47f5
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update IN_OUT etc section


  Commit: d8dcfe71824ed40d3b6f1bce721e574e01329aff
      
https://github.com/Perl/perl5/commit/d8dcfe71824ed40d3b6f1bce721e574e01329aff
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M XSUB.h
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update default, length, ellipis params

Rewrite (and retitle) these three subsections:

    =head3 Default Parameter Values
    =head3 The C<length(NAME)> Keyword
    =head3 Variable-length Parameter Lists


  Commit: 34f73e100b0f43b4809dec927aaa684eed1b58f2
      
https://github.com/Perl/perl5/commit/34f73e100b0f43b4809dec927aaa684eed1b58f2
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update: Input part, PREINIT sections

Add text for the new '=head2 The XSUB Input Part' section, and rewrite
the existing entry for the PREINIT keyword.


  Commit: 89660c7fcbde239a1a5147f163a91444fd8d40a8
      
https://github.com/Perl/perl5/commit/89660c7fcbde239a1a5147f163a91444fd8d40a8
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update 'The INPUT: Keyword' section

This commit completely rewrites this section and subsections:

    =head3 The INPUT: Keyword
        =head4 The NO_INIT Keyword
        =head4 Initializing Function Parameters
        =head4 The & Unary Operator

It de-emphasises the INPUT keyword and suggests using ANSI XS signatures
etc instead.


  Commit: fd4933d54960a9ba07915a4d71b4011dc38b61ae
      
https://github.com/Perl/perl5/commit/fd4933d54960a9ba07915a4d71b4011dc38b61ae
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update 'SCOPE: Keyword' section


  Commit: 7fd59c0c00df4a27daa99b0e9d0c37d033a58d9a
      
https://github.com/Perl/perl5/commit/7fd59c0c00df4a27daa99b0e9d0c37d033a58d9a
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update: init part, INIT sections

Add text for the new '=head2 The XSUB Init Part' section, and rewrite
the existing entry for the INIT keyword.


  Commit: 8e0e4dec38a8646173db58ab41cb2e2b6c3f1ab8
      
https://github.com/Perl/perl5/commit/8e0e4dec38a8646173db58ab41cb2e2b6c3f1ab8
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update: code part, autocall, C_ARGS

Add text to the new

    =head2 The XSUB Code Part
    =head3 Auto-calling a C function

sections, and rewrite the existing

    =head4 The C_ARGS: Keyword

section


  Commit: 4e8a05c11876b80f8dda57de855841343b4bedeb
      
https://github.com/Perl/perl5/commit/4e8a05c11876b80f8dda57de855841343b4bedeb
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update: CODE, PPCODE

Rewrite these sections:

    =head3 The CODE: Keyword
    =head3 The PPCODE: Keyword


  Commit: 5ab6a04f5809f2024a87210acad9fea7ac00c261
      
https://github.com/Perl/perl5/commit/5ab6a04f5809f2024a87210acad9fea7ac00c261
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update NOT_IMPLEMENTED_YET: keyword

This keyword formerly wasn't documented. The docs now say "this is what
it is, but don't use it".


  Commit: 62648568f84d62e354ef058433561b9c115c7699
      
https://github.com/Perl/perl5/commit/62648568f84d62e354ef058433561b9c115c7699
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update: output part

Add text to the new

    =head2 The XSUB Output Part

section, and rewrite the text in these existing sections:

    =head3 The POSTCALL: Keyword
    =head3 The OUTPUT: Keyword


  Commit: 08a12248fae0dfbf72777163cf4584d6842ecb58
      
https://github.com/Perl/perl5/commit/08a12248fae0dfbf72777163cf4584d6842ecb58
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update: cleanup part

Add text to the new

    =head2 The XSUB Cleanup Part

section, and rewrite the text in this existing section:

 =head3 The CLEANUP: Keyword


  Commit: cc816224f266c0923f635ff2cb642bd3ddea9136
      
https://github.com/Perl/perl5/commit/cc816224f266c0923f635ff2cb642bd3ddea9136
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update generic intro, PROTOTYPE

Add text to the new

    =head2 XSUB Generic Keywords

section, and rewrite the text in this existing section:

    =head3 The PROTOTYPE: Keyword


  Commit: b26efebc0394bf15db9fde7e48be15db6ff266c7
      
https://github.com/Perl/perl5/commit/b26efebc0394bf15db9fde7e48be15db6ff266c7
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: mention package name types

Explain that a 'C' parameter type in an XSUB declaration can actually
be a Perl package name or similar, e.g.

    Foo::Bar
    f(Foo::Bar obj, char *s)


  Commit: d11731b4e64973a23c5516949ef05eba40482fbe
      
https://github.com/Perl/perl5/commit/d11731b4e64973a23c5516949ef05eba40482fbe
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update OVERLOAD, add T_PTROBJ

First, add a new subsection

    =head3 T_PTROBJ and opaque handles

to the TYPEMAPs section explaining how this typemap can be used to
map between Perl objects and C library handles. It provides a
fully-worked example of wrapping a simple arithmetic library.

Then completely rewrite the

    =head3 The OVERLOAD: Keyword

section. In particular, it now refers to the new T_PTROBJ example and
shows how it can be extended to use overloading.


  Commit: 4d48858434789bd1da0fac46b9f1d09c5951cad5
      
https://github.com/Perl/perl5/commit/4d48858434789bd1da0fac46b9f1d09c5951cad5
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: document ATTRS

This keyword was undocumented, even though it had been added 25 years
ago.


  Commit: f66fd494287d33453e4cc0068666eec18c7a84d7
      
https://github.com/Perl/perl5/commit/f66fd494287d33453e4cc0068666eec18c7a84d7
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: add "Sharing XSUB bodies" section

Populate the introduction to this new section.


  Commit: 815fe4e9c14a30b2e0557eba08271b1c2305459d
      
https://github.com/Perl/perl5/commit/815fe4e9c14a30b2e0557eba08271b1c2305459d
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update: ALIAS

Rewrite this section:

    =head3 The ALIAS: Keyword


  Commit: 7188b4a0960113261f6c55bdcbd374f45ed27a83
      
https://github.com/Perl/perl5/commit/7188b4a0960113261f6c55bdcbd374f45ed27a83
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update INTERFACE, INTERFACE_MACRO

Rewrite these sections:

 =head3 The INTERFACE: Keyword
 =head3 The INTERFACE_MACRO: Keyword

also demote the second to be a head4 child of the first. Then expand
the T_PTROBJ example to use INTERFACE as an alternative to ALIAS.


  Commit: 17cf16874e21b902874074588d7eef6402d86368
      
https://github.com/Perl/perl5/commit/17cf16874e21b902874074588d7eef6402d86368
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update: CASE

Rewrite this section:

    =head3 The CASE: Keyword


  Commit: 35fc3f0a28eb133e88a2a805efe5ca3bd4140b0c
      
https://github.com/Perl/perl5/commit/35fc3f0a28eb133e88a2a805efe5ca3bd4140b0c
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: add "Using Typemaps" section

Populate this new section (except for the T_PTROBJ subsection, which had
already been added by an earlier commit within this branch).

Note that the "Common typemaps" subsection could probably benefit
from some further expansion by someone familiar with which built-in
T_FOO entries are useful.


  Commit: 95a623b18bf412621576b3d7873045357ddbb768
      
https://github.com/Perl/perl5/commit/95a623b18bf412621576b3d7873045357ddbb768
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod
    M t/porting/known_pod_issues.dat

  Log Message:
  -----------
  perlxs.pod: update "Using XS With C++" section

Rewrite this section:

 =head2 Using XS With C++

Disclaimer: I've never written a proper C++ program. I had to
(literally) dust off my 34-year old copy of Stroustrup(*) and also do
some Googling. Hopefully what I've written is sane.

(*) This was bought back in the days when people used to to learn things
by buying books, and when I thought that I ought to know something about
this newfangled C++ thing. I never got round to reading all of it: I
discovered Perl around the same time, which looked to be a lot more fun.


  Commit: ae9183e8f38f382bb0c84439b029aa728bf3e99b
      
https://github.com/Perl/perl5/commit/ae9183e8f38f382bb0c84439b029aa728bf3e99b
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update MY_CXT section

Revise the text in this section:

    =head2 Safely Storing Static Data in XS


  Commit: f3f436aa510e0ee79efef0c73fee04eaa089af37
      
https://github.com/Perl/perl5/commit/f3f436aa510e0ee79efef0c73fee04eaa089af37
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update EXAMPLES section

Rewrite this section:

     =head1 EXAMPLES

Basically, delete the one big example in this section and instead
provide links to various other examples already present in this document
instead.


  Commit: 9afbfdafc5e26a350cb4c430f5d881e35e598f43
      
https://github.com/Perl/perl5/commit/9afbfdafc5e26a350cb4c430f5d881e35e598f43
  Author: David Mitchell <[email protected]>
  Date:   2025-10-02 (Thu, 02 Oct 2025)

  Changed paths:
    M dist/ExtUtils-ParseXS/lib/perlxs.pod

  Log Message:
  -----------
  perlxs.pod: update CAVEATS, AUTHOR, A DIAGNOSTICS

Tweak the final few sections of perlxs.pod.


Compare: https://github.com/Perl/perl5/compare/fa8e6aa1bd16%5E...9afbfdafc5e2

To unsubscribe from these emails, change your notification settings at 
https://github.com/Perl/perl5/settings/notifications

Reply via email to