Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: eb5764fa6cc690916dcb8de3adc8b0289b141be9
      
https://github.com/Perl/perl5/commit/eb5764fa6cc690916dcb8de3adc8b0289b141be9
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Remove config.h from file skip list

This file doesn't get parsed anyway because it isn't in the MANIFEST,
nor would it work out to parse it in spite of that, if only because it
isn't under source control, and the outputs of this are.


  Commit: 086ad9905f37508dc8ab8868f2fd8441be0a55db
      
https://github.com/Perl/perl5/commit/086ad9905f37508dc8ab8868f2fd8441be0a55db
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Move comments

A block of comments got pushed down in the file by previous commits to
where it no longer made sense.  Move it back to the top.


  Commit: b00a943889ac8ce35827e840c8310f88bb77ffcc
      
https://github.com/Perl/perl5/commit/b00a943889ac8ce35827e840c8310f88bb77ffcc
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Add some comments


  Commit: aa3eb59ab963be99d0cbf512a87639fdcb0331a4
      
https://github.com/Perl/perl5/commit/aa3eb59ab963be99d0cbf512a87639fdcb0331a4
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Move code to earlier in file

This now creates lists much earlier so that future commits that will
need them earlier in the process can do so.


  Commit: f210eba1a5697a1f2baa6570dece31cba24b89dd
      
https://github.com/Perl/perl5/commit/f210eba1a5697a1f2baa6570dece31cba24b89dd
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Rename variable

The new name adds the detail as to what it constrains


  Commit: 37f79c58e90d42f1cc959d9d249658a26118693e
      
https://github.com/Perl/perl5/commit/37f79c58e90d42f1cc959d9d249658a26118693e
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Move more code to earlier in the file

Future commits will need the results of this code earlier than it is now
calculated.


  Commit: 6399e4abe5f5c776fdaaec93b0792f384d2bfdf0
      
https://github.com/Perl/perl5/commit/6399e4abe5f5c776fdaaec93b0792f384d2bfdf0
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Add comments


  Commit: 2784d222e20006c7a95cb269dba499c9b4c0c87e
      
https://github.com/Perl/perl5/commit/2784d222e20006c7a95cb269dba499c9b4c0c87e
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Recategorize libc symbols

These few symbols had been marked as unresolved as to their visibility.
But in fact they are symbols in libc that do need to always be visible,
and there is already a hash for this type.  Move them to the proper
place.  The net effect is no external changes.


  Commit: ada434ed891197848a418c558ad70ee54db47b5f
      
https://github.com/Perl/perl5/commit/ada434ed891197848a418c558ad70ee54db47b5f
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Split an 'if' into two

And reorder them.

This paves the way for the next commit which will change them into
having different actions


  Commit: 943b938012ab5eeb20bebcb9713400d2b4712e8e
      
https://github.com/Perl/perl5/commit/943b938012ab5eeb20bebcb9713400d2b4712e8e
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Improve detection of system symbols

The heuristic previously used had many false positives, so it thought
symbols were for the system that really weren't.  This tightens it up,
and to avoid breaking any existing code that might be relying on those
miscategorized symbols, adds them to the list of unresolved visibility
ones, so that they remain visibile.


  Commit: c33265be379f7614ff7754c021c397511b739294
      
https://github.com/Perl/perl5/commit/c33265be379f7614ff7754c021c397511b739294
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Move pattern definition to only use

The pattern doesn't get recompiled each time through the loop; it's
easier to understand if the definition and use are near each other


  Commit: f3e59cad188525aef74248bf1b1bb18de15814e6
      
https://github.com/Perl/perl5/commit/f3e59cad188525aef74248bf1b1bb18de15814e6
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Rename variable

The new name reflects the source of the data being examined.


  Commit: 13b09f53da8f8311d0441614187a9e9bf1e86a04
      
https://github.com/Perl/perl5/commit/13b09f53da8f8311d0441614187a9e9bf1e86a04
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Save hash elem into $var to make more readable


  Commit: ada54ac219400f0885f8540897890692051db556
      
https://github.com/Perl/perl5/commit/ada54ac219400f0885f8540897890692051db556
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Move declaration

This is an internal value.  The declarations at the top of the program
are for data that someone might want to change.


  Commit: 9ef0d33ac69fb4efc8ba2053d1df2745f7643d77
      
https://github.com/Perl/perl5/commit/9ef0d33ac69fb4efc8ba2053d1df2745f7643d77
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Use a separate loop for a hash

This is in preparation for it to do things differently than the other
hashes in the loop it previously was in.


  Commit: 404a19b06bad5293d33b469beefe0e7b975b5832
      
https://github.com/Perl/perl5/commit/404a19b06bad5293d33b469beefe0e7b975b5832
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Remove some commented out code

I no longer think this might ever be useful


  Commit: ac8278ef3fd0a5038c9ce45038e1e02aff7c9c2f
      
https://github.com/Perl/perl5/commit/ac8278ef3fd0a5038c9ce45038e1e02aff7c9c2f
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Pass file name to subroutine

This will be used in future commits for warnings and errors


  Commit: 6355afcfa251eb4568986b92c69f0eded0d1d1db
      
https://github.com/Perl/perl5/commit/6355afcfa251eb4568986b92c69f0eded0d1d1db
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Extract common code into a function

These are just a few lines now, but future commits will make this
function bigger


  Commit: b0655cabd0c4543b32e7b1680cb0220c68facdfe
      
https://github.com/Perl/perl5/commit/b0655cabd0c4543b32e7b1680cb0220c68facdfe
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Add sub-hash

This is in preparation for having a different sub-hash at the same level.


  Commit: 1fd7f0165baef683042b69ea467c7bdfd86ce5bc
      
https://github.com/Perl/perl5/commit/1fd7f0165baef683042b69ea467c7bdfd86ce5bc
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M embed.h
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Handle case of multiple flags for an element

Some symbols are #defined in multiple places in the input; based
typically on different preprocessor conditionals.  We want to use the
definition which has the widest visibility.

This change showed that USE_STDIO had wrongly been undefined for the
past few commits in blead.  It is no longer actually ever defined by
perl.


  Commit: 46c37430a017ab0ac4779485d4de088ccefe8d11
      
https://github.com/Perl/perl5/commit/46c37430a017ab0ac4779485d4de088ccefe8d11
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Add constraints

I did an inspection of the source, and found these few symbols that will
not be defined for any XS code.


  Commit: e4cec3d716520027965b120d10a7859f2d3359a0
      
https://github.com/Perl/perl5/commit/e4cec3d716520027965b120d10a7859f2d3359a0
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Swap order of conditionals

It is easier to understand when the nearly trivial case is gotten out of
the way first.


  Commit: 8178bdb9ed858323586889b6d1201a3185034922
      
https://github.com/Perl/perl5/commit/8178bdb9ed858323586889b6d1201a3185034922
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Use 'next' to remove an else

Then we outdent the contents of that else, and reflow, which makes this
long-ish section of code a bit shorter.


  Commit: 21661221454343166c67635b5803538cc7acdcd9
      
https://github.com/Perl/perl5/commit/21661221454343166c67635b5803538cc7acdcd9
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Add some comments


  Commit: 38df3f38350d96d9826350488efd4f4453a2168d
      
https://github.com/Perl/perl5/commit/38df3f38350d96d9826350488efd4f4453a2168d
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Formalize reserved Perl symbols

This creates a regular expression pattern of names that we feel free to
expose to XS code's namespace.  Hence they are names reserved for our use,
and should any conflicts arise, the module needs to change, not us.

Naturally, the pattern is pretty restrictive.  It is:

    Any symbol beginning with "PL_"
    Any symbol containing /perl/i, with both sides delimitted
    Any symbol containing "PERL"

Any other spelling that we expose could be considered to pollute the XS
code space.  We feel free to do that all the time.  Any new function's
short name will do that.

And we generally feel free to create macros with arbitrary names which
could conflict with an existing XS name.

Some important potential conflicts are:

New keywords:  We create an exposed KEY_foo macro.  Some existing
modules use some of these.  My grep of CPAN shows maybe a dozen of these
get used; mostly KEY_END.

config.h is full of symbols like HAS_foo, I_bar, and others that are all
exposed.  I don't imagine we can claim to reserve any symbol beginning
with either of those.

Informally, myself and others have used a trailing underscore to
indicate a private symbol.  There are a few distributions that use some
of these anyway.  And there has been pushback when new short symbols
that use this convention have been added.

I would like to get a formal rule about use of this convention.  There
are 200+ of these currently.  We could reserve any names with trailing
underscores, or if that is too much, any ending in, say, 'pl_' or 'PL_'.

We have 3000+ undocumented macro names that don't end in underscores and
which are currently visible to XS code.  This number includes the
KEY_foo ones, but not the ones in config.h.

To deal with namespace pollution, we have had the -DNO_SHORT_NAMES
Configure option for use just with embedded perls.  This hasn't worked
at least since we added inline functions, and it always applied to only
functions.  I have a WIP to get this to work again, and to extend it to
work with documented macros.  It just occurred to me how to make this be
customizable, so that downstream someone could add a list of symbols
that should only exist as 'Perl_foo', and then recompile


  Commit: d3cd2a8764d1de52f05c5399bf5960b3ccc09b05
      
https://github.com/Perl/perl5/commit/d3cd2a8764d1de52f05c5399bf5960b3ccc09b05
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Assume Perl reserved symbols are visible

Unless there is an indication otherwise.


  Commit: c0955b6422a96c7d16411cbe9ae4c08fab778705
      
https://github.com/Perl/perl5/commit/c0955b6422a96c7d16411cbe9ae4c08fab778705
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/HeaderParser.pm

  Log Message:
  -----------
  regen/HeaderParser: _reduce_conds: Return more than a bool

This changes this function to stringify the result into a preprocessor
conditional expression, instead of just a bool 0 or 1.  This gives the
caller more information.

This doesn't change the outcome of callers who are expecting a boolean,
as any string now returned evaluates to true.


  Commit: 6731bcd053a0deaa0cb1c81a6526000de941c2cf
      
https://github.com/Perl/perl5/commit/6731bcd053a0deaa0cb1c81a6526000de941c2cf
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M embed.h
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Compare cpp visibility with desired

This commit creates a function that calculates what C preprocessor
constraints there are on the visibility of a #define'd symbol.

It then compares that with what the desired visibility is, based as
prior commits have determined, and reconciles any discrepancies.  It
warns if the symbol is supposed to be visible, but cpp makes it not so.
It adds it to the list of symbols to undefine if it is visible, but is
not supposed to be so.

In order to make this commit somewhat smaller with respect to code
changes, it assumes anything that is visible to extensions is visible
everywhere.  This entailed adding a large number of symbols to the list
of symbols to not #undef, in order to not change embed.h.  The commit
after the next one will fix this, and those symbols will be removed from
the list in that commit.


  Commit: 5ed1b2fcbe3de3ef13cb1b2f5532b0448d3f75de
      
https://github.com/Perl/perl5/commit/5ed1b2fcbe3de3ef13cb1b2f5532b0448d3f75de
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Add cpp constraints for .h files

Many of the header files in our source have guards that keep them from
being recursively called, with a convention as to how their name is
derived from the file name.  This commit changes to now consider these
when computing what a cpp conditional evaluates to.  It follows the
convention, except in those few places where it is violated, and sets up
the infrastructure so that this mechanism could be applied for other
cases.

Since this commit was originally written, all but one header file has
been changed to follow the convention, so after rebasing,  only one line
is now being added.


  Commit: 46bf0cf5e8ba9da6f993171aec35abb65f3a1f1d
      
https://github.com/Perl/perl5/commit/46bf0cf5e8ba9da6f993171aec35abb65f3a1f1d
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M embed.h
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Consider symbols visible only to extensions

Two commits ago, the code was extended to compare the C preprocessor
visibility of a symbol with what the desired visibility of a symbol is.
It assumed that everything not constrained to core was visible
everywhere.  This commit extends that to look for being visible only to
extensions.  As a result, the large number of symbols added to the
override list in that commit are now removed.


  Commit: 4b67bbf7f6a57e39fa9683e85ecf15b30ff1b8a4
      
https://github.com/Perl/perl5/commit/4b67bbf7f6a57e39fa9683e85ecf15b30ff1b8a4
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M embed.h
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Also consider #undef's

This code looks to see what conditions must apply before a #define
happens.  This commit extends that to also look for #undef commands.

The end result is that for symbols that are visible to XS code, but
aren't supposed to be, embed.h contains an #undef so it isn't visible.
But if it already has been #undef'ed, there is no need to do this.

But a symbol can be defined and undefined many times, and the conditions
for doing an #undef may be different than what the symbol was #defined
under.

The consequences of not realizing that a symbol gets undefined are
simply that we generate an unnecessary #undef.  The consequences of
failing to generate one when the symbol is defined is that it is
visibile when not intended to be so.

So, there are various restrictions to try to make sure that we don't
err in the latter direction.


  Commit: 682cd222bd5a2d7bf29f8a203fbc7791385c7bf5
      
https://github.com/Perl/perl5/commit/682cd222bd5a2d7bf29f8a203fbc7791385c7bf5
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Remove no longer used sub


  Commit: d4247bb256a4d2952b8ab6c487adb91edb6f6710
      
https://github.com/Perl/perl5/commit/d4247bb256a4d2952b8ab6c487adb91edb6f6710
  Author: Karl Williamson <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M embed.h
    M sbox32_hash.h

  Log Message:
  -----------
  sbox32_hash.h: Add #undef's

These case statements need not be visible outside this header.  Putting
these here avoids cluttering up embed.h, where the same #undef lines
would otherwise be generated


Compare: https://github.com/Perl/perl5/compare/ff31f47a54f1...d4247bb256a4

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

Reply via email to