[Perl/perl5] c79fe2: S_new_SV: args unused, static inline & defined, re...

2024-06-12 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: c79fe2b42ae2a540552f87251aa0e36a060dd584
  
https://github.com/Perl/perl5/commit/c79fe2b42ae2a540552f87251aa0e36a060dd584
  Author: Richard Leach 
  Date:   2024-06-12 (Wed, 12 Jun 2024)

  Changed paths:
M embed.fnc
M proto.h
M sv.h
M sv_inline.h

  Log Message:
  ---
  S_new_SV: args unused, static inline & defined, rename with Perl_ prefix

When sv_inline.h was created in
https://github.com/Perl/perl5/commit/75acd14e43f2ffb698fc7032498f31095b56adb5
and a number of things moved into it, the S_new_SV debugging function should
have been made PERL_STATIC_INLINE and given the Perl_ prefix. This commit
now does those things. It also marks the arguments to Perl_new_SV as
PERL_UNUSED_ARG, reducing warnings on some builds.

Additionally, now that we can use inline functions, the new_SV() macro is
now just a call to this inline function, rather than being that only on
DEBUG_LEAKING_SCALARS builds and a multi-line macro the rest of the time.



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


[Perl/perl5] 864b12: perlguts.pod - add some description of real vs fak...

2024-06-12 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 864b1299a6432ecfb65be2e5c9bf83988b0da0da
  
https://github.com/Perl/perl5/commit/864b1299a6432ecfb65be2e5c9bf83988b0da0da
  Author: Richard Leach 
  Date:   2024-06-12 (Wed, 12 Jun 2024)

  Changed paths:
M pod/perlguts.pod

  Log Message:
  ---
  perlguts.pod - add some description of real vs fake AVs



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


[Perl/perl5] 06e421: S_fold_constants: remove early SvREADONLY(sv) to a...

2024-06-11 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 06e421c559c63975f29c35ba3588a0e6b0c75eca
  
https://github.com/Perl/perl5/commit/06e421c559c63975f29c35ba3588a0e6b0c75eca
  Author: Richard Leach 
  Date:   2024-06-11 (Tue, 11 Jun 2024)

  Changed paths:
M ext/Devel-Peek/t/Peek.t
M op.c
M t/op/undef.t

  Log Message:
  ---
  S_fold_constants: remove early SvREADONLY(sv) to allow SvIsCOW(sv)

Standard CONST PVs have the IsCOW flag set, meaning that COW can
be used when assigning the CONST to a variable, rather than making
a copy of the buffer. CONST PVs arising from constant folding have
been lacking this flag, leading to unnecessary copying of PV buffers.

This seems to have occurred because a common branch in S_fold_constants
marks SVs as READONLY before the new CONST OP is created. When the OP
is created, the Perl_ck_svconst() check function is called - this is
the same as when a standard CONST OP is created. If the SV is not
already marked as READONLY, the check function will try to set IsCOW
if it is safe to do so, then in either case will make sure that the
READONLY flag is set.

This commit therefore removes the SvREADONLY(sv) statement from
S_fold_constants(), allowing Perl_ck_svconst() to set the IsCOW
and READONLY flags itself. Minor test updates are also included.



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


[Perl/perl5] 845643: Perl_leave_adjust_stacks: additional efficiency fo...

2024-06-11 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 84564318489ffdf8dcabe85187fe28b06d0c7537
  
https://github.com/Perl/perl5/commit/84564318489ffdf8dcabe85187fe28b06d0c7537
  Author: Richard Leach 
  Date:   2024-06-11 (Tue, 11 Jun 2024)

  Changed paths:
M pp_hot.c

  Log Message:
  ---
  Perl_leave_adjust_stacks: additional efficiency for mortal copies

The existing code has a fast path for copying a SVt_NULL or SVt_IV. For all
other types, a new SVt_NULL is passed into sv_setsv_flags, where it will
be upgraded into the required type by sv_upgrade().

This commit makes two changes:
1) Special case copying a SVt_NV where possible, as sv_setsv_flags does.
2) It's safe and more efficient to directly create a new type of SVt_PVNV
   or below, rather than upgrade it later, so do that.



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


[Perl/perl5] a902d9: Perl_op_convert_list: No unnecessary processing of...

2024-06-10 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: a902d92a78262a0fd111789742f9c9e2a7fa2f42
  
https://github.com/Perl/perl5/commit/a902d92a78262a0fd111789742f9c9e2a7fa2f42
  Author: Richard Leach 
  Date:   2024-06-11 (Tue, 11 Jun 2024)

  Changed paths:
M op.c

  Log Message:
  ---
  Perl_op_convert_list: No unnecessary processing of unfolded CONSTs

When Perl_op_convert_list is called to stringify a CONST OP, but the
`op_folded` flag has not been passed in, a fair amount of activity
occurs before the function returns the original CONST OP unchanged.
After this commit, the CONST OP is returned directly.

For example, prior to this commit, given the statement 'print "2\n',
the function is passed a simple CONST OP:

1const SVOP(0x55c99432c0b8) ===> [SELF]
 PARENT ===> [0x0]
 FLAGS = (SCALAR,SLABBED)
 SV = PV("2\n"\0)

List context is forced upon it to yield:

2list LISTOP(0x55c99432c048) ===> [0x0]
 PARENT ===> [0x0]
 FLAGS = (UNKNOWN,KIDS,SLABBED)
 |
3+--pushmark OP(0x55c99432c088) ===> [SELF]
 |   FLAGS = (SCALAR,SLABBED,MORESIB)
 |
1+--const SVOP(0x55c99432c0b8) ===> [SELF]
 FLAGS = (SCALAR,SLABBED)
 SV = PV("2\n"\0)

The pushmark is nullified and the parent type set:

2stringify LISTOP(0x55c99432c048) ===> [0x0]
 PARENT ===> [0x0]
 FLAGS = (UNKNOWN,KIDS,SLABBED)
 |
3+--null (ex-pushmark) OP(0x55c99432c088) ===> [SELF]
 |   FLAGS = (SCALAR,SLABBED,MORESIB)
 |
1+--const SVOP(0x55c99432c0b8) ===> [SELF]
 FLAGS = (SCALAR,SLABBED)
 SV = PV("2\n"\0)

CHECKOP sets the number of non-null KIDS for the stringify:

2stringify LISTOP(0x55c99432c048) ===> [0x0]
 PARENT ===> [0x0]
 FLAGS = (UNKNOWN,KIDS,SLABBED)
 PRIVATE = (0x1)
 |
3+--null (ex-pushmark) OP(0x55c99432c088) ===> [SELF]
 |   FLAGS = (SCALAR,SLABBED,MORESIB)
 |
1+--const SVOP(0x55c99432c0b8) ===> [SELF]
 FLAGS = (SCALAR,SLABBED)
 SV = PV("2\n"\0)

Then it is constant folded back to:

1const SVOP(0x55c99432c0b8) ===> [SELF]
 PARENT ===> [0x0]
 FLAGS = (SCALAR,SLABBED)
 SV = PV("2\n"\0)



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


[Perl/perl5] 4d119e: Fcntl: export File Sealing flags on request

2024-03-12 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 4d119e96fa1d2fc914987fecf8d14272e4766be7
  
https://github.com/Perl/perl5/commit/4d119e96fa1d2fc914987fecf8d14272e4766be7
  Author: Richard Leach 
  Date:   2024-03-12 (Tue, 12 Mar 2024)

  Changed paths:
M ext/Fcntl/Fcntl.pm
M ext/Fcntl/Makefile.PL

  Log Message:
  ---
  Fcntl: export File Sealing flags on request

On many Unix-like platforms, anonymous files can be created using
memfd_create(2). Where supported, File sealing provides a mechanism
whereby a process can ensure that the underlying shared memory cannot
be unexpectedly tampered with.

This commit adds the flags for this mechanism to the Fcntl module,
from where they can be optionally exported.

See, for example: https://man7.org/linux/man-pages/man2/memfd_create.2.html



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


[Perl/perl5] 93ff35: Fcntl: export File Sealing flags on request (GH#22071

2024-03-09 Thread Richard Leach via perl5-changes
  Branch: refs/heads/smoke-me/hydahy/fcntl_seals
  Home:   https://github.com/Perl/perl5
  Commit: 93ff35ffecdd7cc51f11a8b87ebdd1a92e1e5cdd
  
https://github.com/Perl/perl5/commit/93ff35ffecdd7cc51f11a8b87ebdd1a92e1e5cdd
  Author: Richard Leach 
  Date:   2024-03-09 (Sat, 09 Mar 2024)

  Changed paths:
M ext/Fcntl/Fcntl.pm
M ext/Fcntl/Makefile.PL

  Log Message:
  ---
  Fcntl: export File Sealing flags on request (GH#22071



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


[Perl/perl5] 12d9d9: regcomp.c - Exclude split STRING from /x default m...

2024-03-08 Thread Richard Leach via perl5-changes
  Branch: refs/heads/yves/hydahy_gh18032
  Home:   https://github.com/Perl/perl5
  Commit: 12d9d972e1e6d0f79c915e80e43b1fe2619c2538
  
https://github.com/Perl/perl5/commit/12d9d972e1e6d0f79c915e80e43b1fe2619c2538
  Author: Richard Leach 
  Date:   2024-03-08 (Fri, 08 Mar 2024)

  Changed paths:
M ext/re/re.pm
M pod/perlfunc.pod
M pod/perlre.pod
M regcomp.c
M t/op/split.t

  Log Message:
  ---
  regcomp.c - Exclude split STRING from /x default modifiers.

We have a magic special case with split STRING where if the STRING
is a single space character we trigger awk emaulation mode, which
causes split to ignore leading whitespace, and to split on \s+.

When default regex modifier support was added to perl we didn't notice
that it doesn't make sense for the /x modifiers to change the behavior
of a STRING pattern in split. STRING patterns are NOT parsed using the
normal pattern parsing rules, for instance "\s+" would split on 's'
characters, not on whitepace. The /x modifier is designed to change the
rules for *pattern* parsing, most notably by adding support for comments
and ignoring whitespace in pattern definitions. This feels to me like a
feature that should only apply to cases where a true pattern is parsed,
such as where \s+ would be treated as the special pattern for matching
whitespace and not a literal 's' character. Historically there was NO way
to create a string pattern with the /x pattern enabled, to enable /x the
string MUST have been fed into a true pattern parsing construct like
qr// m// or s///.

By excluding STRING patterns from /x notation, we ensure that the
special case of awk emulation for C is preserved.

Note that a default /x modifier *does* change the behavior of
C, as the pattern in that case is parsed the same as
C or C.

With changes by Yves Orton

Fixes #18032



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


[Perl/perl5] ff74e3: Preserve split " " behaviour when whitespace modif...

2024-03-07 Thread Richard Leach via perl5-changes
  Branch: refs/heads/yves/hydahy_gh18032
  Home:   https://github.com/Perl/perl5
  Commit: ff74e3ca7eb82a4ac2ea0f19de0b98ec656515eb
  
https://github.com/Perl/perl5/commit/ff74e3ca7eb82a4ac2ea0f19de0b98ec656515eb
  Author: Richard Leach 
  Date:   2024-03-07 (Thu, 07 Mar 2024)

  Changed paths:
M ext/re/re.pm
M pod/perlfunc.pod
M pod/perlre.pod
M regcomp.c
M t/op/split.t

  Log Message:
  ---
  Preserve split " " behaviour when whitespace modifiers are present

Prior to this commit, the " " pattern would be collapsed into
the empty "" pattern if the split was within scope of `use re`
whitespace modifiers. Since this split pattern is documented
as being a special case, that behaviour is undesirable.

With changes by Yves Orton

Fixes #18032



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


[Perl/perl5] 5236da: Preserve split " " behaviour when whitespace modif...

2024-03-07 Thread Richard Leach via perl5-changes
  Branch: refs/heads/yves/hydahy_gh18032
  Home:   https://github.com/Perl/perl5
  Commit: 5236da55bb062fe5d1783d0983f5abb69d599182
  
https://github.com/Perl/perl5/commit/5236da55bb062fe5d1783d0983f5abb69d599182
  Author: Richard Leach 
  Date:   2024-03-07 (Thu, 07 Mar 2024)

  Changed paths:
M ext/re/re.pm
M pod/perlfunc.pod
M pod/perlre.pod
M regcomp.c
M t/op/split.t

  Log Message:
  ---
  Preserve split " " behaviour when whitespace modifiers are present

Prior to this commit, the " " pattern would be collapsed into
the empty "" pattern if the split was within scope of `use re`
whitespace modifiers. Since this split pattern is documented
as being a special case, that behaviour is undesirable.

With changes by Yves Orton

Fixes #18032



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


[Perl/perl5] 81ae79: Preserve split " " behaviour when whitespace modif...

2024-03-07 Thread Richard Leach via perl5-changes
  Branch: refs/heads/yves/hydahy_gh18032
  Home:   https://github.com/Perl/perl5
  Commit: 81ae79784712d394a12444ac72a0d3dbb07fa2f9
  
https://github.com/Perl/perl5/commit/81ae79784712d394a12444ac72a0d3dbb07fa2f9
  Author: Richard Leach 
  Date:   2024-03-07 (Thu, 07 Mar 2024)

  Changed paths:
M ext/re/re.pm
M pod/perlfunc.pod
M pod/perlre.pod
M regcomp.c
M t/op/split.t

  Log Message:
  ---
  Preserve split " " behaviour when whitespace modifiers are present

Prior to this commit, the " " pattern would be collapsed into
the empty "" pattern if the split was within scope of `use re`
whitespace modifiers. Since this split pattern is documented
as being a special case, that behaviour is undesirable.

With changes by Yves Orton

Fixes #18032



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


[Perl/perl5] 06ec88: Preserve split " " behaviour when whitespace modif...

2024-03-07 Thread Richard Leach via perl5-changes
  Branch: refs/heads/yves/hydahy_gh18032
  Home:   https://github.com/Perl/perl5
  Commit: 06ec88a931b1e46a711b53ea8280316c8541caf8
  
https://github.com/Perl/perl5/commit/06ec88a931b1e46a711b53ea8280316c8541caf8
  Author: Richard Leach 
  Date:   2024-03-07 (Thu, 07 Mar 2024)

  Changed paths:
M regcomp.c
M t/op/split.t

  Log Message:
  ---
  Preserve split " " behaviour when whitespace modifiers are present

Prior to this commit, the " " pattern would be collapsed into
the empty "" pattern if the split was within scope of `use re`
whitespace modifiers. Since this split pattern is documented
as being a special case, that behaviour is undesirable.

With changes by Yves Orton

Fixes #18032



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


[Perl/perl5] 0d564a: av.h - document new newAV_mortal macro

2024-02-05 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 0d564a3d013287cf0880fdc3264f30c20fe6188d
  
https://github.com/Perl/perl5/commit/0d564a3d013287cf0880fdc3264f30c20fe6188d
  Author: Richard Leach 
  Date:   2024-02-05 (Mon, 05 Feb 2024)

  Changed paths:
M av.h

  Log Message:
  ---
  av.h - document new newAV_mortal macro




[Perl/perl5] 0f9485: Version bumps: File::Glob and Hash::Util

2024-01-29 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 0f9485cc78e57077433bdbe29fc9c4096361250f
  
https://github.com/Perl/perl5/commit/0f9485cc78e57077433bdbe29fc9c4096361250f
  Author: Richard Leach 
  Date:   2024-01-29 (Mon, 29 Jan 2024)

  Changed paths:
M ext/File-Glob/Glob.pm
M ext/Hash-Util/lib/Hash/Util.pm

  Log Message:
  ---
  Version bumps: File::Glob and Hash::Util




[Perl/perl5] f2d70d: Hash::Util::bucket_array - use av_push_simple on n...

2024-01-28 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: f2d70d2486d4c7e6d0324da15e8bdaaf7f9048b3
  
https://github.com/Perl/perl5/commit/f2d70d2486d4c7e6d0324da15e8bdaaf7f9048b3
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/Hash-Util/Util.xs

  Log Message:
  ---
  Hash::Util::bucket_array - use av_push_simple on new AVs


  Commit: b8f7169e69a855dab27ba8f4eb973b4221be6254
  
https://github.com/Perl/perl5/commit/b8f7169e69a855dab27ba8f4eb973b4221be6254
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M av.h
M embed.fnc
M proto.h

  Log Message:
  ---
  av.h - add newAV_mortal macro


  Commit: f5c91d78a509401203ee7cd70746098b58f32be6
  
https://github.com/Perl/perl5/commit/f5c91d78a509401203ee7cd70746098b58f32be6
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/Hash-Util-FieldHash/FieldHash.xs

  Log Message:
  ---
  Hash-Util-FieldHash/FieldHash.xs - use AV _simple close to newAV


  Commit: 3ac780f7a394805979020a5a6d545f109df37a03
  
https://github.com/Perl/perl5/commit/3ac780f7a394805979020a5a6d545f109df37a03
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/Hash-Util-FieldHash/lib/Hash/Util/FieldHash.pm

  Log Message:
  ---
  FieldHash.pm - version bump


  Commit: 8f6ecd0818d7ae6211e5e05642c967976f1b3676
  
https://github.com/Perl/perl5/commit/8f6ecd0818d7ae6211e5e05642c967976f1b3676
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/File-Glob/Glob.xs

  Log Message:
  ---
  File-Glob/Glob.xs - more efficient mortal AV creation


  Commit: 42680180a524aafa4dc87b408c342f944acc0de2
  
https://github.com/Perl/perl5/commit/42680180a524aafa4dc87b408c342f944acc0de2
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/mro/mro.xs

  Log Message:
  ---
  mro/mro.xs - more efficient AV/HV creation and fill


  Commit: cc3bc4ac1281e8018c5d88e40a1bf37e6253c3f4
  
https://github.com/Perl/perl5/commit/cc3bc4ac1281e8018c5d88e40a1bf37e6253c3f4
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/attributes/attributes.xs

  Log Message:
  ---
  attributes/attributes.xs - more efficient mortal hek creation


  Commit: e6c95c59cf1688f97f4243799395101d0466327d
  
https://github.com/Perl/perl5/commit/e6c95c59cf1688f97f4243799395101d0466327d
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/XS-APItest/APItest.xs

  Log Message:
  ---
  XS-APItest/APItest.xs - more efficient AV creation & fill


  Commit: 4237b291bc8094c5d5e41db8fc94b5c1ed9ea854
  
https://github.com/Perl/perl5/commit/4237b291bc8094c5d5e41db8fc94b5c1ed9ea854
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/PerlIO-encoding/encoding.xs

  Log Message:
  ---
  PerlIO-encoding/encoding.xs - more efficient mortal SV creation


  Commit: 61ab81fe6cd8a70b3010f8e049ce28447060b6fe
  
https://github.com/Perl/perl5/commit/61ab81fe6cd8a70b3010f8e049ce28447060b6fe
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/PerlIO-encoding/encoding.pm

  Log Message:
  ---
  PerlIO-encoding/encoding.pm - version bump


  Commit: f910458e3b8a39c38dcebe82097e5a456e8fdf7c
  
https://github.com/Perl/perl5/commit/f910458e3b8a39c38dcebe82097e5a456e8fdf7c
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/POSIX/POSIX.xs

  Log Message:
  ---
  POSIX/POSIX.xs - more efficient mortal PV creation


  Commit: 95b5d5d1ab7916e982e9949062b034cb35678a35
  
https://github.com/Perl/perl5/commit/95b5d5d1ab7916e982e9949062b034cb35678a35
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/Hash-Util-FieldHash/FieldHash.xs
M ext/mro/mro.xs

  Log Message:
  ---
  mro/mro.xs - more efficient to create PV type rather than a NULL to 
immediately upgrade


  Commit: 196e612fd190f48f2a7e0d0f9d7c82ffb920e0cf
  
https://github.com/Perl/perl5/commit/196e612fd190f48f2a7e0d0f9d7c82ffb920e0cf
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/mro/mro.pm

  Log Message:
  ---
  mro/mro.pm - version bump


  Commit: 90a628aca7348a6812efd0c0ee15dff833c68fdb
  
https://github.com/Perl/perl5/commit/90a628aca7348a6812efd0c0ee15dff833c68fdb
  Author: Richard Leach 
  Date:   2024-01-28 (Sun, 28 Jan 2024)

  Changed paths:
M ext/DynaLoader/dl_aix.xs
M ext/DynaLoader/dl_dllload.xs
M ext/DynaLoader/dl_dlopen.xs
M ext/DynaLoader/dl_dyld.xs
M ext/DynaLoader/dl_freemint.xs
M ext/DynaLoader/dl_hpux.xs

  Log Message:
  ---
  Dynaloader/dl* - create IV directly to 

[Perl/perl5] 7d35a2: Request 9e298ab to be included in perl-5.38.1

2023-09-19 Thread Richard Leach via perl5-changes
  Branch: refs/heads/maint-votes
  Home:   https://github.com/Perl/perl5
  Commit: 7d35a21a9b8160037b202a65a0c3ed24459ef261
  
https://github.com/Perl/perl5/commit/7d35a21a9b8160037b202a65a0c3ed24459ef261
  Author: Richard Leach 
  Date:   2023-09-19 (Tue, 19 Sep 2023)

  Changed paths:
M votes-5.38.xml

  Log Message:
  ---
  Request 9e298ab to be included in perl-5.38.1

Since 399fef9,
trailing elements in an array that has been unshifted and resized
might not be properly Zero() initialized. This is because of faulty
arithmetic when calculating `to_null`, the number of elements to
initialize, when the array was only partially shifted.

This commit corrects the arithmetic, adds comments arount the
calculation of `to_null`, and adds a test based upon the case
provided in GH Perl#21235.




[Perl/perl5] c3aaa5: Perldelta for GH# 21442

2023-09-18 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: c3aaa52ff5a9796b4c9048031ed0c374216c497e
  
https://github.com/Perl/perl5/commit/c3aaa52ff5a9796b4c9048031ed0c374216c497e
  Author: Richard Leach 
  Date:   2023-09-19 (Tue, 19 Sep 2023)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  Perldelta for GH# 21442




[Perl/perl5] bea115: S_negate_string - allow for TARG==sv

2023-09-07 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: bea115698e41f6acdaa450b343adbf1082c2e99e
  
https://github.com/Perl/perl5/commit/bea115698e41f6acdaa450b343adbf1082c2e99e
  Author: Richard Leach 
  Date:   2023-09-07 (Thu, 07 Sep 2023)

  Changed paths:
M pp.c

  Log Message:
  ---
  S_negate_string - allow for TARG==sv

Adds a case in `S_negate_string` to allow for TARG==sv, which then
means that the `pp_negate` and `pp_i_negate` OPs can support the
TARGMY optimization


  Commit: 359c2cd723a18f596af21897fb196d657d81752e
  
https://github.com/Perl/perl5/commit/359c2cd723a18f596af21897fb196d657d81752e
  Author: Richard Leach 
  Date:   2023-09-07 (Thu, 07 Sep 2023)

  Changed paths:
M lib/B/Op_private.pm
M opcode.h
M pp.c
M regen/op_private
M regen/opcodes

  Log Message:
  ---
  pp_(i_)negate: add the TARGMY optimization

This mostly means using the existing machinery in regen/, but also not
bothering to replace *PL_stack_sp when (targ == sv), as that would
effectively be a busywork no-op.


  Commit: c904517849a782954f8d958163a18f6cc192a485
  
https://github.com/Perl/perl5/commit/c904517849a782954f8d958163a18f6cc192a485
  Author: Richard Leach 
  Date:   2023-09-07 (Thu, 07 Sep 2023)

  Changed paths:
M pp.c

  Log Message:
  ---
  pp_(i_)negate: Don't needlessly call S_negate_string

Arguably it will be more common for users to want to negate an IV or NV,
rather than a PV. Prior to this commit, `S_negate_string` was always called
at the start of the OP and, if the target wasn't `SvPOKp`, that function
just immediately returned. This commit moves the `SvPOKp` check into the
`pp_` functions to avoid needless function calls.


Compare: https://github.com/Perl/perl5/compare/5e28db930c33...c904517849a7


[Perl/perl5] c0c43c: pp_initfield: no need to extend av, should be the ...

2023-09-06 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: c0c43c4cee85ee37cce9a0d8073adf058bc10dff
  
https://github.com/Perl/perl5/commit/c0c43c4cee85ee37cce9a0d8073adf058bc10dff
  Author: Richard Leach 
  Date:   2023-09-06 (Wed, 06 Sep 2023)

  Changed paths:
M class.c

  Log Message:
  ---
  pp_initfield: no need to extend av, should be the desired size

This was probably an accidental leftover after an early pull
request changed AV creation to `av = newAV_alloc_x(count)`
just above the removed line.


  Commit: f357b86a6592ee8216c004039cbbb51ffa14f78f
  
https://github.com/Perl/perl5/commit/f357b86a6592ee8216c004039cbbb51ffa14f78f
  Author: Richard Leach 
  Date:   2023-09-06 (Wed, 06 Sep 2023)

  Changed paths:
M class.c

  Log Message:
  ---
  Perl_class_wrap_method_body: simple push to newly-created AV

Since the AV has just been created and is simple in nature, there's
no need to do a full-blown `av_push`.

Technically, that's still overkill. Simplification could be taken
further by creating the `fieldmap` AV with `PadnamelistMAX(pnl) - 2`
items (when that is a >0 value), then directly assigning values into
elements. But it's not clear (to me) if that would be worth doing.


Compare: https://github.com/Perl/perl5/compare/008ae6a0ef7f...f357b86a6592


[Perl/perl5] 5efadf: Perldeltas for GH#21351 & GH#21265

2023-09-02 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 5efadf9a6aaf15307a7bc0038b678e403e5ba562
  
https://github.com/Perl/perl5/commit/5efadf9a6aaf15307a7bc0038b678e403e5ba562
  Author: Richard Leach 
  Date:   2023-09-02 (Sat, 02 Sep 2023)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  Perldeltas for GH#21351 & GH#21265




[Perl/perl5] 5fa726: OP_EMPTYAVHV: create ops in newANONHASH/newANONLIS...

2023-08-29 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 5fa726eb82cb1530d131c957769b0e3d0ff4fe42
  
https://github.com/Perl/perl5/commit/5fa726eb82cb1530d131c957769b0e3d0ff4fe42
  Author: Richard Leach 
  Date:   2023-08-29 (Tue, 29 Aug 2023)

  Changed paths:
M op.c
M opcode.h
M peep.c
M regen/opcodes

  Log Message:
  ---
  OP_EMPTYAVHV: create ops in newANONHASH/newANONLIST rather than rpeep

The current implementation of the OP_EMPTYAVHV optimization does not
optimize instances of empty anonymous hashes/lists on the RHS of LOGOP
conditions, such as in `my $x = $y || {}`.

This commit addresses this by removing the peephole optimization in
favour of having EMPTYAVHV OPs produced directly whenever a call is
made to `newANONHASH` or `newANONLIST` with an empty child OP `o`.
The standard TARGMY optimization in `S_maybe_targlex` has been
slightly adapted to also optimize the `LVINTRO` case for this OP.

This commit also addresses some feedback nits from the last dev
cycle: EMPTYAVHV is no longer a LISTOP, now just a BASEOP, and it
does not use the OPf_SPECIAL flag. (Both were unnecessary carryovers
from the ANONHASH and ANONLIST OPs.)




[Perl/perl5] f8c577: PerlIOScalar_pushed: move SvUPGRADE to where it mi...

2023-08-27 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: f8c57796889a55dbc338669517501dcae1eec73b
  
https://github.com/Perl/perl5/commit/f8c57796889a55dbc338669517501dcae1eec73b
  Author: Richard Leach 
  Date:   2023-08-27 (Sun, 27 Aug 2023)

  Changed paths:
M perlio.c

  Log Message:
  ---
  PerlIOScalar_pushed: move SvUPGRADE to where it might apply

`newSVpvs("")` returns an SV of type `SVt_PV`, therefore there's no
point in calling `SvUPGRADE(..., SVt_PV)` on it.

The other nearby code paths _might_ set an SV that needs upgrading
(I haven't looked into the logic), so the `SvUPGRADE` statement has
been moved inside the relevant branch rather than being removed.




[Perl/perl5] b82b16: Perl_ck_refassign: support refassigning into a sta...

2023-08-25 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: b82b16a38d98ef71e399a80f4e56073741c613cd
  
https://github.com/Perl/perl5/commit/b82b16a38d98ef71e399a80f4e56073741c613cd
  Author: Richard Leach 
  Date:   2023-08-25 (Fri, 25 Aug 2023)

  Changed paths:
M op.c
M t/op/lvref.t

  Log Message:
  ---
  Perl_ck_refassign: support refassigning into a state variable

Prior to this commit, Perl_ck_refassign did not check if the
target was a state variable and, if so, wrap it in a ONCE op
so that the RHS is only evaluated once.




[Perl/perl5] cf56d3: Minor updates for release documentation

2023-08-16 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: cf56d3cff2915955b875a372880dfad1baab7582
  
https://github.com/Perl/perl5/commit/cf56d3cff2915955b875a372880dfad1baab7582
  Author: Richard Leach 
  Date:   2023-08-16 (Wed, 16 Aug 2023)

  Changed paths:
M Porting/how_to_write_a_perldelta.pod
M Porting/release_managers_guide.pod

  Log Message:
  ---
  Minor updates for release documentation

These are mostly additions for clarity or extra examples.

Some advice has been removed from "update INSTALL", because the wording
within INSTALL has been made less version-specific, requiring fewer
updates per-release.




[Perl/perl5] 145a58: test.pl: avoid unnecessary work in like_yn()

2023-08-14 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 145a58a4c23b1ceab2963d1a8b5ba6579d1786f2
  
https://github.com/Perl/perl5/commit/145a58a4c23b1ceab2963d1a8b5ba6579d1786f2
  Author: Richard Leach 
  Date:   2023-08-14 (Mon, 14 Aug 2023)

  Changed paths:
M t/test.pl

  Log Message:
  ---
  test.pl: avoid unnecessary work in like_yn()

`like_yn()` underpins `like()` and `unlike()` in _test.pl_, so is a
fairly hot subroutine when running perl's test suite.

This commit is a light refactor that does two main things:
* Moves the `$display_got` and `$display_expected` definitions to
  only the branch where they will actually be used.
* Simplifies the definitions of `$pass`, `$display_got`, and
  `$display_expected` to make them clearer and more efficient.


  Commit: 7dbb8cb7cd157a6f424b9d8ad0db5e9fac85e011
  
https://github.com/Perl/perl5/commit/7dbb8cb7cd157a6f424b9d8ad0db5e9fac85e011
  Author: Richard Leach 
  Date:   2023-08-14 (Mon, 14 Aug 2023)

  Changed paths:
M t/test.pl

  Log Message:
  ---
  test.pl: convert tabs to spaces in like_yn()


Compare: https://github.com/Perl/perl5/compare/6a09651902f8...7dbb8cb7cd15


[Perl/perl5] 9e298a: Perl_av_extend_guts: Zero() trailing elements afte...

2023-07-20 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 9e298ab597b2c6fc0741749d7e29119e2d6cd628
  
https://github.com/Perl/perl5/commit/9e298ab597b2c6fc0741749d7e29119e2d6cd628
  Author: Richard Leach 
  Date:   2023-07-20 (Thu, 20 Jul 2023)

  Changed paths:
M av.c
M t/op/array.t

  Log Message:
  ---
  Perl_av_extend_guts: Zero() trailing elements after unshift & resize

Since 
https://github.com/Perl/perl5/commit/399fef93c903aedee05a74de780b57eeeb571b32,
trailing elements in an array that has been unshifted and resized
might not be properly Zero() initialized. This is because of faulty
arithmetic when calculating `to_null`, the number of elements to
initialize, when the array was only partially shifted.

This commit corrects the arithmetic, adds comments arount the
calculation of `to_null`, and adds a test based upon the case
provided in GH #21235.

The test added segfaults more reliably for me - almost every time -
than the originally supplied case. However, since it relies upon
uninitialized memory, it's probably still not deterministic and
somewhat dependent upon the choice of memory allocator.

Closes #21235




[Perl/perl5] b62502: Prefer scalar assignment to get caller's first ret...

2023-02-22 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: b625025e93c87eab6565ea086e7d9c60245d6bd3
  
https://github.com/Perl/perl5/commit/b625025e93c87eab6565ea086e7d9c60245d6bd3
  Author: Richard Leach 
  Date:   2023-02-22 (Wed, 22 Feb 2023)

  Changed paths:
M dist/Env/lib/Env.pm
M lib/Benchmark.pm
M lib/Class/Struct.pm
M lib/overload.pm
M lib/overload.t
M lib/warnings.pm
M regen/warnings.pl

  Log Message:
  ---
  Prefer scalar assignment to get caller's first return value

Multiple forms of syntax can be used to obtain a package name from
`caller`, which emits this as its first return value, and assign
that name to a lexical scalar.

The following each achieve the same result, but with varying efficiency:
* `sub callme { my $package = caller(2); ...}`
* `sub callme { my ($package) = caller(2); ...}`
* `sub callme { my $package = (caller(2))[0]; ...}`

In the first example, `pp_caller` determines only the package name
and pushes it to the stack. In the other two examples, the other 10 of
`caller`'s return values are calculated and pushed onto the stack,
before being discarded.

This commit changes non-CPAN-first instances of the latter two forms
in core to the first form.

Note: There is a special exception to the equivalence described above,
when caller is use in list context within the DB package. Such a
usage instance in regen/warnings.pl therefore remains unchanged.




[Perl/perl5] 3f66ab: perldelta.pod: performance entry for GH #20800

2023-02-18 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 3f66aba00b176ea345e786583e448f0811273af6
  
https://github.com/Perl/perl5/commit/3f66aba00b176ea345e786583e448f0811273af6
  Author: Richard Leach 
  Date:   2023-02-19 (Sun, 19 Feb 2023)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  perldelta.pod: performance entry for GH #20800




[Perl/perl5] 7ff8dd: Perl_re_op_compile: additional parens to satisfy C...

2023-02-13 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 7ff8dd51be592f01fa35e391683fe415939a9a0f
  
https://github.com/Perl/perl5/commit/7ff8dd51be592f01fa35e391683fe415939a9a0f
  Author: Richard Leach 
  Date:   2023-02-13 (Mon, 13 Feb 2023)

  Changed paths:
M regcomp.c

  Log Message:
  ---
  Perl_re_op_compile: additional parens to satisfy Coverity




[Perl/perl5] c56d7f: Perl_leave_adjust_stacks: don't make mortal copies...

2023-02-13 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: c56d7fa9134de66efe85a2fd70b28069c2629e0d
  
https://github.com/Perl/perl5/commit/c56d7fa9134de66efe85a2fd70b28069c2629e0d
  Author: Richard Leach 
  Date:   2023-02-13 (Mon, 13 Feb 2023)

  Changed paths:
M pp_hot.c

  Log Message:
  ---
  Perl_leave_adjust_stacks: don't make mortal copies of SvIMMORTAL SVs

SvIMMORTAL SVs cannot be prematurely freed and so there is no need
to create a mortal copy of them. They also will not leak, so there
is no need to add the SV* to the temp stack.




[Perl/perl5] 09fbd1: S_do_chomp: remove unused svrecode SV

2023-02-11 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 09fbd16e8a0e26ef4ac3790a6f67ec8dbdaa8720
  
https://github.com/Perl/perl5/commit/09fbd16e8a0e26ef4ac3790a6f67ec8dbdaa8720
  Author: Richard Leach 
  Date:   2023-02-11 (Sat, 11 Feb 2023)

  Changed paths:
M pp.c

  Log Message:
  ---
  S_do_chomp: remove unused svrecode SV




[Perl/perl5] c7342b: Perl_sv_clear: faster treatment of bodyless NVs

2023-02-10 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: c7342b06c24013ac518d5817617c3abbef7f0a1e
  
https://github.com/Perl/perl5/commit/c7342b06c24013ac518d5817617c3abbef7f0a1e
  Author: Richard Leach 
  Date:   2023-02-10 (Fri, 10 Feb 2023)

  Changed paths:
M sv.c

  Log Message:
  ---
  Perl_sv_clear: faster treatment of bodyless NVs

The existing fast path for SVt_NULL/SVt_IV can also be used for bodyless
SVt_NVs.




[Perl/perl5] 94a21c: sv_clear apidoc: prefer SvREFCNT_dec to sv_free()

2023-02-10 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 94a21c89d725dee58126a57a36a33a72e3dd54fd
  
https://github.com/Perl/perl5/commit/94a21c89d725dee58126a57a36a33a72e3dd54fd
  Author: Richard Leach 
  Date:   2023-02-10 (Fri, 10 Feb 2023)

  Changed paths:
M sv.c

  Log Message:
  ---
  sv_clear apidoc: prefer SvREFCNT_dec to sv_free()

As per the old test, SvREFCNT_dec used to wrap sv_free, which then
calls the Perl_SvREFCNT_dec function. Nowadays, SvREFCNT_dec calls
Perl_SvREFCNT_dec directly, and the latter is a very small inline
function. Using the macro probably should be the go-to now.


  Commit: 8d83c9f712bbdad0e46a7ea27be5959e9a3e4116
  
https://github.com/Perl/perl5/commit/8d83c9f712bbdad0e46a7ea27be5959e9a3e4116
  Author: Richard Leach 
  Date:   2023-02-10 (Fri, 10 Feb 2023)

  Changed paths:
M toke.c

  Log Message:
  ---
  toke.c - use SvREFCNT_dec() rather than calling sv_free()

sv_free() is a function call just to then do SvREFCNT_dec() anyway.

SvREFCNT_dec is a macro that just calls the simple inline function
Perl_SvREFCNT_dec(). In places where the SV being operated on has
been newly creted, we can use ASSUME() statements to help the
compiler to eliminate some unnecessary branches in this function.


Compare: https://github.com/Perl/perl5/compare/a683fa5b7e81...8d83c9f712bb


[Perl/perl5] 1863a6: sv.h - Update type comments to reflect implementat...

2023-02-10 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 1863a6c87cb85549953c181e1d6a060138d60337
  
https://github.com/Perl/perl5/commit/1863a6c87cb85549953c181e1d6a060138d60337
  Author: Richard Leach 
  Date:   2023-02-10 (Fri, 10 Feb 2023)

  Changed paths:
M sv.h

  Log Message:
  ---
  sv.h - Update type comments to reflect implementation realities


  Commit: 2ba5f4dfa884b4b8257dcbb4213ed932e82113a2
  
https://github.com/Perl/perl5/commit/2ba5f4dfa884b4b8257dcbb4213ed932e82113a2
  Author: Richard Leach 
  Date:   2023-02-10 (Fri, 10 Feb 2023)

  Changed paths:
M sv.h

  Log Message:
  ---
  sv.h types - tidy trailing sentences


Compare: https://github.com/Perl/perl5/compare/f2244cf0c11c...2ba5f4dfa884


[Perl/perl5] 3bbe14: t/test.pl - assign caller() to separate vars in _w...

2023-01-13 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 3bbe14f5ab0067b7ce4357aaa1fc3ecfc48afac6
  
https://github.com/Perl/perl5/commit/3bbe14f5ab0067b7ce4357aaa1fc3ecfc48afac6
  Author: Richard Leach 
  Date:   2023-01-13 (Fri, 13 Jan 2023)

  Changed paths:
M t/test.pl

  Log Message:
  ---
  t/test.pl - assign caller() to separate vars in _where()

_where() is a heavily used, small subroutine within test.pl. It currently
assigns all eleven of caller()'s return values to array elements, then
uses only the second and third of these to construct a return string.

This commit changes the assignment to use separate variables, which ends
up being more efficient.

Benchmarking suggests that _where() is about 30% faster as a result.
The overhead of ok( ... ) calls is reduced by about 10%.




[Perl/perl5] 25a56f: Prepare Module::Corelist for 5.37.8

2022-12-21 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 25a56f0d068e15b5f11178eeda8e4664a20fb3c2
  
https://github.com/Perl/perl5/commit/25a56f0d068e15b5f11178eeda8e4664a20fb3c2
  Author: Richard Leach 
  Date:   2022-12-21 (Wed, 21 Dec 2022)

  Changed paths:
M dist/Module-CoreList/Changes
M dist/Module-CoreList/lib/Module/CoreList.pm
M dist/Module-CoreList/lib/Module/CoreList/Utils.pm

  Log Message:
  ---
  Prepare Module::Corelist for 5.37.8




[Perl/perl5] b694b4: New perldelta for 5.37.8

2022-12-20 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: b694b46bcc174597e5573ef691878857fbfa259e
  
https://github.com/Perl/perl5/commit/b694b46bcc174597e5573ef691878857fbfa259e
  Author: Richard Leach 
  Date:   2022-12-20 (Tue, 20 Dec 2022)

  Changed paths:
M MANIFEST
M Makefile.SH
M pod/.gitignore
M pod/perl.pod
A pod/perl5377delta.pod
M pod/perldelta.pod
M vms/descrip_mms.template
M win32/GNUmakefile
M win32/Makefile
M win32/pod.mak

  Log Message:
  ---
  New perldelta for 5.37.8


  Commit: 314a24817c7acf6b814a9002ebe00ea4c5f3b01d
  
https://github.com/Perl/perl5/commit/314a24817c7acf6b814a9002ebe00ea4c5f3b01d
  Author: Richard Leach 
  Date:   2022-12-20 (Tue, 20 Dec 2022)

  Changed paths:
M Cross/config.sh-arm-linux
M Cross/config.sh-arm-linux-n770
M INSTALL
M META.json
M META.yml
M Porting/config.sh
M Porting/config_H
M Porting/perldelta_template.pod
M Porting/sync-with-cpan
M Porting/todo.pod
M README.haiku
M README.macosx
M README.os2
M README.vms
M hints/catamount.sh
M lib/B/Op_private.pm
M patchlevel.h
M plan9/config_sh.sample
M win32/GNUmakefile
M win32/Makefile

  Log Message:
  ---
  Bump the perl version in various places for 5.37.8


Compare: https://github.com/Perl/perl5/compare/e2514fca1dda...314a24817c7a


[Perl/perl5] 0d0883: Update epigraphs.pod for 5.37.7

2022-12-20 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 0d0883db50fedbe35a14700ee05a1448f28a17a6
  
https://github.com/Perl/perl5/commit/0d0883db50fedbe35a14700ee05a1448f28a17a6
  Author: Richard Leach 
  Date:   2022-12-20 (Tue, 20 Dec 2022)

  Changed paths:
M Porting/epigraphs.pod

  Log Message:
  ---
  Update epigraphs.pod for 5.37.7


  Commit: e2514fca1dda924ee50c8002f9f9a4331ef02870
  
https://github.com/Perl/perl5/commit/e2514fca1dda924ee50c8002f9f9a4331ef02870
  Author: Richard Leach 
  Date:   2022-12-20 (Tue, 20 Dec 2022)

  Changed paths:
M Porting/release_schedule.pod

  Log Message:
  ---
  Update release_schedule.pod for 5.37.7


Compare: https://github.com/Perl/perl5/compare/b1163c2ae562...e2514fca1dda


[Perl/perl5]

2022-12-20 Thread Richard Leach via perl5-changes
  Branch: refs/tags/v5.37.7
  Home:   https://github.com/Perl/perl5


[Perl/perl5] cb142f: Update Module::CoreList for 5.37.7

2022-12-20 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: cb142fcf587f1b1751e76705e0adecea1b85f281
  
https://github.com/Perl/perl5/commit/cb142fcf587f1b1751e76705e0adecea1b85f281
  Author: Richard Leach 
  Date:   2022-12-20 (Tue, 20 Dec 2022)

  Changed paths:
M dist/Module-CoreList/lib/Module/CoreList.pm

  Log Message:
  ---
  Update Module::CoreList for 5.37.7


  Commit: ae98afd843e8434e69858ca6124527fb2eff3cb5
  
https://github.com/Perl/perl5/commit/ae98afd843e8434e69858ca6124527fb2eff3cb5
  Author: Richard Leach 
  Date:   2022-12-20 (Tue, 20 Dec 2022)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  Update perldelta.pod for 5.37.7


  Commit: cb0c8d0ed61392264d8f845c325b04b199519a9f
  
https://github.com/Perl/perl5/commit/cb0c8d0ed61392264d8f845c325b04b199519a9f
  Author: Richard Leach 
  Date:   2022-12-20 (Tue, 20 Dec 2022)

  Changed paths:
M t/porting/customized.dat

  Log Message:
  ---
  Update t/porting/customized.dat for 5.37.7


  Commit: b1163c2ae562670f2bf4c7700087f0c9d0ad8fe5
  
https://github.com/Perl/perl5/commit/b1163c2ae562670f2bf4c7700087f0c9d0ad8fe5
  Author: Richard Leach 
  Date:   2022-12-20 (Tue, 20 Dec 2022)

  Changed paths:
M pod/perlhist.pod

  Log Message:
  ---
  Add new release to perlhist


Compare: https://github.com/Perl/perl5/compare/88da24e71cc8...b1163c2ae562


[Perl/perl5] 54ca89: Replace SvGROW with sv_grow_fresh in perl.c, pp_sy...

2022-11-29 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 54ca894738d71b8a053b5405699c66b8c0bd346d
  
https://github.com/Perl/perl5/commit/54ca894738d71b8a053b5405699c66b8c0bd346d
  Author: Richard Leach 
  Date:   2022-11-30 (Wed, 30 Nov 2022)

  Changed paths:
M perl.c
M pp_sys.c
M toke.c

  Log Message:
  ---
  Replace SvGROW with sv_grow_fresh in perl.c, pp_sys.c, toke.c

Changed:
 * perl.c - Perl_moreswitches
 * pp_sys.c - pp_sysread
 * toke.c - Perl_scan_str

In each of the above functions, one instance of SvGROW on a new SVt_PV
can be swapped for the more efficient sv_grow_fresh. In two of the
instances, the calls used to create the the SVt_PV have also been
streamlined.

There should not be any functional change as a result of this commit.




[Perl/perl5] dbf361: Extract minimum PV buffer/AV element size to commo...

2022-11-21 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: dbf3614df92e720a9536b1cceb915a18ff2b8c08
  
https://github.com/Perl/perl5/commit/dbf3614df92e720a9536b1cceb915a18ff2b8c08
  Author: Richard Leach 
  Date:   2022-11-21 (Mon, 21 Nov 2022)

  Changed paths:
M av.c
M perl.h
M pp_hot.c
M sv.c

  Log Message:
  ---
  Extract minimum PV buffer/AV element size to common definitions

In a nutshell, for a long time the minimum PV length (hardcoded
in Perl_sv_grow) has been 10 bytes and the minimum AV array size
(hardcoded in av_extend_guts) has been 4 elements.

These numbers have been used elsewhere for consistency (e.g.
Perl_sv_grow_fresh) in the past couple of development cycles.
Having a standard definition, rather than hardcoding in multiple
places, is more maintainable. This commit therefore introduces
into perl.h:

PERL_ARRAY_NEW_MIN_KEY
PERL_STRLEN_NEW_MIN

(Note: Subsequent commit(s) will actually change the values.)


  Commit: 06dbfffcf611d03ad6078d4049e84de53458f9c9
  
https://github.com/Perl/perl5/commit/06dbfffcf611d03ad6078d4049e84de53458f9c9
  Author: Richard Leach 
  Date:   2022-11-21 (Mon, 21 Nov 2022)

  Changed paths:
M perl.h

  Log Message:
  ---
  PERL_STRLEN_NEW_MIN - increase to multiple of pointer sizes

Major malloc implementations, including the popular dlmalloc
derivatives all return chunks of memory that are a multiple of
the platform's pointer size. Perl's traditional default string
allocation of 10 bytes will almost certainly result in a larger
allocation than requested. Consequently, the interpreter may try
to Renew() an allocation to increase the PV buffer size when it
does not actually need to do so.

This commit increases the default string size to the nearest
pointer multiple. (12 bytes for 32-bit pointers, 16 bytes for
64-bit pointers). This is almost certainly unnecessarily small
for 64-bit platforms, since most common malloc implementations
seem to return 3*pointer size (i.e. 24 bytes) as the smallest
allocation. However, 16 bytes was chosen to prevent an increase
in memory usage in memory-constrained platforms which might have
a smaller minimum memory allocation.


Compare: https://github.com/Perl/perl5/compare/b17e77fbd875...06dbfffcf611


[Perl/perl5] 10a5c9: OP_EMPTYAVHV - optimized empty ANONLIST/ANONHASH

2022-10-24 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 10a5c9138224597d018843f3b298a928555b67f0
  
https://github.com/Perl/perl5/commit/10a5c9138224597d018843f3b298a928555b67f0
  Author: Richard Leach 
  Date:   2022-10-24 (Mon, 24 Oct 2022)

  Changed paths:
M ext/Opcode/Opcode.pm
M lib/B/Deparse.pm
M lib/B/Op_private.pm
M opcode.h
M opnames.h
M peep.c
M pp.c
M pp_proto.h
M regen/op_private
M regen/opcodes
M t/perf/benchmarks
M t/perf/opcount.t

  Log Message:
  ---
  OP_EMPTYAVHV - optimized empty ANONLIST/ANONHASH

This commit introduces a new OP to replace cases of OP_ANONLIST and
OP_ANONHASH where there are zero elements, which is very common in
Perl code.

As an example, `my $x = {}` is currently implemented like this:
...
6 <2> sassign vKS/2 ->7
4<@> anonhash sK* ->5
3   <0> pushmark s ->4
5<0> padsv[$x:1,2] sRM*/LVINTRO ->6

The pushmark serves no meaningful purpose when there are zero
elements and the anonhash, besides undoing the pushmark,
performs work that is unnecessary for this special case.

The peephole optimizer, which also checks for applicability of a
related TARGMY optimization, transforms this example into:
...
- <1> ex-sassign vKS/2 ->4
3<@> emptyavhv[$x:1,2] vK*/LVINTRO,ANONHASH,TARGMY ->4
-   <0> ex-pushmark s ->3
-<0> ex-padsv sRM*/LVINTRO ->-


  Commit: 8b4768d1bcec4110f56a34c3d7ca4586c58434d9
  
https://github.com/Perl/perl5/commit/8b4768d1bcec4110f56a34c3d7ca4586c58434d9
  Author: Richard Leach 
  Date:   2022-10-24 (Mon, 24 Oct 2022)

  Changed paths:
M ext/Opcode/Opcode.pm

  Log Message:
  ---
  version bump to squash


Compare: https://github.com/Perl/perl5/compare/71a3dd321d7f...8b4768d1bcec


[Perl/perl5] 382a56: sv.c - add BODYLESS_NV fast code to sv_setXv funct...

2022-10-22 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 382a56637961ef97fde5808e97df108db4e3ed8d
  
https://github.com/Perl/perl5/commit/382a56637961ef97fde5808e97df108db4e3ed8d
  Author: Richard Leach 
  Date:   2022-10-22 (Sat, 22 Oct 2022)

  Changed paths:
M sv.c

  Log Message:
  ---
  sv.c - add BODYLESS_NV fast code to sv_setXv functions

For "BODYLESS" IVs and NVs, type up/downgrades can be easily done
without having to call sv_upgrade. (Which will also not convert a
BODYLESS NV back down to an IV, even when it is harmless to do so.)

This commit adds "BODYLESS" handling to sv_setiv and sv_setnv, which
previously lacked it, and "BODYLESS_NV" handling to sv_setsv_flags,
which previously only special-cased "BODYLESS_IV"s.

The BODYLESS_IV code in sv_setsv_flags previously did not preserve
flags such as SVs_TEMP or SVs_PADTMP, which seemed like a potential
latent bug. (The new BODYLESS_NV code *has* to preserve SVs_TEMP in
order for all tests in t/lib/warnings to continue to pass.) Rather
than clearing all flags, this commit instead does a SvOK_off(dsv)
for both BODYLESS_IV and BODYLESS_NV cases.




[Perl/perl5] 9e99fb: AELEMFASTLEX_STORE - support negative keys, skip u...

2022-10-22 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 9e99fbb3940bfab6ce2638107363e928bcca917a
  
https://github.com/Perl/perl5/commit/9e99fbb3940bfab6ce2638107363e928bcca917a
  Author: Richard Leach 
  Date:   2022-10-22 (Sat, 22 Oct 2022)

  Changed paths:
M peep.c
M pp_hot.c
M t/perf/opcount.t

  Log Message:
  ---
  AELEMFASTLEX_STORE - support negative keys, skip unnecessary check

This commit:
* Adds support for negative keys, as per the original AELEMFAST_LEX
* Changes an if() check for a "useless assignment to a temporary" into
  an assert, since this condition should never be true when the LHS is
  the result of an array fetch.




[Perl/perl5] b93391: B::Deparse.pm - add padsv_store to list in sub ret...

2022-09-26 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: b93391659d456f4fb0d24eb43c150565f51abbc4
  
https://github.com/Perl/perl5/commit/b93391659d456f4fb0d24eb43c150565f51abbc4
  Author: Richard Leach 
  Date:   2022-09-26 (Mon, 26 Sep 2022)

  Changed paths:
M lib/B/Deparse.pm

  Log Message:
  ---
  B::Deparse.pm - add padsv_store to list in sub retscalar

Issue #20327 revealed that code that is expected to deparse to:
&$uncompress(my $Tmp = shift());
has, since the addition of padsv_store, been deparsing to this:
&$uncompress(scalar(my $Tmp = shift()));

This seems to be because padsv_store was not added to a particular list
of scalar OPs in B::Deparse.pm.

Closes #20327.




[Perl/perl5] 22d010: pp_undef w/ TARGMY: push sv, not _sv_undef, ont...

2022-09-23 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 22d01053ed299e489bfee2839fb35dfeece9d1fb
  
https://github.com/Perl/perl5/commit/22d01053ed299e489bfee2839fb35dfeece9d1fb
  Author: Richard Leach 
  Date:   2022-09-23 (Fri, 23 Sep 2022)

  Changed paths:
M pp.c
M t/op/undef.t

  Log Message:
  ---
  pp_undef w/ TARGMY: push sv, not _sv_undef, onto the stack

Closes #20336.




[Perl/perl5] e61648: regcomp.c - use _simple functions where apparently...

2022-09-22 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: e616482ebbb5b0eb7ab5edca3089ddf13650074b
  
https://github.com/Perl/perl5/commit/e616482ebbb5b0eb7ab5edca3089ddf13650074b
  Author: Richard Leach 
  Date:   2022-09-22 (Thu, 22 Sep 2022)

  Changed paths:
M regcomp.c

  Log Message:
  ---
  regcomp.c - use _simple functions where apparently safe to do so

`av_push`, `av_store`, and `av_fetch` have been changed to their
inline `_simple` variants in a number of places. No test failures
have resulted from these changes.

The remaining uses of the full-fat functions are not suitable to
change because either the AVs have magic, or existing tests show
that the `key` parameter is not > -1 when that is a pre-requisite
of a replacement inline function.




[Perl/perl5] b6198b: SvPVCLEAR_FRESH - change from macro to inline func...

2022-09-22 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: b6198bccd362ecd980c1b4301ce6817a2ec296e3
  
https://github.com/Perl/perl5/commit/b6198bccd362ecd980c1b4301ce6817a2ec296e3
  Author: Richard Leach 
  Date:   2022-09-22 (Thu, 22 Sep 2022)

  Changed paths:
M embed.fnc
M embed.h
M proto.h
M sv.h
M sv_inline.h

  Log Message:
  ---
  SvPVCLEAR_FRESH - change from macro to inline function

This is to prevent warnings due to the char * frequently being
unused.




[Perl/perl5] f1cc67: perldelta - change pod markup for non-core modules

2022-09-19 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: f1cc674150b9408466f484c1bd08faaa989000de
  
https://github.com/Perl/perl5/commit/f1cc674150b9408466f484c1bd08faaa989000de
  Author: Richard Leach 
  Date:   2022-09-19 (Mon, 19 Sep 2022)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  perldelta - change pod markup for non-core modules




[Perl/perl5] d63288: perldelta - add GH#20114 to Known Problems section

2022-09-19 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: d6328840c56c87f8debfcb92f957b21d5f31df98
  
https://github.com/Perl/perl5/commit/d6328840c56c87f8debfcb92f957b21d5f31df98
  Author: Richard Leach 
  Date:   2022-09-19 (Mon, 19 Sep 2022)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  perldelta - add GH#20114 to Known Problems section




[Perl/perl5] 540f45: S_scan_heredoc: fresh sv functions close to point ...

2022-09-18 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 540f4522aa40f6672e5e44976a38fae4b39fa3b8
  
https://github.com/Perl/perl5/commit/540f4522aa40f6672e5e44976a38fae4b39fa3b8
  Author: Richard Leach 
  Date:   2022-09-18 (Sun, 18 Sep 2022)

  Changed paths:
M toke.c

  Log Message:
  ---
  S_scan_heredoc: fresh sv functions close to point of use

S_scan_heredoc does a SvGROW on a fresh PVIV. A sv_grow_fresh is
more efficient, plus it seems only really needed in the nearby "else"
branch. In the "if" branch, sv_setsv_fresh can be used directly.


  Commit: 90dc1489e6280a2f7cd39e74f7be2ec9e556cad7
  
https://github.com/Perl/perl5/commit/90dc1489e6280a2f7cd39e74f7be2ec9e556cad7
  Author: Richard Leach 
  Date:   2022-09-18 (Sun, 18 Sep 2022)

  Changed paths:
M sv.h

  Log Message:
  ---
  sv.c - add SvPVCLEAR_FRESH macro for new PVs with buffer

SvPVCLEAR(tmpstr) is a macro that calls sv_setpv_bufsize(tmpstr,0,0).
If called on a newly minted PV/PVIV/PVNV/PVMG that has a fresh PV
buffer assigned, many of the checks in SvPVCLEAR are unnecessary:
* SvTHINKFIRST - won't be set
* upgrade to SVt_PV - won't be necessary
* SvGROW - we assert that this isn't necessary

It then does some useful, but small actions:
* sets SvCUR(sv, 0);
* sets the last byte in the PV buffer to \0
* sets SvPOK_only_UTF8
* does SvTAINT

Then does a final irrelevant check:
* is tmpstr a PVCV - no it is not

This commit introduces SvPVCLEAR_FRESH as a drop-in replacement
for compatible SVs, that only does the relevant small actions.


  Commit: 8af03a11d8197fbbc9700846c4aa5c1baa32b281
  
https://github.com/Perl/perl5/commit/8af03a11d8197fbbc9700846c4aa5c1baa32b281
  Author: Richard Leach 
  Date:   2022-09-18 (Sun, 18 Sep 2022)

  Changed paths:
M toke.c

  Log Message:
  ---
  S_scan_heredoc - use SvPVCLEAR_FRESH on new SV


  Commit: 51918aaf0287a9f5643ea3161fd8c6091a127428
  
https://github.com/Perl/perl5/commit/51918aaf0287a9f5643ea3161fd8c6091a127428
  Author: Richard Leach 
  Date:   2022-09-18 (Sun, 18 Sep 2022)

  Changed paths:
M regcomp.c

  Log Message:
  ---
  S_regclass - use SvPVCLEAR_FRESH on new SV


  Commit: 94e822ee24ba222efc1979d79e64ca7b2c0942cb
  
https://github.com/Perl/perl5/commit/94e822ee24ba222efc1979d79e64ca7b2c0942cb
  Author: Richard Leach 
  Date:   2022-09-18 (Sun, 18 Sep 2022)

  Changed paths:
M sv.c

  Log Message:
  ---
  vnewSVpvf - inline & reduce call to sv_vsetpvfn

sv_vsetpvfn does just two things:
* SvPVCLEAR on the sv passed in
* calls sv_vcatpvfn_flags

Since the SV passed into sv_vsetpvfn by vnewSVpvf is a brand new SV,
it is more efficient to inline sv_vsetpvfn and change the SvPVCLEAR
to SvPVCLEAR_FRESH.


Compare: https://github.com/Perl/perl5/compare/b0b120dcf9fb...94e822ee24ba


[Perl/perl5] 33498e: sv_setsv_cow - directly create desired SVt_COW SV

2022-09-17 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 33498ed6ab04d6249c8585950bfd9321db9d2fa7
  
https://github.com/Perl/perl5/commit/33498ed6ab04d6249c8585950bfd9321db9d2fa7
  Author: Richard Leach 
  Date:   2022-09-17 (Sat, 17 Sep 2022)

  Changed paths:
M sv.c

  Log Message:
  ---
  sv_setsv_cow - directly create desired SVt_COW SV

It's more efficient to directly create the desired SV type than create
a SVt_NULL and then call sv_upgrade to get the desired type.




[Perl/perl5] 5e0c3e: pod - remove references to PrePAN (now defunct)

2022-09-15 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 5e0c3e4a3b85ccc05e1127d901a87d55a48e5b98
  
https://github.com/Perl/perl5/commit/5e0c3e4a3b85ccc05e1127d901a87d55a48e5b98
  Author: Richard Leach 
  Date:   2022-09-15 (Thu, 15 Sep 2022)

  Changed paths:
M pod/perlcommunity.pod
M pod/perlmodstyle.pod

  Log Message:
  ---
  pod - remove references to PrePAN (now defunct)




[Perl/perl5] e69d7f: perlguts - document newAV_alloc_x/z and _simple funcs

2022-09-15 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: e69d7f8b2b933533e7d4b0f258a09d331a524e53
  
https://github.com/Perl/perl5/commit/e69d7f8b2b933533e7d4b0f258a09d331a524e53
  Author: Richard Leach 
  Date:   2022-09-16 (Fri, 16 Sep 2022)

  Changed paths:
M pod/perlguts.pod

  Log Message:
  ---
  perlguts - document newAV_alloc_x/z and _simple funcs




[Perl/perl5] 658a5b: Perl_sv_setsv_flags: return after invlist_clone case

2022-09-14 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 658a5bedcfb012a503b61de6c8cb69924cc6f6f8
  
https://github.com/Perl/perl5/commit/658a5bedcfb012a503b61de6c8cb69924cc6f6f8
  Author: Richard Leach 
  Date:   2022-09-14 (Wed, 14 Sep 2022)

  Changed paths:
M sv.c

  Log Message:
  ---
  Perl_sv_setsv_flags: return after invlist_clone case

In the "first_ switch" statement in Perl_sv_setsv_flags, there's this case:
case SVt_INVLIST:
invlist_clone(ssv, dsv);
break;

When the INVLIST code was added, it was unclear whether the logic following
that switch needed to apply to INVLISTs or not. Early returns were also seen
as risky from a future maintenance perspective. As a precaution, this case
was written to `break` rather than `return`.

With later analysis though, it seems like the code below this switch does
not apply to INVLISTs, apart from one unintended interaction.

* invlist_clone() - in regcomp.c - copies the PV buffer of ssv to dsv.
* However, whenever an invlist is initialized, SvPOK_on is called on its SV;
according to the nearby comment "/* This allows B to extract the PV */".
* Because the switch case does not return, the later `if (sflags & SVp_POK)`
branch will try to swipe/cow/copy the PV buffer of ssv to dsv. This is an
unnecessary double copy.

On that analysis, this commit changes the break into a return.




[Perl/perl5] 88745c: Perldelta for GH#20063 (addition to existing list)

2022-09-07 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 88745cf76c5a2fcd907eec49427ee74a02e529b3
  
https://github.com/Perl/perl5/commit/88745cf76c5a2fcd907eec49427ee74a02e529b3
  Author: Richard Leach 
  Date:   2022-09-07 (Wed, 07 Sep 2022)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  Perldelta for GH#20063 (addition to existing list)




[Perl/perl5] aafefc: OP_AELEMFASTLEX_STORE - combined sassign/aelemfast...

2022-09-07 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: aafefcb90183e1d6ef62d9e1ccc1fae7fcdf9c8e
  
https://github.com/Perl/perl5/commit/aafefcb90183e1d6ef62d9e1ccc1fae7fcdf9c8e
  Author: Richard Leach 
  Date:   2022-09-07 (Wed, 07 Sep 2022)

  Changed paths:
M ext/Opcode/Opcode.pm
M lib/B/Deparse.pm
M lib/B/Op_private.pm
M opcode.h
M opnames.h
M peep.c
M pp_hot.c
M pp_proto.h
M regen/op_private
M regen/opcodes
M t/perf/benchmarks
M t/perf/opcount.t

  Log Message:
  ---
  OP_AELEMFASTLEX_STORE - combined sassign/aelemfast_lex

This commit introduces a new OP to replace simple cases of OP_SASSIGN
and OP_AELEMFAST_LEX. (Similar concept to GH #19943)

For example, `my @ary; $ary[0] = "boo"` is currently implemented as:
7 <2> sassign vKS/2 ->8
5<$> const[PV "boo"] s ->6
-<1> ex-aelem sKRM*/2 ->7
6   <0> aelemfast_lex[@ary:1,2] sRM ->7
-   <0> ex-const s ->-

But now will be turned into:
6 <1> aelemfastlex_store[@ary:1,2] vKS ->7
5<$> const(PV "boo") s ->6
-<1> ex-aelem sKRM*/2 ->6
-   <0> ex-aelemfast_lex sRM ->6
-   <0> ex-const s ->-

This is intended to be a transparent performance optimization.
It should be applicable for RHS optrees of varying complexity.




[Perl/perl5] c5bbf8: peep.c:OP_PADSV_STORE - skip SASSIGN created by Me...

2022-09-06 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: c5bbf81a67393c24727402cfeca0bfe002966ee0
  
https://github.com/Perl/perl5/commit/c5bbf81a67393c24727402cfeca0bfe002966ee0
  Author: Richard Leach 
  Date:   2022-09-06 (Tue, 06 Sep 2022)

  Changed paths:
M peep.c

  Log Message:
  ---
  peep.c:OP_PADSV_STORE - skip SASSIGN created by Memoize::Once

Memoize::Once produces a non-standard SASSIGN which should not and
need not be optimized. Because this SASSIGN has only one child,
something that hasn't been seen elsewhere, that can be used as a
heuristic for skipping this type of SASSIGN in rpeep().




[Perl/perl5] e63223: Perldelta for GH#20077 (addition to existing list)

2022-08-25 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: e63223c9d222ea0c196e1b7a4602b80efb98131e
  
https://github.com/Perl/perl5/commit/e63223c9d222ea0c196e1b7a4602b80efb98131e
  Author: Richard Leach 
  Date:   2022-08-25 (Thu, 25 Aug 2022)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  Perldelta for GH#20077 (addition to existing list)




[Perl/perl5] c74a92: Add OPpTARGET_MY optimization to OP_UNDEF

2022-08-25 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: c74a928a43322c574522f122a3f3a29262f90613
  
https://github.com/Perl/perl5/commit/c74a928a43322c574522f122a3f3a29262f90613
  Author: Richard Leach 
  Date:   2022-08-25 (Thu, 25 Aug 2022)

  Changed paths:
M ext/B/t/optree_varinit.t
M lib/B/Deparse.pm
M lib/B/Op_private.pm
M opcode.h
M peep.c
M pp.c
M regen/op_private
M t/op/undef.t
M t/perf/benchmarks
M t/perf/opcount.t

  Log Message:
  ---
  Add OPpTARGET_MY optimization to OP_UNDEF

This allows the existing `undef` OP to act on a pad SV. The following
two cases are optimized:

`undef my $x`, currently implemented as:
4 <1> undef vK/1 ->5
3<0> padsv[$x:1,2] sRM/LVINTRO ->4

`my $a = undef`, currently implemented as:

5 <2> sassign vKS/2 ->6
3<0> undef s ->4
4<0> padsv[$x:1,2] sRM*/LVINTRO ->5

These are now just represented as:

   3 <1> undef[$x:1,2] vK/SOMEFLAGS ->4

Note: The two cases are not quite functionally identical, as `$x = undef`
clears the SV flags but preserves any PV allocation for later reuse,
whereas `undef $x` does free any PV allocation. This behaviour difference
is preserved through use of the OPpUNDEF_KEEP_PV flag.




[Perl/perl5] 6f6297: rpeep: don't apply padsv_store and padrange together

2022-08-23 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 6f629715866f9fa9452688fb66ee6661307b7a78
  
https://github.com/Perl/perl5/commit/6f629715866f9fa9452688fb66ee6661307b7a78
  Author: Richard Leach 
  Date:   2022-08-23 (Tue, 23 Aug 2022)

  Changed paths:
M peep.c
M t/op/lex_assign.t

  Log Message:
  ---
  rpeep: don't apply padsv_store and padrange together

As originally committed, the OP_PADSV_STORE optimization interacted
negatively with OP_PADRANGE:

1. The new rpeep code was buggy, as it assumed that oldop must be the
targ PADSV, when it could have been a padrange. In the first case,
updating `oldoldop->op_next = o` is correct, in the second case the
op_next chain must be left as-is. That was easily fixable.

2. There was some problem with stack book-keeping - probably of the
mark stack. The following test case continued to fail even after
the rpeep code had been fixed:
my $x = {}; my $y; print keys %{$y = $x};

However, since both OP_PADSV_STORE and OP_PADRANGE optimize by taking
the targ PADSV out of the op_next chain, it was apparent that there is
reduced gain from having both optimizations applied to the same optree.

Therefore, the simple fix applied by this commit is to modify peep(),
such that the OP_PADSV_STORE optimization is not applied when OP_PADRANGE
has already been applied.

Existing tests did not pick up the problems, which were identified via
Blead-Breaks-CPAN reports. Additional tests have thus been included.




[Perl/perl5] 22887b: Perldelta for GH#19943 (OP_PADSV_STORE)

2022-08-17 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 22887b5bfa220f1de2e85d93f5387a8870cc1ae7
  
https://github.com/Perl/perl5/commit/22887b5bfa220f1de2e85d93f5387a8870cc1ae7
  Author: Richard Leach 
  Date:   2022-08-17 (Wed, 17 Aug 2022)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  Perldelta for GH#19943 (OP_PADSV_STORE)

The wording has been left generic, since other such optimizations
are in the PR queue and could just be tacked on the end later.




[Perl/perl5] 9fdd7f: Implement OP_PADSV_STORE - combined sassign/padsv OP

2022-08-17 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 9fdd7fc4796d89d16dceea42f2af91e4fde296ed
  
https://github.com/Perl/perl5/commit/9fdd7fc4796d89d16dceea42f2af91e4fde296ed
  Author: Richard Leach 
  Date:   2022-08-17 (Wed, 17 Aug 2022)

  Changed paths:
M ext/B/t/b.t
M ext/B/t/optree_concise.t
M ext/B/t/optree_samples.t
M ext/B/t/optree_varinit.t
M ext/Opcode/Opcode.pm
M lib/B/Deparse.pm
M lib/B/Op_private.pm
M opcode.h
M opnames.h
M peep.c
M pp_hot.c
M pp_proto.h
M regen/op_private
M regen/opcodes
M t/perf/opcount.t

  Log Message:
  ---
  Implement OP_PADSV_STORE - combined sassign/padsv OP

This commit introduces a new OP to replace simple cases
of OP_SASSIGN and OP_PADSV.

For example, 'my $x = 1' is currently implemented as:

1  <;> nextstate(main 1 -e:1) v:{
2  <$> const(IV 1) s
3  <0> padsv[$x:1,2] sRM*/LVINTRO
4  <2> sassign vKS/2

But now will be turned into:

1  <;> nextstate(main 1 -e:1) v:{
2  <$> const(IV 1) s
3  <1> padsv_store[$x:1,2] vKMS/LVINTRO

This intended to be a transparent performance optimization.
It should be applicable for RHS optrees of varying complexity.




[Perl/perl5] e033b0: sv.c - add Perl_newSVhek_mortal

2022-08-05 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: e033b0b9c2bf27f70f0267fc75188d4e7d2fc863
  
https://github.com/Perl/perl5/commit/e033b0b9c2bf27f70f0267fc75188d4e7d2fc863
  Author: Richard Leach 
  Date:   2022-08-05 (Fri, 05 Aug 2022)

  Changed paths:
M embed.fnc
M embed.h
M proto.h
M sv.c

  Log Message:
  ---
  sv.c - add Perl_newSVhek_mortal

This is a small wrapper function intended to replace use of
sv_2mortal(newSVhek(...))

This provides some small optimization, since sv_2mortal performs
a number of checks for conditions that we know cannot be true.


  Commit: 518db96ae536faa5656a7cdc6b3dc510b75edb79
  
https://github.com/Perl/perl5/commit/518db96ae536faa5656a7cdc6b3dc510b75edb79
  Author: Richard Leach 
  Date:   2022-08-05 (Fri, 05 Aug 2022)

  Changed paths:
M gv.c
M hv.c
M mro_core.c
M op.c
M pp.c
M pp_sys.c
M sv.c
M toke.c
M util.c

  Log Message:
  ---
  Replace sv_2mortal(newSVhek( with newSVhek_mortal

The new Perl_newSVhek_mortal function is slightly more efficient.


Compare: https://github.com/Perl/perl5/compare/819d09b57c6a...518db96ae536


[Perl/perl5] 819d09: Perl_newRV_noinc - explicitly simplify, convert to...

2022-08-05 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 819d09b57c6a76b0ba90670a1ea1861730bc457b
  
https://github.com/Perl/perl5/commit/819d09b57c6a76b0ba90670a1ea1861730bc457b
  Author: Richard Leach 
  Date:   2022-08-05 (Fri, 05 Aug 2022)

  Changed paths:
M embed.fnc
M proto.h
M sv.c
M sv_inline.h

  Log Message:
  ---
  Perl_newRV_noinc - explicitly simplify, convert to inline func

Perl_newRV_noinc creates a new SVt_IV, then calls sv_setrv_noinc,
which will check if the SVt_IV is SvTHINKFIRST (it won't be) and
if it is types other than SVt_IV (it won't be). If those checks
and associated branches are removed, all that remains is some flag
twiddling and setting the sv_u.svu_rv pointer.

A decent compiler *might* figure that all out and simplify
Perl_newRV_noinc right down to the essentials, but if we do that
directly, the entire function is small enough to move to sv_inline.h




[Perl/perl5] 5aaf02: Perl_reg_named_buff_fetch - simpler retarray creat...

2022-08-01 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 5aaf02785ac2afc87abd458c0e6469818cc28775
  
https://github.com/Perl/perl5/commit/5aaf02785ac2afc87abd458c0e6469818cc28775
  Author: Richard Leach 
  Date:   2022-08-02 (Tue, 02 Aug 2022)

  Changed paths:
M regcomp.c

  Log Message:
  ---
  Perl_reg_named_buff_fetch - simpler retarray creation & push

retarray is a straightforward array created and populated with
SvIVX(sv_dat) number of elements within this function. As the
number of elements is known and all elements will be used, a
correctly-sized array can be created using newAV_alloc_x.

Since it's a straightforward array, av_push_simple can be used in
place of av_push. This will be more efficient.




[Perl/perl5] 3b6b04: newAVav/newAVhv - use faster newAV_alloc_x(z) macros

2022-07-20 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 3b6b0454f77464cedcad7102764c6788a4f14ba8
  
https://github.com/Perl/perl5/commit/3b6b0454f77464cedcad7102764c6788a4f14ba8
  Author: Richard Leach 
  Date:   2022-07-20 (Wed, 20 Jul 2022)

  Changed paths:
M av.c

  Log Message:
  ---
  newAVav/newAVhv - use faster newAV_alloc_x(z) macros


  Commit: 80c024ac46cfd7ea9195a681104a2c19cc18dcbf
  
https://github.com/Perl/perl5/commit/80c024ac46cfd7ea9195a681104a2c19cc18dcbf
  Author: Richard Leach 
  Date:   2022-07-20 (Wed, 20 Jul 2022)

  Changed paths:
M av.c

  Log Message:
  ---
  newAVav - av_push_simple for faster ret array assignment


  Commit: f98a2322bc85e4c02c26642730743969df0937bb
  
https://github.com/Perl/perl5/commit/f98a2322bc85e4c02c26642730743969df0937bb
  Author: Richard Leach 
  Date:   2022-07-20 (Wed, 20 Jul 2022)

  Changed paths:
M av.c

  Log Message:
  ---
  newAVhv - av_push_simple for faster ret array assignments


Compare: https://github.com/Perl/perl5/compare/35c98d68a648...f98a2322bc85


[Perl/perl5] bda3b1: B::Concise - private flags may store the argument ...

2022-07-17 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: bda3b19c10a9003a3e7c8c91f6674d892bcc2100
  
https://github.com/Perl/perl5/commit/bda3b19c10a9003a3e7c8c91f6674d892bcc2100
  Author: Richard Leach 
  Date:   2022-07-18 (Mon, 18 Jul 2022)

  Changed paths:
M ext/B/B/Concise.pm

  Log Message:
  ---
  B::Concise - private flags may store the argument count




[Perl/perl5] 5af5b2: pp_aelemfast: include fast return for non-lvals

2022-06-15 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 5af5b232a2dc0e42e74fa716f7cf429ba9e386ac
  
https://github.com/Perl/perl5/commit/5af5b232a2dc0e42e74fa716f7cf429ba9e386ac
  Author: Richard Leach 
  Date:   2022-06-15 (Wed, 15 Jun 2022)

  Changed paths:
M pp_hot.c

  Log Message:
  ---
  pp_aelemfast: include fast return for non-lvals

Within the "inlined av_fetch() for simple cases" fast path, we already
operate within the bounding conditions of the if() statement. Once
AvARRAY(av)[key] is found to be null, a call of av_fetch(av,key,lval)
here just boils down to a single line:

return lval ? av_store(av,key,newSV_type(SVt_NULL)) : NULL;

Checking the rest of pp_aelemfast, it's clear that within the fast
path, if (!sv) and (!lval), the function must eventually
PUSHs(_sv_undef). So the fast path might as well do that directly.




[Perl/perl5] a9b64e: inline.h: add av_push_simple

2022-06-08 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: a9b64e60085410a21f22d9df311cfe251b44d446
  
https://github.com/Perl/perl5/commit/a9b64e60085410a21f22d9df311cfe251b44d446
  Author: Richard Leach 
  Date:   2022-06-08 (Wed, 08 Jun 2022)

  Changed paths:
M embed.fnc
M embed.h
M inline.h
M proto.h

  Log Message:
  ---
  inline.h: add av_push_simple

A simplified version of av_push, along the lines of av_store_simple and
av_fetch_simple. This function is trivial, but having it makes refactoring
of existing code easier to read.

For example, changing:
av_push(some_av, val);
to:
av_push_simple(some_av,val);

is easier to read than:
av_store_simple(some_av, AvFILLp(some_av) + 1, val)


  Commit: eae3cc9643eecd5d8b27c8fb4a3dc3bfebaf57e3
  
https://github.com/Perl/perl5/commit/eae3cc9643eecd5d8b27c8fb4a3dc3bfebaf57e3
  Author: Richard Leach 
  Date:   2022-06-08 (Wed, 08 Jun 2022)

  Changed paths:
M av.c
M embed.fnc
M inline.h
M proto.h

  Log Message:
  ---
  Move av_new_alloc from av.c to inline.h

There was less benefit in doing this prior to newSV_type becoming an inline
function. Now that it is, inlining av_new_alloc can help compilers eliminate
redundant setting of AvMAX/AvFILLp and unnecessary branches of any following
inlined calls to av_store_simple.


  Commit: 74279cb654174c8653f8e15198a6aa843636148e
  
https://github.com/Perl/perl5/commit/74279cb654174c8653f8e15198a6aa843636148e
  Author: Richard Leach 
  Date:   2022-06-08 (Wed, 08 Jun 2022)

  Changed paths:
M mro_core.c
M perlio.c
M sv.c

  Log Message:
  ---
  Make use of av_push_simple in a few places.

Specifically, only where a new AV has just been created and it's therefore
obvious that av_push_simple is safe to use.

In many cases, nearby code does av_push to an existing array. It might
well be the case that these are simple arrays and av_push_simple could be
used instead. The necessary analysis has been left for the future.


Compare: https://github.com/Perl/perl5/compare/37a94617085a...74279cb65417


[Perl/perl5] 2ebf8a: pp_unshift: av_store is often unnecessary

2022-06-07 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 2ebf8a2046483a8d79ad2050abd76cc78e70dd3c
  
https://github.com/Perl/perl5/commit/2ebf8a2046483a8d79ad2050abd76cc78e70dd3c
  Author: Richard Leach 
  Date:   2022-06-08 (Wed, 08 Jun 2022)

  Changed paths:
M pp.c

  Log Message:
  ---
  pp_unshift: av_store is often unnecessary




[Perl/perl5] 2356f8: Move sv.h functions from inline.h into sv_inline.h,

2022-05-28 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 2356f8bb5077e29623007d815dab58f43473a56d
  
https://github.com/Perl/perl5/commit/2356f8bb5077e29623007d815dab58f43473a56d
  Author: Richard Leach 
  Date:   2022-05-28 (Sat, 28 May 2022)

  Changed paths:
M inline.h
M sv_inline.h

  Log Message:
  ---
  Move sv.h functions from inline.h into sv_inline.h,

so that all functions inlined from sv.* are in one place. This was
suggested by @khw.




[Perl/perl5] d0c76c: Perl_reg_named_buff_fetch: simplify newSVsv(_sv...

2022-04-04 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: d0c76c0f88e5946c926a0cb191e20b5d9f2c6939
  
https://github.com/Perl/perl5/commit/d0c76c0f88e5946c926a0cb191e20b5d9f2c6939
  Author: Richard Leach 
  Date:   2022-04-04 (Mon, 04 Apr 2022)

  Changed paths:
M regcomp.c

  Log Message:
  ---
  Perl_reg_named_buff_fetch: simplify newSVsv(_sv_undef)

Specifically, newSVsv(_sv_undef) reduces to just newSV_type(SVt_NULL).




[Perl/perl5] b944b7: Perl_newSVnv: simplify SV creation and SvNV_set

2022-03-20 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: b944b7ba26833a5a2716dc6cc2542a994ff63c2c
  
https://github.com/Perl/perl5/commit/b944b7ba26833a5a2716dc6cc2542a994ff63c2c
  Author: Richard Leach 
  Date:   2022-03-20 (Sun, 20 Mar 2022)

  Changed paths:
M sv.c

  Log Message:
  ---
  Perl_newSVnv: simplify SV creation and SvNV_set

The function can be simplified by using the now-inlined newSV_type
function, directly using SvNV_set, and twiddling the required flags.

This cuts out any function call overhead, a switch statement leading
to a sv_upgrade(sv, SVt_NV) call, and a touch more bit-twiddling than
is necessary.


  Commit: 915544426781d184e3b057e63a20c089a32d3eba
  
https://github.com/Perl/perl5/commit/915544426781d184e3b057e63a20c089a32d3eba
  Author: Richard Leach 
  Date:   2022-03-20 (Sun, 20 Mar 2022)

  Changed paths:
M sv.c

  Log Message:
  ---
  Perl_newSViv: simplify by using (inline) newSV_type


Compare: https://github.com/Perl/perl5/compare/a933fcc5f0f3...915544426781


[Perl/perl5] d6b487: perl.c: www.perl.org uses https

2022-03-13 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: d6b487cec2690eccc59f18bd6c3803ea06b3c9d6
  
https://github.com/Perl/perl5/commit/d6b487cec2690eccc59f18bd6c3803ea06b3c9d6
  Author: Richard Leach 
  Date:   2022-03-13 (Sun, 13 Mar 2022)

  Changed paths:
M perl.c

  Log Message:
  ---
  perl.c: www.perl.org uses https




[Perl/perl5] 75acd1: Make newSV_type an inline function

2022-03-06 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 75acd14e43f2ffb698fc7032498f31095b56adb5
  
https://github.com/Perl/perl5/commit/75acd14e43f2ffb698fc7032498f31095b56adb5
  Author: Richard Leach 
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
M MANIFEST
M embed.fnc
M embed.h
M perl.h
M proto.h
M sv.c
M sv.h
A sv_inline.h

  Log Message:
  ---
  Make newSV_type an inline function

When a new SV is created and upgraded to a type known at compile time,
uprooting a SV head and then using the general-purpose upgrade function
(sv_upgrade) is clunky. Specifically, while uprooting a SV head is
lightweight (assuming there are unused SVs), sv_upgrade is too big to be
inlined, contains many branches that can logically be resolved at compile
time for known start & end types, and the lookup of the correct
body_details struct may add CPU cycles.

This commit tries to address that by making newSV_type an inline function
and including only the parts of sv_upgrade needed to upgrade a SVt_NULL.
When the destination type is known at compile time, a decent compiler will
inline a call to newSV_type and use the type information to throw away all
the irrelevant parts of the sv_upgrade logic.

Because of the spread of type definitions across header files, it did not
seem possible to make the necessary changed inside sv.h, and so a new
header file (sv_inline.h) was created. For the inlined function to work
outside of sv.c, many definitions from that file were moved to sv_inline.h.

Finally, in order to also benefit from this change, existing code in sv.c
that does things like this:
SV* sv;
new_SV(sv);
sv_upgrade(sv, SVt_PV)
has been modified to read something like:
SV* sv = newSV_type(SVt_PV);


  Commit: 8fcb24256a3027cbca7c100825eb3805586fe1e5
  
https://github.com/Perl/perl5/commit/8fcb24256a3027cbca7c100825eb3805586fe1e5
  Author: Richard Leach 
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
M av.c
M dump.c
M gv.c
M hv.c
M inline.h
M op.c
M pad.c
M pp.c
M pp_ctl.c
M pp_hot.c
M regexec.c
M scope.c
M sv.c
M toke.c

  Log Message:
  ---
  Inlined newSV_type(SVt_NULL) leaner than non-inlined newSV(0)

When a function outside of sv.c creates a SV via newSV(0):
 * There is a call to Perl_newSV
 * A SV head is uprooted and its flags set
 * A runtime check is made to effectively see if 0 > 0
 * The new SV* is returned

Replacing newSV(0) with newSV_type(SVt_NULL) should be more efficient,
because (assuming there are SV heads to uproot), the only step is:
 * A SV head is uprooted and its flags set


  Commit: 7ea8b04b5a0e6952b7ffd5a8fd96468b72da6bea
  
https://github.com/Perl/perl5/commit/7ea8b04b5a0e6952b7ffd5a8fd96468b72da6bea
  Author: Richard Leach 
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
M av.c
M doop.c
M embed.fnc
M embed.h
M gv.c
M hv.c
M mg.c
M mro_core.c
M pad.c
M pp.c
M pp_ctl.c
M pp_hot.c
M proto.h
M regcomp.c
M sv_inline.h
M universal.c

  Log Message:
  ---
  Perl_newSV_type_mortal - new inline function introduced and used

There's no efficient way to create a mortal SV of any type other than
SVt_NULL (via sv_newmortal). The options are either to do:

* SV* sv = sv_newmortal; sv_upgrade(sv, SVt_SOMETYPE);
  but sv_upgrade is needlessly inefficient on new SVs.

* SV* sv = sv_2mortal(newSV_type(SVt_SOMETYPE)
  but this will perform runtime checks to see if (sv) and if (SvIMMORTAL(sv),
  and for a new SV we know that those answers will always be yes and no.

This commit adds a new inline function which is basically a mortalizing
wrapper around the now-inlined newSV_type.


Compare: https://github.com/Perl/perl5/compare/4f1687891150...7ea8b04b5a0e


[Perl/perl5] 28b761: sv_upgrade: remove redundant AvALLOC(sv) = 0

2021-12-24 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 28b7611abf757b803ec5b296d60fc99763c1c8d0
  
https://github.com/Perl/perl5/commit/28b7611abf757b803ec5b296d60fc99763c1c8d0
  Author: Richard Leach 
  Date:   2021-12-24 (Fri, 24 Dec 2021)

  Changed paths:
M sv.c

  Log Message:
  ---
  sv_upgrade: remove redundant AvALLOC(sv) = 0

xav_alloc is a member of the xpvav struct. The instance modified
here would have been Zero()ed several lines previously, so both
sides of this if() branch should be no-ops.

With gcc 8.3.0 the compiled function is about 6 instructions smaller.


  Commit: 0d63558f3807c54b42649c7b9d8dbfbcb727b0ff
  
https://github.com/Perl/perl5/commit/0d63558f3807c54b42649c7b9d8dbfbcb727b0ff
  Author: Richard Leach 
  Date:   2021-12-24 (Fri, 24 Dec 2021)

  Changed paths:
M sv.c

  Log Message:
  ---
  sv_upgrade: c99 compound literals to initialize xpvav/xpvhv

For both the AV and HV cases, the new body is Zero()ed but then various
struct members are set to non-zero values. Now that we support parts of
c99, it seems more efficient to use compound literals to initailize the
struct members.

With gcc v8.3.0, the compiled function is smaller by 25 instructions.
sv.o is slightly smaller, but the final perl binary size is unchanged.


Compare: https://github.com/Perl/perl5/compare/b135e9358aa9...0d63558f3807


[Perl/perl5] 5124a9: Minor RMG tweaks

2021-12-16 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 5124a90647cf2887ce5f9ec87f78b40257a3aff2
  
https://github.com/Perl/perl5/commit/5124a90647cf2887ce5f9ec87f78b40257a3aff2
  Author: Richard Leach 
  Date:   2021-12-16 (Thu, 16 Dec 2021)

  Changed paths:
M Porting/release_managers_guide.pod

  Log Message:
  ---
  Minor RMG tweaks




[Perl/perl5] 7b88b1: Minor output tweaks to sync-with-cpan

2021-12-16 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 7b88b133f0456ec3803ae568755c54e41dc064d6
  
https://github.com/Perl/perl5/commit/7b88b133f0456ec3803ae568755c54e41dc064d6
  Author: Richard Leach 
  Date:   2021-12-16 (Thu, 16 Dec 2021)

  Changed paths:
M Porting/sync-with-cpan

  Log Message:
  ---
  Minor output tweaks to sync-with-cpan




[Perl/perl5] f7f919: Misc microoptimizations when dealing with new SVs

2021-12-04 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: f7f919a02477385250997b98fe25f99657653150
  
https://github.com/Perl/perl5/commit/f7f919a02477385250997b98fe25f99657653150
  Author: Richard Leach 
  Date:   2021-12-04 (Sat, 04 Dec 2021)

  Changed paths:
M hv.c
M pp.c
M pp_ctl.c
M pp_hot.c
M pp_sys.c

  Log Message:
  ---
  Misc microoptimizations when dealing with new SVs

In a few places, SVs can be created more efficiently or new SVs
can be assigned to more efficiently. Small changes included:
* Use sv_setpvn_fresh instead of sv_setpvn
* Use sv_mortalcopy_flags instead of sv_newmortal + sv_setsv_flags
* newSVsv_flags instead of newSV + sv_setsv_flags
* sv_newmortal instead of sv_2mortal(newSV(0))
* Remove a SvGROW(sv, 257) following a newSV(257)




[Perl/perl5] 2a98b8: newSVpvn_flags().. is more efficient than sv_2mort...

2021-11-28 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 2a98b8cbbc6f75b5aaefb10acc4da4427359fcea
  
https://github.com/Perl/perl5/commit/2a98b8cbbc6f75b5aaefb10acc4da4427359fcea
  Author: Richard Leach 
  Date:   2021-11-29 (Mon, 29 Nov 2021)

  Changed paths:
M op.c
M pp_sys.c
M regcomp.c
M toke.c

  Log Message:
  ---
  newSVpvn_flags().. is more efficient than sv_2mortal(newSVpvn(..))

The same holds for newSVpvs* wrappers around newSVpvn* functions.




[Perl/perl5] c80a86: newSVpvn_flags(x, .. ,SVs_TEMP) more efficient tha...

2021-11-28 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: c80a8618143e98aed6d9e5bbaee16d0308e211d0
  
https://github.com/Perl/perl5/commit/c80a8618143e98aed6d9e5bbaee16d0308e211d0
  Author: Richard Leach 
  Date:   2021-11-29 (Mon, 29 Nov 2021)

  Changed paths:
M inline.h
M perl.c
M perlio.c
M pp_sys.c

  Log Message:
  ---
  newSVpvn_flags(x, .. ,SVs_TEMP) more efficient than sv_2mortal(newSVpv(x,0))




[Perl/perl5] 46c759: Fixup Corelist.pm

2021-11-22 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 46c7599cc0712f9fb0b16e7121aca51cc407ad0d
  
https://github.com/Perl/perl5/commit/46c7599cc0712f9fb0b16e7121aca51cc407ad0d
  Author: Richard Leach 
  Date:   2021-11-22 (Mon, 22 Nov 2021)

  Changed paths:
M dist/Module-CoreList/lib/Module/CoreList.pm

  Log Message:
  ---
  Fixup Corelist.pm




[Perl/perl5] 642089: Prepare Module::Corelist for 5.35.7

2021-11-22 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 6420890349a1b30bab5f201e19057a9f691a88ba
  
https://github.com/Perl/perl5/commit/6420890349a1b30bab5f201e19057a9f691a88ba
  Author: Richard Leach 
  Date:   2021-11-22 (Mon, 22 Nov 2021)

  Changed paths:
M Porting/Maintainers.pl
M dist/Module-CoreList/Changes
M dist/Module-CoreList/lib/Module/CoreList.pm
M dist/Module-CoreList/lib/Module/CoreList/Utils.pm

  Log Message:
  ---
  Prepare Module::Corelist for 5.35.7




[Perl/perl5] abee8b: Add epigraph for 5.35.6

2021-11-20 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: abee8ba0ade8d70a05b8012c216871c81b607105
  
https://github.com/Perl/perl5/commit/abee8ba0ade8d70a05b8012c216871c81b607105
  Author: Richard Leach 
  Date:   2021-11-21 (Sun, 21 Nov 2021)

  Changed paths:
M Porting/epigraphs.pod

  Log Message:
  ---
  Add epigraph for 5.35.6


  Commit: cec8b4ef63a0826b8d696467c35b2016ae3ed354
  
https://github.com/Perl/perl5/commit/cec8b4ef63a0826b8d696467c35b2016ae3ed354
  Author: Richard Leach 
  Date:   2021-11-21 (Sun, 21 Nov 2021)

  Changed paths:
M Porting/release_schedule.pod

  Log Message:
  ---
  Tick off 5.35.6 from release schedule


  Commit: 2fac577b7e23d1a31924032008b3260a91bff494
  
https://github.com/Perl/perl5/commit/2fac577b7e23d1a31924032008b3260a91bff494
  Author: Richard Leach 
  Date:   2021-11-21 (Sun, 21 Nov 2021)

  Changed paths:
M MANIFEST
M Makefile.SH
M pod/.gitignore
M pod/perl.pod
A pod/perl5356delta.pod
M pod/perldelta.pod
M vms/descrip_mms.template
M win32/GNUmakefile
M win32/Makefile
M win32/pod.mak

  Log Message:
  ---
  new perldelta for 5.35.7


  Commit: e8a7ae4b24294cd1c95f88ce956e00b2e699de96
  
https://github.com/Perl/perl5/commit/e8a7ae4b24294cd1c95f88ce956e00b2e699de96
  Author: Richard Leach 
  Date:   2021-11-21 (Sun, 21 Nov 2021)

  Changed paths:
M Cross/config.sh-arm-linux
M Cross/config.sh-arm-linux-n770
M INSTALL
M META.json
M META.yml
M Porting/config.sh
M Porting/config_H
M Porting/perldelta_template.pod
M Porting/todo.pod
M README.haiku
M README.macosx
M README.os2
M README.vms
M hints/catamount.sh
M lib/B/Op_private.pm
M patchlevel.h
M plan9/config_sh.sample
M win32/GNUmakefile
M win32/Makefile

  Log Message:
  ---
  Bump the perl version in various places for 5.35.7


Compare: https://github.com/Perl/perl5/compare/7badc7c896a8...e8a7ae4b2429


[Perl/perl5]

2021-11-20 Thread Richard Leach via perl5-changes
  Branch: refs/tags/v5.35.6
  Home:   https://github.com/Perl/perl5


[Perl/perl5] dc12d1: Update AUTHORS list for 5.35.6

2021-11-20 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: dc12d1ae70606f7e4903f72e0e816183500a
  
https://github.com/Perl/perl5/commit/dc12d1ae70606f7e4903f72e0e816183500a
  Author: Richard Leach 
  Date:   2021-11-20 (Sat, 20 Nov 2021)

  Changed paths:
M AUTHORS

  Log Message:
  ---
  Update AUTHORS list for 5.35.6


  Commit: 507e155a7ee3d28d6324ebcee9569d898c8acc56
  
https://github.com/Perl/perl5/commit/507e155a7ee3d28d6324ebcee9569d898c8acc56
  Author: Richard Leach 
  Date:   2021-11-20 (Sat, 20 Nov 2021)

  Changed paths:
M dist/Module-CoreList/lib/Module/CoreList.pm

  Log Message:
  ---
  Update Module::CoreList for 5.35.6


  Commit: deaec9bf9ff148ae0b4f8d0a644b1c262a2b688e
  
https://github.com/Perl/perl5/commit/deaec9bf9ff148ae0b4f8d0a644b1c262a2b688e
  Author: Richard Leach 
  Date:   2021-11-20 (Sat, 20 Nov 2021)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  Update perldelta for 5.35.6 release


  Commit: 7badc7c896a8f12c680283f7fbf93fb1e22a24da
  
https://github.com/Perl/perl5/commit/7badc7c896a8f12c680283f7fbf93fb1e22a24da
  Author: Richard Leach 
  Date:   2021-11-20 (Sat, 20 Nov 2021)

  Changed paths:
M pod/perlhist.pod

  Log Message:
  ---
  add new release to perlhist


Compare: https://github.com/Perl/perl5/compare/70074337fe75...7badc7c896a8


[Perl/perl5] b80b9f: Update HTTP::Tiny to v0.080

2021-11-19 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: b80b9f7fc6d09dfbec9460c291b313623f8560f0
  
https://github.com/Perl/perl5/commit/b80b9f7fc6d09dfbec9460c291b313623f8560f0
  Author: Richard Leach 
  Date:   2021-11-19 (Fri, 19 Nov 2021)

  Changed paths:
M Porting/Maintainers.pl
M cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
M cpan/HTTP-Tiny/t/140_proxy.t
M cpan/HTTP-Tiny/t/141_no_proxy.t

  Log Message:
  ---
  Update HTTP::Tiny to v0.080

0.080 2021-11-05 08:15:46-04:00 America/New_York

- No changes from 0.079-TRIAL.

0.079 2021-11-04 12:33:43-04:00 America/New_York (TRIAL RELEASE)

[FIXED]

- Fixed uninitialized value warnings on older Perls when the
  REQUEST_METHOD environment variable is set and CGI_HTTP_PROXY
  is not.




[Perl/perl5] 6853e8: Update bignum, Math::BigInt, Math::BigInt::FastCal...

2021-11-19 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 6853e8af3bcdae27c05a50e71c8ede1ab2b42822
  
https://github.com/Perl/perl5/commit/6853e8af3bcdae27c05a50e71c8ede1ab2b42822
  Author: Richard Leach 
  Date:   2021-11-19 (Fri, 19 Nov 2021)

  Changed paths:
M MANIFEST
M Makefile.SH
M Porting/Maintainers.pl
M cpan/Math-BigInt-FastCalc/lib/Math/BigInt/FastCalc.pm
M cpan/Math-BigInt-FastCalc/t/bigintfc.t
M cpan/Math-BigInt-FastCalc/t/biglog.t
M cpan/Math-BigInt-FastCalc/t/bigroot.t
M cpan/Math-BigInt-FastCalc/t/bootstrap.t
M cpan/Math-BigInt-FastCalc/t/leak.t
M cpan/Math-BigInt-FastCalc/t/mbi_rand.t
M cpan/Math-BigInt/lib/Math/BigFloat.pm
M cpan/Math-BigInt/lib/Math/BigInt.pm
M cpan/Math-BigInt/lib/Math/BigInt/Calc.pm
M cpan/Math-BigInt/lib/Math/BigInt/Lib.pm
M cpan/Math-BigInt/t/Math/BigFloat/Subclass.pm
M cpan/Math-BigInt/t/Math/BigInt/BareCalc.pm
M cpan/Math-BigInt/t/Math/BigInt/Lib/TestUtil.pm
M cpan/Math-BigInt/t/Math/BigInt/Subclass.pm
A cpan/Math-BigInt/t/_bin_parts_to_lib_parts.t
A cpan/Math-BigInt/t/_bin_str_to_str_parts.t
A cpan/Math-BigInt/t/_dec_parts_to_lib_parts.t
A cpan/Math-BigInt/t/_dec_str_to_str_parts.t
M cpan/Math-BigInt/t/_e_math.t
A cpan/Math-BigInt/t/_hex_str_to_str_parts.t
A cpan/Math-BigInt/t/_oct_str_to_str_parts.t
M cpan/Math-BigInt/t/alias.inc
M cpan/Math-BigInt/t/backermann-mbi.t
M cpan/Math-BigInt/t/bare_mbf.t
M cpan/Math-BigInt/t/bare_mbi.t
M cpan/Math-BigInt/t/bare_mif.t
M cpan/Math-BigInt/t/bdigitsum-mbi.t
M cpan/Math-BigInt/t/bdstr-mbf.t
M cpan/Math-BigInt/t/bdstr-mbi.t
M cpan/Math-BigInt/t/bestr-mbf.t
M cpan/Math-BigInt/t/bestr-mbi.t
M cpan/Math-BigInt/t/bfib-mbi.t
M cpan/Math-BigInt/t/big_pi_e.t
M cpan/Math-BigInt/t/bigfltpm.inc
M cpan/Math-BigInt/t/bigfltpm.t
M cpan/Math-BigInt/t/bigintc-import.t
M cpan/Math-BigInt/t/bigintc.t
M cpan/Math-BigInt/t/bigintpm.inc
M cpan/Math-BigInt/t/bigintpm.t
M cpan/Math-BigInt/t/bigints.t
M cpan/Math-BigInt/t/biglog.t
M cpan/Math-BigInt/t/bigroot.t
M cpan/Math-BigInt/t/blucas-mbi.t
M cpan/Math-BigInt/t/bnok-mbf.t
M cpan/Math-BigInt/t/bnok-mbi.t
M cpan/Math-BigInt/t/bnstr-mbf.t
M cpan/Math-BigInt/t/bnstr-mbi.t
A cpan/Math-BigInt/t/bpi-mbf.t
A cpan/Math-BigInt/t/bpi-mbi.t
M cpan/Math-BigInt/t/bsstr-mbf.t
M cpan/Math-BigInt/t/bsstr-mbi.t
M cpan/Math-BigInt/t/buparrow-mbi.t
M cpan/Math-BigInt/t/calling-class-methods.t
A cpan/Math-BigInt/t/calling-constant.t
M cpan/Math-BigInt/t/calling-instance-methods.t
A cpan/Math-BigInt/t/calling-lib1.t
A cpan/Math-BigInt/t/calling-lib2.t
R cpan/Math-BigInt/t/calling.t
M cpan/Math-BigInt/t/config.t
A cpan/Math-BigInt/t/const-mbf.t
A cpan/Math-BigInt/t/const-mbi.t
R cpan/Math-BigInt/t/const_mbf.t
R cpan/Math-BigInt/t/constant.t
M cpan/Math-BigInt/t/downgrade.t
M cpan/Math-BigInt/t/dparts-mbf.t
M cpan/Math-BigInt/t/dparts-mbi.t
M cpan/Math-BigInt/t/eparts-mbf.t
M cpan/Math-BigInt/t/eparts-mbi.t
M cpan/Math-BigInt/t/from_base-mbi.t
M cpan/Math-BigInt/t/from_base_num-mbi.t
M cpan/Math-BigInt/t/from_bin-mbf.t
M cpan/Math-BigInt/t/from_bin-mbi.t
M cpan/Math-BigInt/t/from_hex-mbf.t
M cpan/Math-BigInt/t/from_hex-mbi.t
M cpan/Math-BigInt/t/from_ieee754-mbf.t
M cpan/Math-BigInt/t/from_oct-mbf.t
M cpan/Math-BigInt/t/from_oct-mbi.t
M cpan/Math-BigInt/t/inf_nan.t
M cpan/Math-BigInt/t/isa.t
A cpan/Math-BigInt/t/lib_load-mbf-mbi.t
A cpan/Math-BigInt/t/lib_load-mbi-mbf.t
R cpan/Math-BigInt/t/lib_load.t
M cpan/Math-BigInt/t/mbf_ali.t
M cpan/Math-BigInt/t/mbi_ali.t
M cpan/Math-BigInt/t/mbi_rand.t
M cpan/Math-BigInt/t/mbimbf.t
M cpan/Math-BigInt/t/nan_cmp.t
M cpan/Math-BigInt/t/new-mbf.t
A cpan/Math-BigInt/t/new-mbi.t
M cpan/Math-BigInt/t/new_overloaded.t
M cpan/Math-BigInt/t/nparts-mbf.t
M cpan/Math-BigInt/t/nparts-mbi.t
M cpan/Math-BigInt/t/objectify_mbf.t
M cpan/Math-BigInt/t/objectify_mbi.t
M cpan/Math-BigInt/t/req_mbf0.t
M cpan/Math-BigInt/t/req_mbf1.t
M cpan/Math-BigInt/t/req_mbfa.t
M cpan/Math-BigInt/t/req_mbfi.t
M cpan/Math-BigInt/t/req_mbfn.t
M cpan/Math-BigInt/t/req_mbfw.t
M cpan/Math-BigInt/t/require.t
M cpan/Math-BigInt/t/round.t
M cpan/Math-BigInt/t/rt-16221.t
M cpan/Math-BigInt/t/sparts-mbf.t
M cpan/Math-BigInt/t/sparts-mbi.t
M cpan/Math-BigInt/t/sub_ali.t
M cpan/Math-BigInt/t/sub_mbf.t
M cpan/Math-BigInt/t/sub_mbi.t
M cpan/Math-BigInt/t/sub_mif.t
M cpan/Math-BigInt/t/to_base-mbi.t
M cpan/Math-BigInt/t/to_base_num-mbi.t
M cpan/Math-BigInt/t/to_ieee754-mbf.t
M cpan/Math-BigInt/t/trap.t
M cpan/Math-BigInt/t/upgrade.inc
M cpan/Math-BigInt/t/upgrade.t
M cpan/Math-BigInt/t/upgrade2.t
M 

[Perl/perl5] 64b405: sv.c: add Perl_sv_grow_fresh & Perl_sv_setvpn_fresh

2021-10-31 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 64b4056614429bb6fc7d35118e19a220459358fd
  
https://github.com/Perl/perl5/commit/64b4056614429bb6fc7d35118e19a220459358fd
  Author: Richard Leach 
  Date:   2021-11-01 (Mon, 01 Nov 2021)

  Changed paths:
M embed.fnc
M embed.h
M proto.h
M sv.c

  Log Message:
  ---
  sv.c: add Perl_sv_grow_fresh & Perl_sv_setvpn_fresh


  Commit: c95a251c5f6231d44c00a4a5ac8f406e67757f96
  
https://github.com/Perl/perl5/commit/c95a251c5f6231d44c00a4a5ac8f406e67757f96
  Author: Richard Leach 
  Date:   2021-11-01 (Mon, 01 Nov 2021)

  Changed paths:
M sv.c

  Log Message:
  ---
  sv.c: use Perl_sv_grow_fresh & Perl_sv_setvpn_fresh


  Commit: 49a73a262cd71d15e5dd08eecb48d421698ef832
  
https://github.com/Perl/perl5/commit/49a73a262cd71d15e5dd08eecb48d421698ef832
  Author: Richard Leach 
  Date:   2021-11-01 (Mon, 01 Nov 2021)

  Changed paths:
M pp_hot.c

  Log Message:
  ---
  pp_match: newSVpvn_flags now more efficient than sv_newmortal + sv_setpvn.


  Commit: 11e7ed3342a412dba2546230e367d8deee3bcb24
  
https://github.com/Perl/perl5/commit/11e7ed3342a412dba2546230e367d8deee3bcb24
  Author: Richard Leach 
  Date:   2021-11-01 (Mon, 01 Nov 2021)

  Changed paths:
M pp_sys.c

  Log Message:
  ---
  pp_system: safe to switch in sv_setpvn_fresh here


Compare: https://github.com/Perl/perl5/compare/30194bf8f486...11e7ed3342a4


[Perl/perl5] 1a4dad: pp_match: remove is_utf8_string check, used by rem...

2021-10-12 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 1a4dad1b219ee8d6ae6487ddf4e985cdd41279d8
  
https://github.com/Perl/perl5/commit/1a4dad1b219ee8d6ae6487ddf4e985cdd41279d8
  Author: Richard Leach 
  Date:   2021-10-13 (Wed, 13 Oct 2021)

  Changed paths:
M pp_hot.c

  Log Message:
  ---
  pp_match: remove is_utf8_string check, used by removed (v5.24) \C char class




[Perl/perl5] 48d213: av.h - better document newAV_alloc_x/newAV_alloc_xz

2021-08-27 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 48d21358f7bd06d60aaa4f913cd417b5eafa3fc0
  
https://github.com/Perl/perl5/commit/48d21358f7bd06d60aaa4f913cd417b5eafa3fc0
  Author: Richard Leach 
  Date:   2021-08-27 (Fri, 27 Aug 2021)

  Changed paths:
M av.h

  Log Message:
  ---
  av.h - better document newAV_alloc_x/newAV_alloc_xz


  Commit: 37018d9541041f8c096d300886fc94c43f174656
  
https://github.com/Perl/perl5/commit/37018d9541041f8c096d300886fc94c43f174656
  Author: Richard Leach 
  Date:   2021-08-27 (Fri, 27 Aug 2021)

  Changed paths:
M av.h

  Log Message:
  ---
  av.h - addressing comments


  Commit: 7fc83db1d1f298e1d2b08f3a88288129d635f9d8
  
https://github.com/Perl/perl5/commit/7fc83db1d1f298e1d2b08f3a88288129d635f9d8
  Author: Richard Leach 
  Date:   2021-08-27 (Fri, 27 Aug 2021)

  Changed paths:
M av.h

  Log Message:
  ---
  av.h: apidoc updates for khw comments


  Commit: 013a76a28a7d7563cd3b604f421d2356f31b3196
  
https://github.com/Perl/perl5/commit/013a76a28a7d7563cd3b604f421d2356f31b3196
  Author: Richard Leach 
  Date:   2021-08-27 (Fri, 27 Aug 2021)

  Changed paths:
M av.h

  Log Message:
  ---
  av.h: more apidoc tweaks


Compare: https://github.com/Perl/perl5/compare/7073dfe33aca...013a76a28a7d


[Perl/perl5] 4762e1: av.h: additional comments regarding real/fake AVs

2021-08-27 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 4762e1f88cc9ef2d1223b060db61846ba24eff35
  
https://github.com/Perl/perl5/commit/4762e1f88cc9ef2d1223b060db61846ba24eff35
  Author: Richard Leach 
  Date:   2021-08-27 (Fri, 27 Aug 2021)

  Changed paths:
M av.h

  Log Message:
  ---
  av.h: additional comments regarding real/fake AVs


  Commit: 7073dfe33acab50441f1ffe4774e121e882e7277
  
https://github.com/Perl/perl5/commit/7073dfe33acab50441f1ffe4774e121e882e7277
  Author: Richard Leach 
  Date:   2021-08-27 (Fri, 27 Aug 2021)

  Changed paths:
M av.h

  Log Message:
  ---
  av.h: document that backrefs lists are fake AVs


Compare: https://github.com/Perl/perl5/compare/9d1dc8e3bf4c...7073dfe33aca


[Perl/perl5] 8514db: op.h: define missing BASEOP fields (op_sibparent,o...

2021-08-23 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 8514db6ffd1098e6012da55bcbc8df6fc05f2fca
  
https://github.com/Perl/perl5/commit/8514db6ffd1098e6012da55bcbc8df6fc05f2fca
  Author: Richard Leach 
  Date:   2021-08-24 (Tue, 24 Aug 2021)

  Changed paths:
M op.h

  Log Message:
  ---
  op.h: define missing BASEOP fields (op_sibparent,op_targ)




[Perl/perl5] c24391: pp_defined: modify OP_DEFINED paths to use TOPs an...

2021-08-16 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: c243917ec3550cb982f033b448e4b740498dc53a
  
https://github.com/Perl/perl5/commit/c243917ec3550cb982f033b448e4b740498dc53a
  Author: Richard Leach 
  Date:   2021-08-17 (Tue, 17 Aug 2021)

  Changed paths:
M pp_hot.c

  Log Message:
  ---
  pp_defined: modify OP_DEFINED paths to use TOPs and RETSETs




[Perl/perl5] 541e9a: av_create_and_push/unshift_one: remove experimenta...

2021-07-31 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 541e9af01a41e04539c3aedd46abb741ef89fb9b
  
https://github.com/Perl/perl5/commit/541e9af01a41e04539c3aedd46abb741ef89fb9b
  Author: Richard Leach 
  Date:   2021-07-31 (Sat, 31 Jul 2021)

  Changed paths:
M embed.fnc

  Log Message:
  ---
  av_create_and_push/unshift_one: remove experimental flag


  Commit: 71ca71bc8b733c80f8f8099bb4673ee629da1353
  
https://github.com/Perl/perl5/commit/71ca71bc8b733c80f8f8099bb4673ee629da1353
  Author: Richard Leach 
  Date:   2021-07-31 (Sat, 31 Jul 2021)

  Changed paths:
M av.c

  Log Message:
  ---
  av_create_and_push/unshift_one: faster create via newAV_alloc_xz


Compare: https://github.com/Perl/perl5/compare/4c8bd78b274a...71ca71bc8b73


[Perl/perl5] 6e7a78: av.h - document newAV_alloc_xz

2021-07-29 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 6e7a7813c390d2121876b9f8af4f37102e8d51fa
  
https://github.com/Perl/perl5/commit/6e7a7813c390d2121876b9f8af4f37102e8d51fa
  Author: Richard Leach 
  Date:   2021-07-29 (Thu, 29 Jul 2021)

  Changed paths:
M av.h

  Log Message:
  ---
  av.h - document newAV_alloc_xz




[Perl/perl5] 158b05: av_new_alloc: revise description of size parameter

2021-07-06 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 158b05f88107501586f35dde9afd3c1444e148e1
  
https://github.com/Perl/perl5/commit/158b05f88107501586f35dde9afd3c1444e148e1
  Author: Richard Leach 
  Date:   2021-07-06 (Tue, 06 Jul 2021)

  Changed paths:
M av.c

  Log Message:
  ---
  av_new_alloc: revise description of size parameter




[Perl/perl5] 84c752: Add inline av_fetch_simple and av_store_simple fun...

2021-07-02 Thread Richard Leach via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 84c75204391437a2f1d2f579c545b4592014b1cb
  
https://github.com/Perl/perl5/commit/84c75204391437a2f1d2f579c545b4592014b1cb
  Author: Richard Leach 
  Date:   2021-07-03 (Sat, 03 Jul 2021)

  Changed paths:
M embed.fnc
M embed.h
M inline.h
M proto.h

  Log Message:
  ---
  Add inline av_fetch_simple and av_store_simple functions


  Commit: 310f47b68123831258bf28d4105fd80f8ed59430
  
https://github.com/Perl/perl5/commit/310f47b68123831258bf28d4105fd80f8ed59430
  Author: Richard Leach 
  Date:   2021-07-03 (Sat, 03 Jul 2021)

  Changed paths:
M pad.c

  Log Message:
  ---
  Perl_pad_alloc: simplify av_fetch() calls

The nature of PL_comppad allows this.


Compare: https://github.com/Perl/perl5/compare/c683824536c9...310f47b68123


  1   2   >