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