[Perl/perl5] 2e75d7: cygwin.c: Use mnemonic instead of repeating expr

2023-02-07 Thread Karl Williamson via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 2e75d796b38ec0461159a22c7a966467ade5
  
https://github.com/Perl/perl5/commit/2e75d796b38ec0461159a22c7a966467ade5
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M cygwin/cygwin.c

  Log Message:
  ---
  cygwin.c: Use mnemonic instead of repeating expr

This expression is repeated in several places; best to name it for
clarity and ease of change.


  Commit: 841a3e1bca89544d115c2d2d3df1c96d27172a15
  
https://github.com/Perl/perl5/commit/841a3e1bca89544d115c2d2d3df1c96d27172a15
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M cygwin/cygwin.c

  Log Message:
  ---
  cygwin.c: Remove misleading comments

cygwin works on UTF-16, not UCS-2, nor UTF-8


  Commit: ac4290d01742ee1228041e7467ed23414ebfbafc
  
https://github.com/Perl/perl5/commit/ac4290d01742ee1228041e7467ed23414ebfbafc
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M cygwin/cygwin.c

  Log Message:
  ---
  cygwin.c: Remove memory leaks

These mallocs weren't getting freed.


  Commit: a435da2b160255de4884b0d007ef0d9d93ec203b
  
https://github.com/Perl/perl5/commit/a435da2b160255de4884b0d007ef0d9d93ec203b
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M cygwin/cygwin.c

  Log Message:
  ---
  cygwin.c: Change wide_to_utf8() to call utf16_to_utf8()

The latter function is in the core, and doesn't require the locale to be
changed, unlike before.


  Commit: 457ba501e6d4253da0c5acc6c45c96c598b3f605
  
https://github.com/Perl/perl5/commit/457ba501e6d4253da0c5acc6c45c96c598b3f605
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M cygwin/cygwin.c

  Log Message:
  ---
  cygwin.c: Call wide_to_utf8()

There are two places that do the same thing as wide_to_utf8(), in
different ways.  Use the single, common function


  Commit: 73bdb838da96b52da71c9080ff6fdc2e2c88ea23
  
https://github.com/Perl/perl5/commit/73bdb838da96b52da71c9080ff6fdc2e2c88ea23
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M cygwin/cygwin.c

  Log Message:
  ---
  cygwin.c: Narrow scope of setlocale

The previous commit caused the locale not to have to be changed and
locked for as long as before.  Narrow the change to the scope needed.


  Commit: c3be9bd4d181af38c0c9e2ae3c5ee51d49651eff
  
https://github.com/Perl/perl5/commit/c3be9bd4d181af38c0c9e2ae3c5ee51d49651eff
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M cygwin/cygwin.c

  Log Message:
  ---
  cygwin.c: Change variable names

This makes the names consistent in the two parallel functions, in
preparation for folding the two into one.

This maps win_path => converted_path
  wbuf => wsrc
  wpath=> wconverted


  Commit: d7c2c45e0afe114a6fc55207b26d268ec4affea6
  
https://github.com/Perl/perl5/commit/d7c2c45e0afe114a6fc55207b26d268ec4affea6
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M cygwin/cygwin.c

  Log Message:
  ---
  cygwin.c: Refactor some expressions

These cause the long flag name to only be mentioned once.


  Commit: bba8d7cfa7a094d55326d7a9cfebd73fb8ab2a35
  
https://github.com/Perl/perl5/commit/bba8d7cfa7a094d55326d7a9cfebd73fb8ab2a35
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M cygwin/cygwin.c

  Log Message:
  ---
  cygwin.c: Use SvPVx in both places

One function uses this form; the parallel function doesn't.  Not having
delved into the details, the 'x' form is safer, so should be used in the
same situation in both functions.


  Commit: 03fc59afb4069bd5f569c5c4fb2e7b4293d948a9
  
https://github.com/Perl/perl5/commit/03fc59afb4069bd5f569c5c4fb2e7b4293d948a9
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M pod/perldiag.pod

  Log Message:
  ---
  Add cygwin warning to perldiag


  Commit: 0880e953fabd23c1207fab60ed2647e122a4e99a
  
https://github.com/Perl/perl5/commit/0880e953fabd23c1207fab60ed2647e122a4e99a
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M cygwin/cygwin.c

  Log Message:
  ---
  cygwin.c: Change a size_t value from int to STRLEN


  Commit: ea18e4f378a48b29f06181f2c32101dfc7205ba0
  
https://github.com/Perl/perl5/commit/ea18e4f378a48b29f06181f2c32101dfc7205ba0
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M cygwin/cygwin.c

  Log Message:
  ---
  cygwin.c: Fold two nearly identical functions into one

These functions are to convert from a windows path to posix, and vice
versa.  Except for the direction, the process is identical.  But the two
function

[Perl/perl5] 8144f5: embed.fnc - sort entries alphabetically by functio...

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/tidy_embed_fnc
  Home:   https://github.com/Perl/perl5
  Commit: 8144f59a57fbdf0db0ec4b920f94ce9fe163b40d
  
https://github.com/Perl/perl5/commit/8144f59a57fbdf0db0ec4b920f94ce9fe163b40d
  Author: Yves Orton 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M regen/tidy_embed.pl

  Log Message:
  ---
  embed.fnc - sort entries alphabetically by function name.

This is actually a library sort (lc with underbars removed), followed by a
lexicographical sort. Comment lines are sticky to the line that follows
them.

Somehow the original version of this patch was missed in my earlier work on
tidy_embed.pl, I think I messed up a rebase somehow. I noticed it was missing
when I realized that new entries werent being sorted into place correctly.

While this patch creates a fair bit of churn in the file right now, long
term it will make it easier to use. Also note that the *output* files
have not changed, which validates that the patch did not break anything.


  Commit: ae0010a35cc5f41d50ab8863c02649bdcfce39de
  
https://github.com/Perl/perl5/commit/ae0010a35cc5f41d50ab8863c02649bdcfce39de
  Author: Yves Orton 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M embed.fnc

  Log Message:
  ---
  embed.fnc - updated as per previous commit (squash before committing)


  Commit: 9b88f9eecd3f4da68cd4223026443236d0b1d8f7
  
https://github.com/Perl/perl5/commit/9b88f9eecd3f4da68cd4223026443236d0b1d8f7
  Author: Yves Orton 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M regen/HeaderParser.pm
M regen/embed.pl

  Log Message:
  ---
  embed.pl - sort and dedupe flags in embef.fnc as part of tidy

This ensures we use a canonical string for each possible flag variant,
which makes it easier to search for flags with a given flag signature.

It also exposed a mutex bug in flag handling which caused
PerlEnv_putenv to be improperly marked as static, when it is in fact
static inline.

To validate there aren't any issues like this remaining in the script
I set it up so the flags were shuffled during processing and ran
embed.pl in a loop for a while and none of the output files changed,
so I assume there are no further such issues.

This patch also includes some basic validation of the flags so that if
someone misses a line continuation the following lines are not treated
as a new definition without any flags. I also ran perltidy on it
according to the rules contained within the file.


  Commit: f6d71f5e0cd1ffed41537a0d886a83a00f1cbdb5
  
https://github.com/Perl/perl5/commit/f6d71f5e0cd1ffed41537a0d886a83a00f1cbdb5
  Author: Yves Orton 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M embed.fnc

  Log Message:
  ---
  embed.fnc - updated as per previous commit (squash before committing)


Compare: https://github.com/Perl/perl5/compare/283d0609a03b...f6d71f5e0cd1


[Perl/perl5] c05434: Simplify copyright years

2023-02-07 Thread Elvin Aslanov via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: c05434dd5e129bbae33020bc1d041ecb058215ae
  
https://github.com/Perl/perl5/commit/c05434dd5e129bbae33020bc1d041ecb058215ae
  Author: Elvin Aslanov 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M README

  Log Message:
  ---
  Simplify copyright years

PR originally submitted by @Yahasana in Perl#19163




[Perl/perl5]

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/remove_mingw64_test_pipeline_for_now
  Home:   https://github.com/Perl/perl5


[Perl/perl5]

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/remove_optimstic_postponed_eval
  Home:   https://github.com/Perl/perl5


[Perl/perl5] 5f5c35: regcomp.c - remove (**{ ... }) from the regex engine

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 5f5c35d3ce139755d02fa07de26229cd08d3c8cd
  
https://github.com/Perl/perl5/commit/5f5c35d3ce139755d02fa07de26229cd08d3c8cd
  Author: Yves Orton 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M pod/perl5378delta.pod
M pod/perldelta.pod
M pod/perlre.pod
M regcomp.c
M regexec.c
M t/re/pat_re_eval.t
M toke.c

  Log Message:
  ---
  regcomp.c - remove (**{ ... }) from the regex engine

Dave M pointed out that this idea was flawed, and after some testing I have
come to agree with him. This removes it. It was only available for 5.37.8,
so no deprecation cycle involved.

The point of (**{ ... }) was to have a postponed eval that does not disable
optimizations. But some of the optimizations are disabled because if they
are not we do not match correctly as the optimizations will make unwarranted
assumptions about the pattern, assumptions which can be incorrect depending
on what pattern is returned from the codeblock. The original idea was
proposed because (?{ ... }) was treated as though it was (??{ ... }) and
disabled many optimizations, when in fact it doesn't interact with
optimizations at all. When I added (*{ ... }) as the optimistic version of
(?{ ... }) I used "completeness" as the justification for also adding
(**{ ... }) when it does not make sense to do so.




[Perl/perl5] 420214: perldelta for b1414dcb98d, dd3d299fefbbf

2023-02-07 Thread Tony Cook via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 4202141d20ddfa0501f385cf923860bcf7511398
  
https://github.com/Perl/perl5/commit/4202141d20ddfa0501f385cf923860bcf7511398
  Author: Tony Cook 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M pod/perldelta.pod

  Log Message:
  ---
  perldelta for b1414dcb98d, dd3d299fefbbf




[Perl/perl5] 71d63d: Use per-word calcs in utf8_length()

2023-02-07 Thread Karl Williamson via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 71d63d0dc1fcf23d28f488655c105c0dfefbd254
  
https://github.com/Perl/perl5/commit/71d63d0dc1fcf23d28f488655c105c0dfefbd254
  Author: Karl Williamson 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

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

  Log Message:
  ---
  Use per-word calcs in utf8_length()

This commit changes utf8_length to read the input a word at a time.
The current method of looking per character is retained for shorter
strings.  The per-word method yields significant time savings for very
long strings and typical inputs.

The timings vary depending on the average number of bytes per character
in the input.  If all our characters were 13 bytes, this commit would
always be a loser, as we would be processing per 8 (or 4 on 32-bit
platforms) instead of 13.  But we don't care about performance for
non-Unicode code points, and the maximum legal Unicode code point
occupies 4 UTF-8 bytes, which means that is a wash on 32-bit platforms,
but a real gain on 64-bit ones.  And, except for emoji, most text in
modern languages is 3 byte max, with a significant amount of single byte
characters (e.g., for punctuation) even in non-Latin scripts.

For very long strings we would expect to use 1/8 the conditionals if the
input is entirely ASCII; 1/4 if entirely 2-byte UTF-8, and 1/2 if
entirely 4-byte.  (For 32-bit systems, the savings is approximately half
this.)  Because of set-up and tear-down complications, these values are
limits that are approached the longer the string is (which is where it
matters most).

The per-word method kicks in for input strings 96 bytes and longer.
This value was based on some eyeballing cache grind output, and could be
tweaked, but the differences in time spent on strings this short is
tiny.

This function does a half-hearted job of checking for UTF-8 validity; it
doesn't do extra work, but it makes sure that the length implied by the
start bytes it sees, all add up.  (It doesn't check that the characters in
between are all continuation bytes.)   In order to preserve this
checking, the new version has to stop per-word looking a word earlier
than it otherwise would have.

There are complications, as it has to process per-byte to get to a word
boundary before reading per-word.  Here are benchmarks for a 2-byte word
using the best and worst case scenarios. (All benchmarks are for a
64-bit platform)

 Key:
 Ir   Instruction read
 Dr   Data read
 Dw   Data write
 COND conditional branches
 IND  indirect branches

The numbers represent relative counts per loop iteration, compared to
blead at 100.0%.
Higher is better: for example, using half as many instructions gives 200%,
while using twice as many gives 50%.

Best case 2-byte sceanario:
string length 48 characters; 2 bytes per character;
0 bytes after word boundary

   blead   patch
   -- ---
Ir 100.00  123.09
Dr 100.00  130.18
Dw 100.00  111.44
  COND 100.00  128.63
   IND 100.00  100.00

Worst case 2-byte sceanario:
string length 48 characters; 2 bytes per character;
7 bytes after word boundary

   blead   patch
   -- ---
Ir 100.00  122.46
Dr 100.00  129.52
Dw 100.00  111.07
  COND 100.00  127.65
   IND 100.00  100.00

Very long strings run an order of magnitude fewer instructions than
blead.  Here are worst case scenarios (7 bytes after word boundary).

string length 1000 characters; 1 bytes per character

   blead   patch
   -- ---
Ir 100.00  814.53
Dr 100.00 1069.58
Dw 100.00 3296.55
  COND 100.00 1575.83
   IND 100.00  100.00

string length 500 characters; 2 bytes per character

   blead   patch
   -- ---
Ir 100.00  408.86
Dr 100.00  536.32
Dw 100.00 1698.31
  COND 100.00  788.72
   IND 100.00  100.00

string length 333 characters; 3 bytes per character

   blead   patch
   -- ---
Ir 100.00  273.64
Dr 100.00  358.56
Dw 100.00 1165.55
  COND 100.00  526.35
   IND 100.00  100.00

string length 250 characters; 4 bytes per character

   blead   patch
   -- ---
Ir 100.00  206.03
Dr 100.00  269.68
Dw 100.00  899.17
  COND 100.00  395.17
   IND 100.00  100.00




[Perl/perl5]

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/move_was_where_init
  Home:   https://github.com/Perl/perl5


[Perl/perl5] 9d3a26: util.c - move was_here to be initialized earlier

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 9d3a26c75c777cb4dc1382d59de52a9b69a38f14
  
https://github.com/Perl/perl5/commit/9d3a26c75c777cb4dc1382d59de52a9b69a38f14
  Author: Yves Orton 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M util.c

  Log Message:
  ---
  util.c - move was_here to be initialized earlier

Otherwise the goto out_of_memory breaks threaded builds under debugging
as originally reported by Karl as we jump over the initialization
of the variable and then use it later on.

util.c: In function ‘void* Perl_safesysrealloc(void*, size_t)’:
util.c:335:11: error: jump to label ‘out_of_memory’
  335 |   out_of_memory:
  |   ^
util.c:248:18: note:   from here
  248 | goto out_of_memory;
  |  ^
util.c:277:12: note:   crosses initialization of ‘UV was_where’
  277 | UV was_where = PTR2UV(where);
  |^
make: *** [makefile:260: util.o] Error 1




[Perl/perl5] b1414d: warn on redefining an array constant sub

2023-02-07 Thread Tony Cook via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: b1414dcb98d72036e17cb9d4c8aae9d7ad65113e
  
https://github.com/Perl/perl5/commit/b1414dcb98d72036e17cb9d4c8aae9d7ad65113e
  Author: Tony Cook 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M op.c
M sv.c
M t/lib/warnings/op

  Log Message:
  ---
  warn on redefining an array constant sub

The code in report_redefined_cv() would check whether the old
constant and the new constant were the same SV to avoid warning on
duplicate imports of the same constant.  Since both gv_setref()
and report_redefined_cv() used cv_const_sv() to fetch the constant
SV, which returns NULL for an AV based constant sub, the check
for the equivalent SV would compare NULL to NULL and
report_redefined_cv() would return early.

Additional checks were required further down to prevent sv_cmp()
being called on AVs.

The check for simple SV's allow redefinition of constant subs if the
new value string compares the same as the old value.  The AV check
does not try to allow that.

Fixed #20742


  Commit: dd3d299fefbbff9efe55eb16af5bb9aa0410d606
  
https://github.com/Perl/perl5/commit/dd3d299fefbbff9efe55eb16af5bb9aa0410d606
  Author: Tony Cook 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M op.c
M t/lib/warnings/op

  Log Message:
  ---
  newATTRSUB_x: don't try to sv_cmp() an AV*

newATTRSUB_x() does it's own constant sub redefinition checks, but
if you tried to redefine a constant.pm defined constant list sub
 with an old style constant sub C<< sub foo() { CONSTANT } >> it
would cause an assertion failure trying to SvPV() an SV inside
sv_cmp():

  $ ~/perl/v5.36.0-dbg-san/bin/perl -Mconstant=x,1,2 -e 'sub x() { 1 }'
  perl: sv.c:2820: char *Perl_sv_2pv_flags(SV *const, STRLEN *const, const 
U32): Assertion `SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV && SvTYPE(sv) 
!= SVt_PVFM' failed.
  Aborted


Compare: https://github.com/Perl/perl5/compare/6c19911f93fc...dd3d299fefbb


[Perl/perl5] 626df4: allow AUTOLOAD for the INC method of objects in @INC

2023-02-07 Thread Tony Cook via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 626df4fd56759528a170e821cab27f372b174496
  
https://github.com/Perl/perl5/commit/626df4fd56759528a170e821cab27f372b174496
  Author: Tony Cook 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M pp_ctl.c
M t/op/inccode.t

  Log Message:
  ---
  allow AUTOLOAD for the INC method of objects in @INC

This matches the behaviour in 5.36.

This does not allow AUTOLOAD for INCDIR, since if there is an AUTOLOAD
the check for INC would have already succeeded.

Fixes #20665


  Commit: 6c19911f93fc29afe94cad617c6f2f3325ad77ba
  
https://github.com/Perl/perl5/commit/6c19911f93fc29afe94cad617c6f2f3325ad77ba
  Author: Tony Cook 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M pod/perlfunc.pod

  Log Message:
  ---
  perlfunc/require: Note that AUTOLOAD cannot resolve INCDIR


Compare: https://github.com/Perl/perl5/compare/0de69e372d3b...6c19911f93fc


[Perl/perl5] 5fa598: regcomp.c - remove (**{ ... }) from the regex engine

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/remove_optimstic_postponed_eval
  Home:   https://github.com/Perl/perl5
  Commit: 5fa5980bc4187eb9183d9d96a79d5d1daef2dc65
  
https://github.com/Perl/perl5/commit/5fa5980bc4187eb9183d9d96a79d5d1daef2dc65
  Author: Yves Orton 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M pod/perl5378delta.pod
M pod/perldelta.pod
M pod/perlre.pod
M regcomp.c
M regexec.c
M t/re/pat_re_eval.t
M toke.c

  Log Message:
  ---
  regcomp.c - remove (**{ ... }) from the regex engine

Dave M pointed out that this idea was flawed, and after some testing I have
come to agree with him. This removes it. It was only available for 5.37.8,
so no deprecation cycle involved.

The point of (**{ ... }) was to have a postponed eval that does not disable
optimizations. But some of the optimizations are disabled because if they
are not we do not match correctly as the optimizations will make unwarranted
assumptions about the pattern, assumptions which can be incorrect depending
on what pattern is returned from the codeblock. The original idea was
proposed because (?{ ... }) was treated as though it was (??{ ... }) and
disabled many optimizations, when in fact it doesn't interact with
optimizations at all. When I added (*{ ... }) as the optimistic version of
(?{ ... }) I used "completeness" as the justification for also adding
(**{ ... }) when it does not make sense to do so.




[Perl/perl5] 76c617: regcomp.c - remove (**{ ... }) from the regex engine

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/remove_optimstic_postponed_eval
  Home:   https://github.com/Perl/perl5
  Commit: 76c617f5aa8831fb5d316a407698b9b0dcfb066a
  
https://github.com/Perl/perl5/commit/76c617f5aa8831fb5d316a407698b9b0dcfb066a
  Author: Yves Orton 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M pod/perl5378delta.pod
M pod/perldelta.pod
M pod/perlre.pod
M regcomp.c
M regexec.c
M t/re/pat_re_eval.t
M toke.c

  Log Message:
  ---
  regcomp.c - remove (**{ ... }) from the regex engine

Dave M pointed out that this idea was flawed, and after some testing I have
come to agree with him. This removes it. It was only available for 5.37.8,
so no deprecation cycle involved.

The point of (**{ ... }) was to have a postponed eval that does not disable
optimizations. But some of the optimizations are disabled because if they
are not we do not match correctly as the optimizations will make unwarranted
assumptions about the pattern, assumptions which can be incorrect depending
on what pattern is returned from the codeblock. The original idea was
proposed because (?{ ... }) was treated as though it was (??{ ... }) and
disabled many optimizations, when in fact it doesn't interact with
optimizations at all. When I added (*{ ... }) as the optimistic version of
(?{ ... }) I used "completeness" as the justification for also adding
(**{ ... }) when it does not make sense to do so.




[Perl/perl5] 6ed04c: util.c - move was_here to be initialized earlier

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/move_was_where_init
  Home:   https://github.com/Perl/perl5
  Commit: 6ed04c56c19ff3c7bdbf5a6ea1b01f471cc89e5f
  
https://github.com/Perl/perl5/commit/6ed04c56c19ff3c7bdbf5a6ea1b01f471cc89e5f
  Author: Yves Orton 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M util.c

  Log Message:
  ---
  util.c - move was_here to be initialized earlier

Otherwise the goto out_of_memory breaks threaded builds under debugging
as originally reported by Karl as we jump over the initialization
of the variable and then use it later on.

util.c: In function ‘void* Perl_safesysrealloc(void*, size_t)’:
util.c:335:11: error: jump to label ‘out_of_memory’
  335 |   out_of_memory:
  |   ^
util.c:248:18: note:   from here
  248 | goto out_of_memory;
  |  ^
util.c:277:12: note:   crosses initialization of ‘UV was_where’
  277 | UV was_where = PTR2UV(where);
  |^
make: *** [makefile:260: util.o] Error 1




[Perl/perl5] 0de69e: Clarify perldoc bless per #18713

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 0de69e372d3baf843522c30d8711b6513c2a472b
  
https://github.com/Perl/perl5/commit/0de69e372d3baf843522c30d8711b6513c2a472b
  Author: Joe McMahon 
  Date:   2023-02-08 (Wed, 08 Feb 2023)

  Changed paths:
M .mailmap
M pod/perlfunc.pod

  Log Message:
  ---
  Clarify perldoc bless per #18713

 - Specifically calls out the possible invocations
 - Breaks out the specific use cases and why to use them
 - Notes the things to avoid and why in clearer language
 - Update .mailmap so that tests all pass




[Perl/perl5] 66c1d2: Add some examples for push()

2023-02-07 Thread Scott Baker via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 66c1d2a57eb49d2facb14a07e915cf285e732f21
  
https://github.com/Perl/perl5/commit/66c1d2a57eb49d2facb14a07e915cf285e732f21
  Author: Scott Baker 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M pod/perlfunc.pod

  Log Message:
  ---
  Add some examples for push()


  Commit: 9baf61eb9f3672d1f743ea0f4e5014045e15ea02
  
https://github.com/Perl/perl5/commit/9baf61eb9f3672d1f743ea0f4e5014045e15ea02
  Author: Scott Baker 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M pod/perlfunc.pod

  Log Message:
  ---
  Move return example after explanation


  Commit: 376c059310e74ce8b9f3f45a3e9f92160939ca60
  
https://github.com/Perl/perl5/commit/376c059310e74ce8b9f3f45a3e9f92160939ca60
  Author: Scott Baker 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M pod/perlfunc.pod

  Log Message:
  ---
  Remove the "technical" explanation


  Commit: 84e73d4ea20306de42377d1363057e9baa0a10a1
  
https://github.com/Perl/perl5/commit/84e73d4ea20306de42377d1363057e9baa0a10a1
  Author: Scott Baker 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M pod/perlfunc.pod

  Log Message:
  ---
  Add missing closing parens to the examples

Also removes a comment which is duplicated.


Compare: https://github.com/Perl/perl5/compare/9312140ba1ac...84e73d4ea203


[Perl/perl5] 82205d: util.c - move was_here to be initialized earlier

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/move_was_where_init
  Home:   https://github.com/Perl/perl5
  Commit: 82205d446a27403f1ac5631b2b84e22632ae2b81
  
https://github.com/Perl/perl5/commit/82205d446a27403f1ac5631b2b84e22632ae2b81
  Author: Yves Orton 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M util.c

  Log Message:
  ---
  util.c - move was_here to be initialized earlier

otherwise the goto out_of_memory breaks g++ as reported by Karl




[Perl/perl5] 6054fa: Mark dowantarray() as deprecated

2023-02-07 Thread Dagfinn Ilmari Mannsåker via perl5-changes
  Branch: refs/heads/ilmari/deprecate-dowantarray
  Home:   https://github.com/Perl/perl5
  Commit: 6054fa6fffaed640e1850cfaddb4fcfc0f78002c
  
https://github.com/Perl/perl5/commit/6054fa6fffaed640e1850cfaddb4fcfc0f78002c
  Author: Dagfinn Ilmari Mannsåker 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M embed.fnc
M proto.h

  Log Message:
  ---
  Mark dowantarray() as deprecated

This will make uses of the also-deprecated GIMME macro emit a
compile-time warning.




[Perl/perl5]

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/test_manifest
  Home:   https://github.com/Perl/perl5


[Perl/perl5] a91362: util.c - move was_here to be initialized earlier

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/move_was_where_init
  Home:   https://github.com/Perl/perl5
  Commit: a91362e5ebeaedd7b4c2e54c3525fe7f7ba9e758
  
https://github.com/Perl/perl5/commit/a91362e5ebeaedd7b4c2e54c3525fe7f7ba9e758
  Author: Yves Orton 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M util.c

  Log Message:
  ---
  util.c - move was_here to be initialized earlier

otherwise the goto out_of_memory breaks g++ as reported by Karl




[Perl/perl5] f8ef6e: Revert "op.c - work around Module::Install::DSL is...

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/remove_mi_dsl_workaround
  Home:   https://github.com/Perl/perl5
  Commit: f8ef6e874c9a52798cd08995fc5b6f3af7fde02c
  
https://github.com/Perl/perl5/commit/f8ef6e874c9a52798cd08995fc5b6f3af7fde02c
  Author: Yves Orton 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M op.c
M op.h
M pod/perldiag.pod
M t/op/blocks.t

  Log Message:
  ---
  Revert "op.c - work around Module::Install::DSL issue"

This reverts commit 451a9a1260f66bc37e4e7187d4368bca92540a8e.

We no longer need the Module::Install::DSL workaround.

This fixes GH Issue #20233.




[Perl/perl5]

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/toke_c_gdb_help
  Home:   https://github.com/Perl/perl5


[Perl/perl5] 931214: toke.c - dont just return the function, assign it ...

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 9312140ba1ac523a74c69d552697f2767e128e04
  
https://github.com/Perl/perl5/commit/9312140ba1ac523a74c69d552697f2767e128e04
  Author: Yves Orton 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M toke.c

  Log Message:
  ---
  toke.c - dont just return the function, assign it to an intermediary

So we can debug it before we return. an optimization compiler should
make them the same thing anyway, but under -Og it is helpful to be able
to be able to see the return before we return it.




[Perl/perl5] 438146: toke.c - invoke __DIE__ handler after compilation ...

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/consistent_error_exits
  Home:   https://github.com/Perl/perl5
  Commit: 438146e215da49557fd0d653c81a781f22bf5ed2
  
https://github.com/Perl/perl5/commit/438146e215da49557fd0d653c81a781f22bf5ed2
  Author: Yves Orton 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M embed.fnc
M embed.h
M pp_ctl.c
M proto.h
M t/op/die.t
M t/op/eval.t
M util.c

  Log Message:
  ---
  toke.c - invoke __DIE__ handler after compilation errors in eval

Currently whether the __DIE__ signal handler triggers during compilation
of an eval string depends on the selection of the errors it contains.
Certain types of compilation error are considered "deferred errors" and
will not terminate compilation immediately, for instance undeclared
variables do not confuse the compiler so they do not trigger immediate
termination, and we will report them without limit provided they are the
only errors encountered. Whether a given error terminates compilation or
not or uses the error count to decide to do so seems to be somewhat
random, and it is quite possible that compilation can complete, with
errors, without ever "throwing" the exception so it can be passed to the
__DIE__ handler.

This patch ensures that when the eval has failed due to errors the
$SIG{__DIE__} handler is invoked before the eval completes.


  Commit: ff34822f4f8da2d7aaf9c6ee0c229d97b38f6f13
  
https://github.com/Perl/perl5/commit/ff34822f4f8da2d7aaf9c6ee0c229d97b38f6f13
  Author: Yves Orton 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M perl.h
M perly.c
M pp_ctl.c
M t/op/eval.t
M t/op/signatures.t
M t/uni/parser.t
M toke.c

  Log Message:
  ---
  perl.h, pp_ctl.c - switch to standard way of terminating compilation

I did not fully understand the use of yyquit() when I implemented
the SYNTAX_ERROR related stuff. It is not needed, and switching to this
makes eval compile error messages more consistent.


  Commit: 3cdb3de9918b6d0f520c7607ac02c92fc31d4e86
  
https://github.com/Perl/perl5/commit/3cdb3de9918b6d0f520c7607ac02c92fc31d4e86
  Author: Yves Orton 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M pp_ctl.c
M t/lib/feature/bundle
M t/lib/strict/vars
M toke.c

  Log Message:
  ---
  pp_ctl.c - Consistently exit after 10 errors

Currently we only check the error count when we report an error via
yyerror(), even though we say we will stop processing after 10 errors.
Errors reported directly to qerror() bypass the check.

This fixes this so that we check the number of errors reported in
qerror() itself. We also change qerror() so that qerror(NULL) triggers
the exception, this way we can move the logic out of yyerror and into
qerror().


Compare: https://github.com/Perl/perl5/compare/be13138f205b...3cdb3de9918b


[Perl/perl5] 61c369: Ensure 'ok #' test output includes a location

2023-02-07 Thread Paul Evans via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 61c36998dd2ab81a3a53358ac76a57e6f5850dc9
  
https://github.com/Perl/perl5/commit/61c36998dd2ab81a3a53358ac76a57e6f5850dc9
  Author: Paul "LeoNerd" Evans 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M t/test.pl

  Log Message:
  ---
  Ensure 'ok #' test output includes a location

If no test name is supplied it can be hard to work out where the failure
was, if the output is something like

...
ok 100
ok 101
ok 102
Segmentation fault

There's no easy correlation with the lines in the .t file, short of
counting all the calls.

By adding the caller file/line number, at least we can get a rough idea
of where the test script got to when it failed

...
ok 102 - [at foo.t line 1234]
Segmentation fault




[Perl/perl5]

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/release_guide_tweak
  Home:   https://github.com/Perl/perl5


[Perl/perl5]

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/force_upgrade_var
  Home:   https://github.com/Perl/perl5


[Perl/perl5]

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/test_workflows
  Home:   https://github.com/Perl/perl5


[Perl/perl5]

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5


[Perl/perl5] 923d5d: pv_escape(): Fix compiler warning

2023-02-07 Thread Karl Williamson via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 923d5d2113e738eea21d56eb8f1589c6b3506f02
  
https://github.com/Perl/perl5/commit/923d5d2113e738eea21d56eb8f1589c6b3506f02
  Author: Karl Williamson 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M embed.fnc
M proto.h

  Log Message:
  ---
  pv_escape(): Fix compiler warning

A parameter to this function was declared const in embed.fnc, but it
isn't const


  Commit: dead3ccedb0e57c37846b3b30aa1d618ef1309f3
  
https://github.com/Perl/perl5/commit/dead3ccedb0e57c37846b3b30aa1d618ef1309f3
  Author: Karl Williamson 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M locale.c

  Log Message:
  ---
  locale.c: Silence compiler warning

This is only emitted on Windows Visual Studio, before 2015.


Compare: https://github.com/Perl/perl5/compare/92373dea9d7b...dead3ccedb0e


[Perl/perl5] 92373d: Replaced SSGROW with SSCHECK inside regcppush

2023-02-07 Thread AnFunctionArray via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 92373dea9d7bcc0a017f20cb37192c1d8400767f
  
https://github.com/Perl/perl5/commit/92373dea9d7bcc0a017f20cb37192c1d8400767f
  Author: Alexander Nikolov 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M regexec.c

  Log Message:
  ---
  Replaced SSGROW with SSCHECK inside regcppush

Observed is huge slow-down on Win32 machines
with many leveled nested recursive patterns.
Bottleneck identified to be SSGROW reallocations
inside regcppush.

Replacing with SSCHECK yields huge performance gains
(to the extened for it to be called a "fix") on said platform.




[Perl/perl5] 3e1c78: buildtoc: Use mnemonic instead of hard-coded code ...

2023-02-07 Thread Karl Williamson via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 3e1c78bda6bcaff0d1d04c51c98ff3ea0ba0db8b
  
https://github.com/Perl/perl5/commit/3e1c78bda6bcaff0d1d04c51c98ff3ea0ba0db8b
  Author: Karl Williamson 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M pod/buildtoc

  Log Message:
  ---
  buildtoc: Use mnemonic instead of hard-coded code point

\r is clearer and potentially more portable than \015


  Commit: ce8f481253f8f6250878c58247f4d8fee6a3a3ce
  
https://github.com/Perl/perl5/commit/ce8f481253f8f6250878c58247f4d8fee6a3a3ce
  Author: Karl Williamson 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M pod/buildtoc

  Log Message:
  ---
  buildtoc: Fix to work on native line endings

buildtoc was failing to work properly on systems where files have line
endings that aren't plain \n, notably Windows.

The particular reason it fails is that it goes into paragraph slurp
mode.  That mode is fooled by \r\n sequences, so fails to properly split
the input into paragraphs.


Compare: https://github.com/Perl/perl5/compare/70bac31a4f4e...ce8f481253f8


[Perl/perl5] c4c0f5: regcomp.c - remove (**{ ... }) from the regex engine

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/remove_optimstic_postponed_eval
  Home:   https://github.com/Perl/perl5
  Commit: c4c0f563bdcda931d985859a15e29b60eac1ba05
  
https://github.com/Perl/perl5/commit/c4c0f563bdcda931d985859a15e29b60eac1ba05
  Author: Yves Orton 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M pod/perl5378delta.pod
M pod/perldelta.pod
M pod/perlre.pod
M regcomp.c
M regexec.c
M t/re/pat_re_eval.t
M toke.c

  Log Message:
  ---
  regcomp.c - remove (**{ ... }) from the regex engine

Dave M pointed out that this idea was flawed, and after some
testing I have come to agree with him. This removes it. It was
only available for 5.37.8, so no deprecation cycle involved.




[Perl/perl5] 70bac3: Avoid a use-after-free warning by converting a poi...

2023-02-07 Thread Paul Evans via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 70bac31a4f4e90f39d9876a34715f0c83d2684dd
  
https://github.com/Perl/perl5/commit/70bac31a4f4e90f39d9876a34715f0c83d2684dd
  Author: Paul "LeoNerd" Evans 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M util.c

  Log Message:
  ---
  Avoid a use-after-free warning by converting a pointer to a UV for debug 
print purposes before we call realloc() on it




[Perl/perl5] c17189: embed.fnc - sort entries alphabetically by functio...

2023-02-07 Thread Yves Orton via perl5-changes
  Branch: refs/heads/yves/tidy_embed_fnc
  Home:   https://github.com/Perl/perl5
  Commit: c17189b54913301da01edfd0ccd68b5b2cc01a8c
  
https://github.com/Perl/perl5/commit/c17189b54913301da01edfd0ccd68b5b2cc01a8c
  Author: Yves Orton 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M embed.fnc
M regen/tidy_embed.pl

  Log Message:
  ---
  embed.fnc - sort entries alphabetically by function name.

This is actually a library sort (lc with underbars removed), followed by a
lexicographical sort. Comment lines are sticky to the line that follows
them.

Somehow the original version of this patch was missed in my earlier work on
tidy_embed.pl, I think I messed up a rebase somehow. I noticed it was missing
when I realized that new entries werent being sorted into place correctly.

While this patch creates a fair bit of churn in the file right now, long
term it will make it easier to use. Also note that the *output* files
have not changed, which validates that the patch did not break anything.


  Commit: 283d0609a03b5edc798a71944ac91d5ce9427e33
  
https://github.com/Perl/perl5/commit/283d0609a03b5edc798a71944ac91d5ce9427e33
  Author: Yves Orton 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M embed.fnc
M regen/HeaderParser.pm
M regen/embed.pl

  Log Message:
  ---
  embed.pl - sort and dedupe flags in embef.fnc as part of tidy

This ensures we use a canonical string for each possible flag variant,
which makes it easier to search for flags with a given flag signature.

It also exposed a mutex bug in flag handling which caused
PerlEnv_putenv to be improperly marked as static, when it is in fact
static inline.

To validate there aren't any issues like this remaining in the script
I set it up so the flags were shuffled during processing and ran
embed.pl in a loop for a while and none of the output files changed,
so I assume there are no further such issues.

This patch also includes some basic validation of the flags so that if
someone misses a line continuation the following lines are not treated
as a new definition without any flags. I also ran perltidy on it
according to the rules contained within the file.


Compare: https://github.com/Perl/perl5/compare/3377fd383fe3...283d0609a03b


[Perl/perl5] 83ba55: Assert that an op_free()'ed op has an op_first if ...

2023-02-07 Thread Paul Evans via perl5-changes
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 83ba55794efd51e7a10531c7e50a859fe310ffb0
  
https://github.com/Perl/perl5/commit/83ba55794efd51e7a10531c7e50a859fe310ffb0
  Author: Paul "LeoNerd" Evans 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M op.c

  Log Message:
  ---
  Assert that an op_free()'ed op has an op_first if it has OPf_KIDS (fixes 
#20764)


  Commit: aa2d00d7d06d0ec6110c4351b635728dfa53bc81
  
https://github.com/Perl/perl5/commit/aa2d00d7d06d0ec6110c4351b635728dfa53bc81
  Author: Paul "LeoNerd" Evans 
  Date:   2023-02-07 (Tue, 07 Feb 2023)

  Changed paths:
M op.c

  Log Message:
  ---
  Also add a note to the docs of op_free() to remind users about clearing the 
OPf_KIDS flag


Compare: https://github.com/Perl/perl5/compare/dcf36a4fb962...aa2d00d7d06d