Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 25426f6691f1c11d64d65ba691039bdf89e32a0c
      
https://github.com/Perl/perl5/commit/25426f6691f1c11d64d65ba691039bdf89e32a0c
  Author: Karl Williamson <[email protected]>
  Date:   2026-02-11 (Wed, 11 Feb 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Move declaration closer to first use


  Commit: 954ac2d6d4749bbb07e6e8e9b1682ae6bdb718a7
      
https://github.com/Perl/perl5/commit/954ac2d6d4749bbb07e6e8e9b1682ae6bdb718a7
  Author: Karl Williamson <[email protected]>
  Date:   2026-02-11 (Wed, 11 Feb 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Replace $_ by a mnemonic name

It's easier to follow


  Commit: bfe7acce9a489ff73a53137bfeae0bb3c17f9eae
      
https://github.com/Perl/perl5/commit/bfe7acce9a489ff73a53137bfeae0bb3c17f9eae
  Author: Karl Williamson <[email protected]>
  Date:   2026-02-11 (Wed, 11 Feb 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Use equivalent expression for conditionals

Currently $args_assert_line is the complement of $has_mflag.  But future
commits will change that, and these conditionals will want the new
definition.


  Commit: bafb003b3b0fc17fcc1466584883ce145bcd7be1
      
https://github.com/Perl/perl5/commit/bafb003b3b0fc17fcc1466584883ce145bcd7be1
  Author: Karl Williamson <[email protected]>
  Date:   2026-02-11 (Wed, 11 Feb 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: Split #if..#else into two #if's

This is in preparation for a future commit when some circumstances will
lead to there not being an #else.


  Commit: 5e764f515d03bda52736280c2d57ec2b27a2aa02
      
https://github.com/Perl/perl5/commit/5e764f515d03bda52736280c2d57ec2b27a2aa02
  Author: Karl Williamson <[email protected]>
  Date:   2026-02-11 (Wed, 11 Feb 2026)

  Changed paths:
    M regen/embed.pl

  Log Message:
  -----------
  embed.pl: White space only

Indent, in preparation for next commit which will place these lines in a
new block.


  Commit: 4d526fc8af14c3f002b4c7d5e146f7a21a1750d6
      
https://github.com/Perl/perl5/commit/4d526fc8af14c3f002b4c7d5e146f7a21a1750d6
  Author: Karl Williamson <[email protected]>
  Date:   2026-02-11 (Wed, 11 Feb 2026)

  Changed paths:
    M Cross/Makefile-cross-SH
    M MANIFEST
    M Makefile.SH
    M embed.fnc
    M embed.h
    A long_names.c
    M plan9/mkfile
    M proto.h
    M regen/embed.pl
    M t/porting/regen.t
    M vms/descrip_mms.template
    M win32/GNUmakefile
    M win32/Makefile

  Log Message:
  -----------
  embed.pl: Create long_names.c and populate it

This replaces the defective method previously used to automatically
generate long name (prefixed with "Perl_") synonyms for macros that have
an implicit thread context.

That method had been in place since 5.43.2.  Leon Timmermans pointed out
the flaw (https://github.com/Perl/perl5/pull/23458).  The long name
synonyms have the thread context passed explicitly.  The method worked
by discarding the explicit parameter, relying on the implicit one.  This
is valid if and only if the explicit value matches the implicit value.

This is always the case when the caller is from inside the perl core.
When the macro is not visible outside core, we know it can only be
called from inside, so the method is retained in that case.

Otherwise, it still is quite likely to be the case, but not always.  In
an application that contains more than one embedded perl instance, that
application could be intermixing calls to the instances, using the long
name forms, and the explicit thread context might not match the implicit
one.

The solution adopted here that works for this case (and I can't think of
another way) is to create an actual function for each long name synonym.
The function merely calls its respective macro.  The embedding
application calls the function with the correct thread, and the wrapped
macro gets that properly.

Perl has long automatically generated short name macros for functions
listed in embed.fnc.  A consequence of this commit is that it is now
possible to go the other direction, to start with a short name macro,
and automatically generate a long name function for it.  This means we
can swap implementations at will, without affecting any calling source
code.

That doesn't work for fancy macros that use the C preprocessor language
for things, like the '#' and '##' commands to it, or expanding a
single argument to a list, such as 'STR_WITH_LEN' does.

And the behavior isn't precisely synonymous if the macro evaluates an
argument more than once, and is called with that argument being an
expression with side effects.


Compare: https://github.com/Perl/perl5/compare/71307cc9a828...4d526fc8af14

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

Reply via email to