Branch: refs/heads/blead
Home: https://github.com/Perl/perl5
Commit: b9eeeef8c043fb0238a07e64636815bf327a6562
https://github.com/Perl/perl5/commit/b9eeeef8c043fb0238a07e64636815bf327a6562
Author: Lukas Mai <[email protected]>
Date: 2025-02-16 (Sun, 16 Feb 2025)
Changed paths:
M op.c
M t/op/sub.t
Log Message:
-----------
op.c: re-enable coderef-in-stash optimization
When seeing 'sub foo { ... }', perl does not need to allocate a full
typeglob (with the subroutine being stored in the CODE slot). Instead,
it can just store a coderef directly in the stash.
This optimization was first announced in perl5220delta:
> - Subroutines in packages no longer need to be stored in typeglobs:
> declaring a subroutine will now put a simple sub reference directly
> in the stash if possible, saving memory. The typeglob still
> notionally exists, so accessing it will cause the stash entry to be
> upgraded to a typeglob (i.e. this is just an internal implementation
> detail). This optimization does not currently apply to XSUBs or
> exported subroutines, and method calls will undo it, since they
> cache things in typeglobs. [GH #13392]
However, due to a bug this optimization didn't actually work except for
package main (GH #15671). The issue was fixed in v5.27.5, but the fix
was backed out again in v5.27.9 because of CPAN breakage.
This patch re-enables the optimization because I want to see what the
current state of CPAN breakage is.
Commit: 40812846772742f13ee5ffc83f4be0c451f24c62
https://github.com/Perl/perl5/commit/40812846772742f13ee5ffc83f4be0c451f24c62
Author: Lukas Mai <[email protected]>
Date: 2025-02-16 (Sun, 16 Feb 2025)
Changed paths:
M pod/perldelta.pod
Log Message:
-----------
perldelta for coderef-in-stash optimization
Compare: https://github.com/Perl/perl5/compare/7fdc8f34fd20...408128467727
To unsubscribe from these emails, change your notification settings at
https://github.com/Perl/perl5/settings/notifications