regen META.json for v5.24.0-RC
[perl.git] / Porting / perl5240delta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perl5240delta - what is new for perl v5.24.0
6
7 =head1 DESCRIPTION
8
9 This document describes the differences between the 5.22.0 release and the
10 5.24.0 release.
11
12 =head1 Core Enhancements
13
14 =head2 Postfix dereferencing is no longer experimental
15
16 Using the C<postderef> and C<postderef_qq> features no longer emits a
17 warning. Existing code that disables the C<experimental::postderef> warning
18 category that they previously used will continue to work. The C<postderef>
19 feature has no effect; all Perl code can use postfix dereferencing,
20 regardless of what feature declarations are in scope. The C<5.24> feature
21 bundle now includes the C<postderef_qq> feature.
22
23 =head2 Unicode 8.0 is now supported
24
25 For details on what is in this release, see
26 L<http://www.unicode.org/versions/Unicode8.0.0/>.
27
28 =head2 perl will now croak when closing an in-place output file fails
29
30 Until now, failure to close the output file for an in-place edit was not
31 detected, meaning that the input file could be clobbered without the edit being
32 successfully completed.  Now, when the output file cannot be closed
33 successfully, an exception is raised.
34
35 =head2 New C<\b{lb}> boundary in regular expressions
36
37 C<lb> stands for Line Break.  It is a Unicode property
38 that determines where a line of text is suitable to break (typically so
39 that it can be output without overflowing the available horizontal
40 space).  This capability has long been furnished by the
41 L<Unicode::LineBreak> module, but now a light-weight, non-customizable
42 version that is suitable for many purposes is in core Perl.
43
44 =head2 C<qr/(?[ ])/> now works in UTF-8 locales
45
46 L<Extended Bracketed Character Classes|perlrecharclass/Extended Bracketed Character Classes>
47 now will successfully compile when S<C<use locale>> is in effect.  The compiled
48 pattern will use standard Unicode rules.  If the runtime locale is not a
49 UTF-8 one, a warning is raised and standard Unicode rules are used
50 anyway.  No tainting is done since the outcome does not actually depend
51 on the locale.
52
53 =head2 Integer shift (C<< << >> and C<< >> >>) now more explicitly defined
54
55 Negative shifts are reverse shifts: left shift becomes right shift,
56 and right shift becomes left shift.
57
58 Shifting by the number of bits in a native integer (or more) is zero,
59 except when the "overshift" is right shifting a negative value under
60 C<use integer>, in which case the result is -1 (arithmetic shift).
61
62 Until now negative shifting and overshifting have been undefined
63 because they have relied on whatever the C implementation happens
64 to do.  For example, for the overshift a common C behavior is
65 "modulo shift":
66
67   1 >> 64 == 1 >> (64 % 64) == 1 >> 0 == 1  # Common C behavior.
68
69   # And the same for <<, while Perl now produces 0 for both.
70
71 Now these behaviors are well-defined under Perl, regardless of what
72 the underlying C implementation does.  Note, however, that you cannot
73 escape the native integer width, you need to know how far left you
74 can go.  You can use for example:
75
76   use Config;
77   my $wordbits = $Config{uvsize} * 8;  # Or $Config{uvsize} << 3.
78
79 If you need a more bits on the left shift, you can use for example
80 the C<bigint> pragma, or the C<Bit::Vector> module from CPAN.
81
82 =head2 printf and sprintf now allow reordered precision arguments
83
84 That is, C<< sprintf '|%.*2$|', 2, 3 >> now returns C<|002|>. This extends
85 the existing reordering mechanism (which allows reordering for arguments
86 that are used as format fields, widths, and vector separators).
87
88 =head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
89
90 When passing the C<SA_SIGINFO> flag to L<sigaction|POSIX/sigaction>, the
91 C<errno>, C<status>, C<uid>, C<pid>, C<addr> and C<band> fields are now
92 included in the hash passed to the handler, if supported by the
93 platform.
94
95 =head1 Security
96
97 =head2 Set proper umask before calling C<mkstemp(3)>
98
99 In 5.22 perl started setting umask to 0600 before calling C<mkstemp(3)>
100 and restoring it afterwards. This wrongfully tells open(2) to strip
101 the owner read and write bits from the given mode before applying it,
102 rather than the intended negation of leaving only those bits in place.
103
104 Systems that use mode 0666 in C<mkstemp(3)> (like old versions of
105 glibc) create a file with permissions 0066, leaving world read and
106 write permissions regardless of current umask.
107
108 This has been fixed by using umask 0177 instead. [perl #127322]
109
110 =head2 fix out of boundary access in Win32 path handling
111
112 This is CVE-2015-8608.  For more information see
113 L<[perl #126755]|https://rt.perl.org/Ticket/Display.html?id=126755>
114
115 =head2 fix loss of taint in canonpath
116
117 This is CVE-2015-8607.  For more information see
118 L<[perl #126862]|https://rt.perl.org/Ticket/Display.html?id=126862>
119
120 =head2 Avoid accessing uninitialized memory in win32 C<crypt()>
121
122 Added validation that will detect both a short salt and invalid characters
123 in the salt.
124 L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922>
125
126 =head2 Remove duplicate environment variables from C<environ>
127
128 Previously, if an environment variable appeared more than once in
129 C<environ[]>, C<%ENV> would contain the last entry for that name,
130 while a typical C<getenv()> would return the first entry. We now
131 make sure C<%ENV> contains the same as what C<getenv> returns.
132
133 Second, we remove duplicates from C<environ[]>, so if a setting
134 with that name is set in C<%ENV> we won't pass an unsafe value
135 to a child process.
136
137 [CVE-2016-2381]
138
139 =head1 Incompatible Changes
140
141 =head2 The C<autoderef> feature has been removed
142
143 The experimental C<autoderef> feature (which allowed calling C<push>,
144 C<pop>, C<shift>, C<unshift>, C<splice>, C<keys>, C<values>, and C<each> on
145 a scalar argument) has been deemed unsuccessful. It has now been removed;
146 trying to use the feature (or to disable the C<experimental::autoderef>
147 warning it previously triggered) now yields an exception.
148
149 =head2 Lexical $_ has been removed
150
151 C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
152 with no obvious solution.  In Perl 5.18.0, it was made experimental on the
153 theory that it would either be removed or redesigned in a less confusing (but
154 backward-incompatible) way.  Over the following years, no alternatives were
155 proposed.  The feature has now been removed and will fail to compile.
156
157 =head2 C<qr/\b{wb}/> is now tailored to Perl expectations
158
159 This is now more suited to be a drop-in replacement for plain C<\b>, but
160 giving better results for parsing natural language.  Previously it
161 strictly followed the current Unicode rules which calls for it to match
162 between each white space character.  Now it doesn't generally match
163 within spans of white space, behaving like C<\b> does.  See
164 L<perlrebackslash/\b{wb}>
165
166 =head2 Regular expression compilation errors
167
168 Some regular expression patterns that had runtime errors now
169 don't compile at all.
170
171 Almost all Unicode properties using the C<\p{}> and C<\P{}> regular
172 expression pattern constructs are now checked for validity at pattern
173 compilation time, and invalid ones will cause the program to not
174 compile.  In earlier releases, this check was often deferred until run
175 time.  Whenever an error check is moved from run- to compile time,
176 erroneous code is caught 100% of the time, whereas before it would only
177 get caught if and when the offending portion actually gets executed,
178 which for unreachable code might be never.
179
180 =head2 C<qr/\N{}/> now disallowed under C<use re "strict">
181
182 An empty C<\N{}> makes no sense, but for backwards compatibility is
183 silently accepted as doing nothing.  But now this is a fatal error under
184 the experimental feature L<re/'strict' mode>.
185
186 =head2 Nested declarations are now disallowed
187
188 A C<my>, C<our>, or C<state> declaration is no longer allowed inside
189 of another C<my>, C<our>, or C<state> declaration.
190
191 For example, these are now fatal:
192
193    my ($x, my($y));
194    our (my $x);
195
196 L<[perl #125587]|https://rt.perl.org/Ticket/Display.html?id=125587>
197
198 L<[perl #121058]|https://rt.perl.org/Ticket/Display.html?id=121058>
199
200 =head2 The C</\C/> character class has been removed.
201
202 This regular expression character class was deprecated in v5.20.0 and has
203 produced a deprecation warning since v5.22.0. It is now a compile-time
204 error. If you need to examine the individual bytes that make up a
205 UTF8-encoded character, then use C<utf8::encode()> on the string (or a
206 copy) first.
207
208 =head2 C<chdir('')> no longer chdirs home
209
210 Using C<chdir('')> or C<chdir(undef)> to chdir home has been deprecated since
211 perl v5.8, and will now fail.  Use C<chdir()> instead.
212
213 =head2 ASCII characters in variable names must now be all visible
214
215 It was legal until now on ASCII platforms for variable names to contain
216 non-graphical ASCII control characters (ordinals 0 through 31, and 127,
217 which are the C0 controls and C<DELETE>).  This usage has been
218 deprecated since v5.20, and as of now causes a syntax error.  The
219 variables these names referred to are special, reserved by Perl for
220 whatever use it may choose, now, or in the future.  Each such variable
221 has an alternative way of spelling it.  Instead of the single
222 non-graphic control character, a two character sequence beginning with a
223 caret is used, like C<$^]> and C<${^GLOBAL_PHASE}>.  Details are at
224 L<perlvar>.   It remains legal, though unwise and deprecated (raising a
225 deprecation warning), to use certain non-graphic non-ASCII characters in
226 variables names when not under S<C<use utf8>>.  No code should do this,
227 as all such variables are reserved by Perl, and Perl doesn't currently
228 define any of them (but could at any time, without notice).
229
230 =head2 An off by one issue in C<$Carp::MaxArgNums> has been fixed
231
232 C<$Carp::MaxArgNums> is supposed to be the number of arguments to display.
233 Prior to this version, it was instead showing C<$Carp::MaxArgNums> + 1 arguments,
234 contrary to the documentation.
235
236 =head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
237
238 The experimental Extended Bracketed Character Classes can contain regular
239 bracketed character classes within them.  These differ from regular ones in
240 that white space is generally ignored, unless escaped by preceding it with a
241 backslash.  The white space that is ignored is now limited to just tab C<\t>
242 and SPACE characters.  Previously, it was any white space.  See
243 L<perlrecharclass/Extended Bracketed Character Classes>.
244
245 =head1 Deprecations
246
247 =head2 Using code points above the platform's C<IV_MAX> is now deprecated
248
249 Unicode defines code points in the range C<0..0x10FFFF>.  Some standards
250 at one time defined them up to 2**31 - 1, but Perl has allowed them to
251 be as high as anything that will fit in a word on the platform being
252 used.  However, use of those above the platform's C<IV_MAX> is broken in
253 some constructs, notably C<tr///>, regular expression patterns involving
254 quantifiers, and in some arithmetic and comparison operations, such as
255 being the upper limit of a loop.  Now the use of such code points raises
256 a deprecation warning, unless that warning category is turned off.
257 C<IV_MAX> is typically 2**31 -1 on 32-bit platforms, and 2**63-1 on
258 64-bit ones.
259
260 =head2 Doing bitwise operations on strings containing code points above
261 0xFF is deprecated
262
263 The string bitwise operators treat their operands as strings of bytes,
264 and values beyond 0xFF are nonsensical in this context.  To operate on
265 encoded bytes, first encode the strings.  To operate on code points'
266 numeric values, use C<split> and C<map ord>.  In the future, this
267 warning will be replaced by an exception.
268
269 =head2 sysread(), syswrite(), recv() and send() are deprecated on
270 :utf8 handles
271
272 The sysread(), recv(), syswrite() and send() operators
273 are deprecated on handles that have the C<:utf8> layer, either
274 explicitly, or implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
275
276 Both sysread() and recv() currently use only the C<:utf8> flag for the
277 stream, ignoring the actual layers.  Since sysread() and recv() do no
278 UTF-8 validation they can end up creating invalidly encoded scalars.
279
280 Similarly, syswrite() and send() use only the C<:utf8> flag, otherwise
281 ignoring any layers.  If the flag is set, both write the value UTF-8
282 encoded, even if the layer is some different encoding, such as the
283 example above.
284
285 Ideally, all of these operators would completely ignore the C<:utf8>
286 state, working only with bytes, but this would result in silently
287 breaking existing code.  To avoid this a future version of perl will
288 throw an exception when any of sysread(), recv(), syswrite() or send()
289 are called on handle with the C<:utf8> layer.
290
291 =head1 Performance Enhancements
292
293 =over 4
294
295 =item *
296
297 The overhead of scope entry and exit has been considerably reduced, so
298 for example subroutine calls, loops and basic blocks are all faster now.
299 This empty function call now takes about a third less time to execute:
300
301     sub f{} f();
302
303 =item *
304
305 Many languages, such as Chinese, are caseless.  Perl now knows about
306 most modern commercially important ones, and skips much of the work when
307 a program tries to change case in them (like C<ucfirst()>) or match
308 caselessly (C<qr//i>).  This will speed up a program, such as a web
309 server, that can operate on multiple languages, while operating on a
310 caseless one.
311
312 =item *
313
314 C</fixed-substr/> has been made much faster.
315
316 On platforms with a libc memchr() implementation which makes good use of
317 underlying hardware support, patterns which include fixed substrings will now
318 often be much faster; for example with glibc on a recent x86_64 CPU, this:
319
320     $s = "a" x 1000 . "wxyz";
321     $s =~ /wxyz/ for 1..30000
322
323 is now about 7 times faster.  On systems with slow memchr(), e.g. 32-bit ARM
324 Raspberry Pi, there will be a small or little speedup.  Conversely, some
325 pathological cases, such as C<"ab" x 1000 =~ /aa/> will be slower now; up to 3
326 times slower on the rPi, 1.5x slower on x86_64.
327
328 =item *
329
330 Faster addition, subtraction and multiplication.
331
332 Since 5.8.0, arithmetic became slower due to the need to support
333 64-bit integers. To deal with 64-bit integers, a lot more corner
334 cases need to be checked, which adds time. We now detect common
335 cases where there is no need to check for those corner cases,
336 and special-case them.
337
338 =item *
339
340 Preincrement, predecrement, postincrement, and postdecrement have been
341 made faster by internally splitting the functions which handled multiple
342 cases into different functions.
343
344 =item *
345
346 Creating Perl debugger data structures (see L<perldebguts/"Debugger Internals">)
347 for XSUBs and const subs has been removed.  This removed one glob/scalar combo
348 for each unique C<.c> file that XSUBs and const subs came from.  On startup
349 (C<perl -e"0">) about half a dozen glob/scalar debugger combos were created.
350 Loading XS modules created more glob/scalar combos.  These things were created
351 regardless if the perl debugger was being used or not, unlike for pure perl
352 subs, and ignores that the perl debugger can not debug C code.
353
354 =item *
355
356 On Win32, C<stat>ing or C<-X>ing a path, if the file or directory does not
357 exist, is now 3.5x faster than before.
358
359 =item *
360
361 Single arguments in list assign are now slightly faster:
362
363   ($x) = (...);
364   (...) = ($x);
365
366 =item *
367
368 Less peak memory is now used when compiling regular expression patterns.
369
370 =back
371
372 =head1 Modules and Pragmata
373
374 =head2 Updated Modules and Pragmata
375
376 XXX: todo
377
378 =head1 Documentation
379
380 =head2 Changes to Existing Documentation
381
382 =head3 L<perlapi>
383
384 =over 4
385
386 =item *
387
388 The process of using undocumented globals has been documented, namely, that one
389 should send email to L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>
390 first to get the go-ahead for documenting and using an undocumented function or
391 global variable.
392
393 =back
394
395 =head3 L<perlcall>
396
397 =over 4
398
399 =item *
400
401 A number of cleanups have been made to perlcall, including:
402
403 =over 4
404
405 =item *
406
407 use EXTEND(SP, n) and PUSHs() instead of XPUSHs() where applicable
408 and update prose to match
409
410 =item *
411
412 add POPu, POPul and POPpbytex to the "complete list of POP macros"
413 and clarify the documentation for some of the existing entries, and
414 a note about side-effects
415
416 =item *
417
418 add API documentation for POPu and POPul
419
420 =item *
421
422 use ERRSV more efficiently
423
424 =item *
425
426 approaches to thread-safety storage of SVs.
427
428 =back
429
430 =back
431
432 =head3 L<perlfunc>
433
434 =over 4
435
436 =item *
437
438 The documentation of C<hex> has been revised to clarify valid inputs.
439
440 =item *
441
442 Better explain meaning of negative PIDs in C<waitpid>.
443 L<[perl #127080]|https://rt.perl.org/Ticket/Display.html?id=127080>
444
445 =item *
446
447 General cleanup: there's more consistency now (in POD usage, grammar, code
448 examples), better practices in code examples (use of C<my>, removal of bareword
449 filehandles, dropped usage of C<&> when calling subroutines, ...), etc.
450
451 =back
452
453 =head3 L<perlguts>
454
455 =over 4
456
457 =item *
458
459 A new section has been added, L<perlguts/"Dynamic Scope and the Context
460 Stack">, which explains how the perl context stack works.
461
462 =back
463
464 =head3 L<perlmodlib>
465
466 =over 4
467
468 =item *
469
470 We now recommend contacting the module-authors list or PAUSE in seeking
471 guidance on the naming of modules.
472
473 =back
474
475 =head3 L<perlop>
476
477 =over 4
478
479 =item *
480
481 The documentation of C<qx//> now describes how C<$?> is affected.
482
483 =back
484
485 =head3 L<perlpolicy>
486
487 =over 4
488
489 =item *
490
491 This note has been added to perlpolicy:
492
493   While civility is required, kindness is encouraged; if you have any doubt
494   about whether you are being civil, simply ask yourself, "Am I being kind?"
495   and aspire to that.
496
497 =back
498
499 =head3 L<perlreftut>
500
501 =over 4
502
503 =item *
504
505 Fix some examples to be L<strict> clean.
506
507 =back
508
509 =head3 L<perlrebackslash>
510
511 =over 4
512
513 =item *
514
515 Clarify that in languages like Japanese and Thai, dictionary lookup
516 is required to determine word boundaries.
517
518 =back
519
520 =head3 L<perlsub>
521
522 =over 4
523
524 =item *
525
526 Updated to note that anonymous subroutines can have signatures.
527
528 =back
529
530 =head3 L<perlsyn>
531
532 =over 4
533
534 =item *
535
536 Fixed a broken example where C<=> was used instead of
537 C<==> in conditional in do/while example.
538
539 =back
540
541 =head3 L<perltie>
542
543 =over 4
544
545 =item *
546
547 The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
548
549 =back
550
551 =head3 L<perlunicode>
552
553 =over 4
554
555 =item *
556
557 Discourage use of 'In' prefix for Unicode Block property.
558
559 =back
560
561 =head3 L<perlvar>
562
563 =over 4
564
565 =item *
566
567 The documentation of C<$@> was reworded to clarify that it is not just for
568 syntax errors in C<eval>.
569 L<[perl #124034]|https://rt.perl.org/Ticket/Display.html?id=124034>
570
571 =item *
572
573 The specific true value of C<$!{E...}> is now documented, noting that it is
574 subject to change and not guaranteed.
575
576 =item *
577
578 Use of C<$OLD_PERL_VERSION> is now discouraged.
579
580 =back
581
582 =head3 L<perlxs>
583
584 =over 4
585
586 =item *
587
588 The documentation of C<PROTOTYPES> has been corrected; they are I<disabled>
589 by default, not I<enabled>.
590
591 =back
592
593 =head1 Diagnostics
594
595 The following additions or changes have been made to diagnostic output,
596 including warnings and fatal error messages.  For the complete list of
597 diagnostic messages, see L<perldiag>.
598
599 =head2 New Diagnostics
600
601 =head3 New Errors
602
603 =over 4
604
605 =item *
606
607 L<%s must not be a named sequence in transliteration operator|perldiag/"%s must not be a named sequence in transliteration operator">
608
609 (F) Transliteration (C<tr///> and C<y///>) transliterates individual
610 characters.  But a named sequence by definition is more than an
611 individual charater, and hence doing this operation on it doesn't make
612 sense.
613
614 =item *
615
616 L<Can't find Unicode property definition "%s" in regex;|perldiag/"Can't find Unicode property definition "%s" in regex; marked by <-- HERE in m/%s/">
617
618 =item *
619
620 L<Can't redeclare "%s" in "%s"|perldiag/"Can't redeclare "%s" in "%s"">
621
622 (F) A "my", "our" or "state" declaration was found within another declaration,
623 such as C<my ($x, my($y), $z)> or C<our (my $x)>.
624
625 =item *
626
627 L<Character following \p must be '{' or a single-character Unicode property name in regex;|perldiag/"Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/">
628
629 =item *
630
631 L<Empty \%c in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
632 |perldiag/"Empty \%c in regex; marked by <-- HERE in mE<sol>%sE<sol>">
633
634 =item *
635
636 L<Illegal user-defined property name|perldiag/"Illegal user-defined property name">
637
638 =item *
639
640 L<Invalid number '%s' for -C option.|perldiag/"Invalid number '%s' for -C option.">
641
642 (F) You supplied a number to the -C option that either has extra leading
643 zeroes or overflows perl's unsigned integer representation.
644
645 =item *
646
647 L<<< Sequence (?... not terminated in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Sequence (?... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
648
649 =item *
650
651 L<<< Sequence (?PE<lt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
652 |perldiag/"Sequence (?PE<lt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>" >>>
653
654 =item *
655
656 L<Sequence (?PE<gt>... not terminated in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>
657 |perldiag/"Sequence (?PE<gt>... not terminated in regex; marked by <-- HERE in mE<sol>%sE<sol>">
658
659 =back
660
661 =head3 New Warnings
662
663 =over 4
664
665 =item *
666
667 L<Assuming NOT a POSIX class since %s in regex; marked by E<lt>-- HERE in mE<sol>%sE<sol>|
668 perldiag/Assuming NOT a POSIX class since %s in regex; marked by <-- HERE in mE<sol>%sE<sol>>
669
670 =item *
671
672 L<%s() is deprecated on :utf8 handles|perldiag/"%s() is deprecated on :utf8 handles">
673
674 (W deprecated) The sysread(), recv(), syswrite() and send() operators
675 are deprecated on handles that have the C<:utf8> layer, either
676 explicitly, or implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
677
678 Both sysread() and recv() currently use only the C<:utf8> flag for the
679 stream, ignoring the actual layers.  Since sysread() and recv() do no
680 UTF-8 validation they can end up creating invalidly encoded scalars.
681
682 Similarly, syswrite() and send() use only the C<:utf8> flag, otherwise
683 ignoring any layers.  If the flag is set, both write the value UTF-8
684 encoded, even if the layer is some different encoding, such as the
685 example above.
686
687 Ideally, all of these operators would completely ignore the C<:utf8>
688 state, working only with bytes, but this would result in silently
689 breaking existing code.  To avoid this a future version of perl will
690 throw an exception when any of sysread(), recv(), syswrite() or send()
691 are called on handle with the C<:utf8> layer.
692
693 =back
694
695 =head2 Changes to Existing Diagnostics
696
697 =over 4
698
699 =item *
700
701 Accessing the C<IO> part of a glob as C<FILEHANDLE> instead of C<IO> is no
702 longer deprecated.  It is discouraged to encourage uniformity (so that, for
703 example, one can grep more easily) but it will not be removed.
704 L<[perl #127060]|https://rt.perl.org/Ticket/Display.html?id=127060>
705
706 =item *
707
708 The diagnostic C<< Hexadecimal float: internal error >> has been changed to
709 C<< Hexadecimal float: internal error (%s) >> to include more information.
710
711 =item *
712
713 L<Can't modify non-lvalue subroutine call of &%s|perldiag/"Can't modify non-lvalue subroutine call of &%s">
714
715 This error now reports the name of the non-lvalue subroutine you attempted to
716 use as an lvalue.
717
718 =item *
719
720 When running out of memory during an attempt the increase the stack
721 size, previously, perl would die using the cryptic message
722 C<< panic: av_extend_guts() negative count (-9223372036854775681) >>.
723 This has been fixed to show the prettier message:
724 L<< Out of memory during stack extend|perldiag/"Out of memory during %s extend" >>
725
726 =back
727
728 =head1 Configuration and Compilation
729
730 =over 4
731
732 =item *
733
734 C<Configure> now acts as if the C<-O> option is always passed, allowing command
735 line options to override saved configuration.  This should eliminate confusion
736 when command line options are ignored for no obvious reason.  C<-O> is now
737 permitted, but ignored.
738
739 =item *
740
741 Bison 3.0 is now supported.
742
743 =item *
744
745 F<Configure> no longer probes for F<libnm> by default.  Originally
746 this was the "New Math" library, but the name has been re-used by the
747 GNOME NetworkManager.
748 L<[perl #127131]|https://rt.perl.org/Ticket/Display.html?id=127131>
749
750 =item *
751
752 Added F<Configure> probes for C<newlocale>, C<freelocale>, and C<uselocale>.
753
754 =item *
755
756 C<< PPPort.so/PPPort.dll >> no longer get installed, as they are
757 not used by C<< PPPort.pm >>, only by its test files.
758
759 =item *
760
761 It is now possible to specify which compilation date to show on
762 C<< perl -V >> output, by setting the macro C<< PERL_BUILD_DATE >>.
763
764 =item *
765
766 Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
767 C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
768 the interpreter, since Perl 5.17.10.  This has been fixed.
769
770 =item *
771
772 F<Configure> should handle spaces in paths a little better.
773
774 =item *
775
776 No longer generate EBCDIC POSIX-BC tables.  We don't believe anyone is
777 using Perl and POSIX-BC at this time, and by not generating these tables
778 it saves time during development, and makes the resulting tar ball smaller.
779
780 =item *
781
782 The GNU Make makefile for Win32 now supports parallel builds.  [perl #126632]
783
784 =item *
785
786 You can now build perl with MSVC++ on Win32 using GNU Make.  [perl #126632]
787
788 =item *
789
790 The Win32 miniperl now has a real C<getcwd> which increases build performance
791 resulting in C<getcwd()> being 605x faster in Win32 miniperl.
792
793 =back
794
795 =head1 Testing
796
797 =over 4
798
799 =item *
800
801 A new test (F<t/op/aassign.t>) has been added to test the list assignment operator
802 C<OP_AASSIGN>.
803
804 =item *
805
806 Parallel building has been added to the dmake C<makefile.mk> makefile. All
807 Win32 compilers are supported.
808
809 =back
810
811 =head1 Platform Support
812
813 =head2 Platform-Specific Notes
814
815 =over 4
816
817 =item AmigaOS
818
819 The AmigaOS port has been reintegrated into the main tree, based off of
820 Perl 5.22.1.
821
822 =item Cygwin
823
824 Tests are more robust against unusual cygdrive prefixes.
825 L<[perl #126834]|https://rt.perl.org/Ticket/Display.html?id=126834>
826
827 =item EBCDIC
828
829 =over 4
830
831 =item UTF-EBCDIC extended
832
833 UTF-EBCDIC is like UTF-8, but for EBCDIC platforms.  It now has been
834 extended so that it can represent code points up to 2 ** 64 - 1 on
835 platforms with 64-bit words.  This brings it into parity with UTF-8.
836 This enhancement requires an incompatible change to the representation
837 of code points in the range 2 ** 30 to 2 ** 31 -1 (the latter was the
838 previous maximum representable code point).  This means that a file that
839 contains one of these code points, written out with previous versions of
840 perl cannot be read in, without conversion, by a perl containing this
841 change.  We do not believe any such files are in existence, but if you
842 do have one, submit a ticket at L<perlbug@perl.org|mailto:perlbug@perl.org>,
843 and we will write a conversion script for you.
844
845 =item EBCDIC C<cmp()> and C<sort()> fixed for UTF-EBCDIC strings
846
847 Comparing two strings that were both encoded in UTF-8 (or more
848 precisely, UTF-EBCDIC) did not work properly until now.  Since C<sort()>
849 uses C<cmp()>, this fixes that as well.
850
851 =item EBCDIC C<tr///> and C<y///> fixed for C<\N{}>, and C<S<use utf8>> ranges
852
853 Perl v5.22 introduced the concept of portable ranges to regular
854 expression patterns.  A portable range matches the same set of
855 characters no matter what platform is being run on.  This concept is now
856 extended to C<tr///>.  See
857 C<L<trE<sol>E<sol>E<sol>|perlop/trE<sol>SEARCHLISTE<sol>REPLACEMENTLISTE<sol>cdsr>>.
858
859 There were also some problems with these operations under S<C<use
860 utf8>>, which are now fixed
861
862 =back
863
864 =item FreeBSD
865
866 =over
867
868 =item *
869
870 Use the C<fdclose()> function from FreeBSD if it is available.
871 L<[perl #126847]|https://rt.perl.org/Ticket/Display.html?id=126847>
872
873 =back
874
875 =item IRIX
876
877 =over
878
879 =item *
880
881 Under some circumstances IRIX stdio fgetc() and fread() set the errno to
882 C<ENOENT>, which made no sense according to either IRIX or POSIX docs.  Errno
883 is now cleared in such cases.
884 L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977>
885
886 =item *
887
888 Problems when multiplying long doubles by infinity have been fixed.
889 L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
890
891 =back
892
893 =item MacOS X
894
895 =over
896
897 =item *
898
899 Until now OS X builds of perl have specified a link target of 10.3 (Panther,
900 2003) but have not specified a compiler target.  From now on, builds of perl on
901 OS X 10.6 or later (Snow Leopard, 2008) by default capture the current OS X
902 version and specify that as the explicit build target in both compiler and
903 linker flags, thus preserving binary compatibility for extensions built later
904 regardless of changes in OS X, SDK, or compiler and linker versions.  To
905 override the default value used in the build and preserved in the flags,
906 specify C<export MACOSX_DEPLOYMENT_TARGET=10.N> before configuring and building
907 perl, where 10.N is the version of OS X you wish to target.  In OS X 10.5 or
908 earlier there is no change to the behavior present when those systems were
909 current; the link target is still OS X 10.3 and there is no explicit compiler
910 target.
911
912 =item *
913
914 Builds with both -DDEBUGGING and threading enabled would fail with a
915 "panic: free from wrong pool" error when built or tested from Terminal
916 on OS X.  This was caused by perl's internal management of the
917 environment conflicting with an atfork handler using the libc
918 setenv() function to update the environment.
919
920 Perl now uses setenv()/unsetenv() to update the environment on OS X.
921 L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
922
923 =back
924
925 =item Solaris
926
927 All Solaris now builds shared libperl.
928
929 Solaris and variants like OpenIndiana now always build with the shared
930 Perl library (Configure -Duseshrplib).  This was required for the
931 OpenIndiana builds, but this has also been the setting for Oracle/Sun
932 Perl builds for several years.
933
934 =item Tru64
935
936 Workaround where Tru64 balks when prototypes are listed as
937 C<< PERL_STATIC_INLINE >>, but where the test is build with
938 C<< -DPERL_NO_INLINE_FUNCTIONS >>.
939
940 =item VMS
941
942 =over
943
944 =item *
945
946 On VMS, the math function prototypes in C<math.h> are now visible under C++.
947 Now building the POSIX extension with C++ will no longer crash.
948
949 =item *
950
951 VMS has had C<setenv/unsetenv> since v7.0 (released in 1996), C<Perl_vmssetenv>
952 now always uses C<setenv/unsetenv>.
953
954 =item *
955
956 Perl now implements its own C<killpg> by scanning for processes in the
957 specified process group, which may not mean exactly the same thing as a Unix
958 process group, but allows us to send a signal to a parent (or master) process
959 and all of its sub-processes.  At the perl level, this means we can now send a
960 negative pid like so:
961
962     kill SIGKILL, -$pid;
963
964 to signal all processes in the same group as C<$pid>.
965
966 =item *
967
968 For those C<%ENV> elements based on the CRTL environ array, we've always
969 preserved case when setting them but did look-ups only after upcasing the
970 key first, which made lower- or mixed-case entries go missing. This problem
971 has been corrected by making C<%ENV> elements derived from the environ array
972 case-sensitive on look-up as well as case-preserving on store.
973
974 =item *
975
976 Environment look-ups for C<PERL5LIB> and C<PERLLIB> previously only
977 considered logical names, but now consider all sources of C<%ENV> as
978 determined by C<PERL_ENV_TABLES> and as documented in L<perlvms/%ENV>.
979
980 =item *
981
982 The minimum supported version of VMS is now v7.3-2, released in 2003.  As a
983 side effect of this change, VAX is no longer supported as the terminal
984 release of OpenVMS VAX was v7.3 in 2001.
985
986 =back
987
988 =item Win32
989
990 =over
991
992 =item *
993
994 A new build option C<USE_NO_REGISTRY> has been added to the makefiles.  This
995 option is off by default, meaning the default is to do Windows registry
996 lookups.  This option stops Perl from looking inside the registry for anything.
997 For what values are looked up in the registry see L<perlwin32>.  Internally, in
998 C, the name of this option is C<WIN32_NO_REGISTRY>.
999
1000 =item *
1001
1002 The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
1003 C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
1004 vars starting with C<PERL> has changed.  Previously, the 2 keys were checked
1005 for entries at all times through Perl processes life time even if they did not
1006 exist.  For performance reasons, now, if the root key (i.e.
1007 C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
1008 not exist at process start time, it will not be checked again for C<%ENV>
1009 override entries for the remainder of the Perl processes life.  This more
1010 closely matches Unix behaviour in that the environment is copied or inherited
1011 on startup and changing the variable in the parent process or another process
1012 or editing F<.bashrc> will not change the environmental variable in other
1013 existing, running, processes.
1014
1015 =item *
1016
1017 One glob fetch was removed for each C<-X> or C<stat> call whether done from
1018 Perl code or internally from Perl's C code.  The glob being looked up was
1019 C<${^WIN32_SLOPPY_STAT}> which is a special variable.  This makes C<-X> and
1020 C<stat> slightly faster.
1021
1022 =item *
1023
1024 During miniperl's process startup, during the build process, 4 to 8 IO calls
1025 related to the process starting F<.pl> and the F<buildcustomize.pl> file were
1026 removed from the code opening and executing the first 1 or 2 F<.pl> files.
1027
1028 =item *
1029
1030 Builds using Microsoft Visual C++ 2003 and earlier no longer produce
1031 an "INTERNAL COMPILER ERROR" message.  [perl #126045]
1032
1033 =item *
1034
1035 Visual C++ 2013 builds will now execute on XP and higher. Previously they would
1036 only execute on Vista and higher.
1037
1038 =item *
1039
1040 You can now build perl with GNU Make and GCC.  [perl #123440]
1041
1042 =item *
1043
1044 C<truncate($filename, $size)> now works for files over 4GB in size.
1045 [perl #125347]
1046
1047 =item *
1048
1049 Parallel building has been added to the dmake C<makefile.mk> makefile. All
1050 Win32 compilers are supported.
1051
1052 =item *
1053
1054 Building a 64-bit perl with a 64-bit GCC but a 32-bit gmake would
1055 result in an invalid C<$Config{archname}> for the resulting perl.
1056 [perl #127584]
1057
1058 =item *
1059
1060 Errors set by Winsock functions are now put directly into C<$^E>, and the
1061 relevant C<WSAE*> error codes are now exported from the L<Errno> and L<POSIX>
1062 modules for testing this against.
1063
1064 The previous behaviour of putting the errors (converted to POSIX-style C<E*>
1065 error codes since Perl 5.20.0) into C<$!> was buggy due to the non-equivalence
1066 of like-named Winsock and POSIX error constants, a relationship between which
1067 has unfortunately been established in one way or another since Perl 5.8.0.
1068
1069 The new behaviour provides a much more robust solution for checking Winsock
1070 errors in portable software without accidentally matching POSIX tests that were
1071 intended for other OSes and may have different meanings for Winsock.
1072
1073 The old behaviour is currently retained, warts and all, for backwards
1074 compatibility, but users are encouraged to change any code that tests C<$!>
1075 against C<E*> constants for Winsock errors to instead test C<$^E> against
1076 C<WSAE*> constants.  After a suitable deprecation period, the old behaviour may
1077 be removed, leaving C<$!> unchanged after Winsock function calls, to avoid any
1078 possible confusion over which error variable to check.
1079
1080 =back
1081
1082 =item ppc64el floating point
1083
1084 The floating point format of ppc64el (Debian naming for little-endian
1085 PowerPC) is now detected correctly.
1086
1087 =back
1088
1089 =head1 Internal Changes
1090
1091 =over 4
1092
1093 =item *
1094
1095 The implementation of perl's context stack system, and its internal API,
1096 have been heavily reworked. Note that no significant changes have been
1097 made to any external APIs, but XS code which relies on such internal
1098 details may need to be fixed. The main changes are:
1099
1100 =over 4
1101
1102 =item *
1103
1104 The C<PUSHBLOCK()>, C<POPSUB()> etc. macros have been replaced with static
1105 inline functions such as C<cx_pushblock()>, C<cx_popsub()> etc. These use
1106 function args rather than implicitly relying on local vars such as
1107 C<gimme> and C<newsp> being available. Also their functionality has
1108 changed: in particular, C<cx_popblock()> no longer decrements
1109 C<cxstack_ix>. The ordering of the steps in the C<pp_leave*> functions
1110 involving C<cx_popblock()>, C<cx_popsub()> etc. has changed. See the new
1111 documentation, L<perlguts/"Dynamic Scope and the Context Stack">, for
1112 details on how to use them.
1113
1114 =item *
1115
1116 Various macros, which now consistently have a CX_ prefix, have been added:
1117
1118   CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
1119
1120 or renamed:
1121
1122   CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
1123
1124 =item *
1125
1126 C<cx_pushblock()> now saves C<PL_savestack_ix> and C<PL_tmps_floor>, so
1127 C<pp_enter*> and C<pp_leave*> no longer do
1128
1129   ENTER; SAVETMPS; ....; LEAVE
1130
1131 =item *
1132
1133 C<cx_popblock()> now also restores C<PL_curpm>.
1134
1135 =item *
1136
1137 In C<dounwind()> for every context type, the current savestack frame is
1138 now processed before each context is popped; formerly this was only done
1139 for sub-like context frames. This action has been removed from
1140 C<cx_popsub()> and placed into its own macro, C<CX_LEAVE_SCOPE(cx)>, which
1141 must be called before C<cx_popsub()> etc.
1142
1143 C<dounwind()> now also does a C<cx_popblock()> on the last popped frame
1144 (formerly it only did the C<cx_popsub()> etc. actions on each frame).
1145
1146 =item *
1147
1148 The temps stack is now freed on scope exit; previously, temps created
1149 during the last statement of a block wouldn't be freed until the next
1150 C<nextstate> following the block (apart from an existing hack that did
1151 this for recursive subs in scalar context); and in something like
1152 C<f(g())>, the temps created by the last statement in C<g()> would
1153 formerly not be freed until the statement following the return from
1154 C<f()>.
1155
1156 =item *
1157
1158 Most values that were saved on the savestack on scope entry are now
1159 saved in suitable new fields in the context struct, and saved and
1160 restored directly by C<cx_pushfoo()> and C<cx_popfoo()>, which is much
1161 faster.
1162
1163 =item *
1164
1165 Various context struct fields have been added, removed or modified.
1166
1167 =item *
1168
1169 The handling of C<@_> in C<cx_pushsub()> and C<cx_popsub()> has been
1170 considerably tidied up, including removing the C<argarray> field from the
1171 context struct, and extracting out some common (but rarely used) code into
1172 a separate function, C<clear_defarray()>. Also, useful subsets of
1173 C<cx_popsub()> which had been unrolled in places like C<pp_goto> have been
1174 gathered into the new functions C<cx_popsub_args()> and
1175 C<cx_popsub_common()>.
1176
1177 =item *
1178
1179 C<pp_leavesub> and C<pp_leavesublv> now use the same function as the rest
1180 of the C<pp_leave*>'s to process return args.
1181
1182 =item *
1183
1184 C<CXp_FOR_PAD> and C<CXp_FOR_GV> flags have been added, and
1185 C<CXt_LOOP_FOR> has been split into C<CXt_LOOP_LIST>, C<CXt_LOOP_ARY>.
1186
1187 =item *
1188
1189 Some variables formerly declared by C<dMULTICALL> (but not documented) have
1190 been removed.
1191
1192 =back
1193
1194 =item *
1195
1196 The obscure C<PL_timesbuf> variable, effectively a vestige of Perl 1, has
1197 been removed. It was documented as deprecated in Perl 5.20, with a statement
1198 that it would be removed early in the 5.21.x series; that has now finally
1199 happened.
1200 L<[perl #121351]|https://rt.perl.org/Ticket/Display.html?id=121351>
1201
1202 =item *
1203
1204 Remove unwarranted assertion in C<Perl_newATTRSUB_x()>. If a stub subroutine
1205 definition with a prototype has been seen, then any subsequent stub (or
1206 definition) of the same subroutine with an attribute was causing an assertion
1207 failure because of a null pointer.
1208 L<[perl #126845]|https://rt.perl.org/Ticket/Display.html?id=126845>
1209
1210 =item *
1211
1212 Replace C<::> with C<__> in C<ExtUtils::ParseXS> like it's done for
1213 parameters/return values. This is more consistent, and simplifies writing XS
1214 code wrapping C++ classes into a nested Perl namespace (it requires only
1215 a typedef for C<Foo__Bar> rather than two, one for C<Foo_Bar> and the other
1216 for C<Foo::Bar>).
1217
1218 =item *
1219
1220 Deprecate the C<to_utf8_case()> function, see
1221 L<http://nntp.perl.org/group/perl.perl5.porters/233287>.
1222
1223 =item *
1224
1225 Perl core code and the threads extension have been annotated so that,
1226 if Perl is configured to use threads, then during compile-time clang (3.6
1227 or later) will warn about suspicious uses of mutexes.
1228 See L<http://clang.llvm.org/docs/ThreadSafetyAnalysis.html> for more
1229 information.
1230
1231 =item *
1232
1233 The C<signbit()> emulation has been enhanced.  This will help older
1234 and/or more exotic platforms or configurations.
1235
1236 =item *
1237
1238 The C<to_utf8_case> function is discouraged in favor of C<toUPPER_utf8>,
1239 C<toTITLE_utf8>, C<toLOWER_utf8>, and C<toFOLD_utf8>.
1240
1241 =item *
1242
1243 EBCDIC code paths have largely been unified to avoid repetition.
1244
1245 =item *
1246
1247 MSWin32 code for C<$^X> has been moved out of the F<win32> directory to
1248 F<caretx.c>, where other operating systems set that variable.
1249
1250 =item *
1251
1252 C<< sv_ref() >> is now part of the API.
1253
1254 =item *
1255
1256 L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>.  It
1257 previously has always returned C<0> since Perl 5.000 stable but that was
1258 undocumented.  Although C<sv_backoff> is marked as public API, XS code is not
1259 expected to be impacted since the proper API call would be through public API
1260 C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
1261 C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
1262 meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
1263
1264 =item *
1265
1266 The C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
1267 with integer truncation and wrapping.  In particular, some casts formerly used
1268 within the macros have been removed.  This means for example that passing an
1269 unsigned nitems argument is likely to raise a compiler warning now (it's always
1270 been documented to require a signed value; formerly int, lately SSize_t).
1271
1272 =item *
1273
1274 C<PL_sawalias> and C<GPf_ALIASED_SV> have been removed.
1275
1276 =item *
1277
1278 C<GvASSIGN_GENERATION> and C<GvASSIGN_GENERATION_set> have been removed.
1279
1280 =back
1281
1282 =head1 Selected Bug Fixes
1283
1284 =over 4
1285
1286 =item *
1287
1288 It now works properly to specify a user-defined property, such as
1289
1290  qr/\p{mypkg1::IsMyProperty}/i
1291
1292 with C</i> caseless matching, an explicit package name, and
1293 I<IsMyProperty> not defined at the time of the pattern compilation.
1294
1295 =item *
1296
1297 Perl's memcpy(), memmove(), memset() and memcmp() fallbacks are now
1298 more compatible with the originals.  [perl #127619]
1299
1300 =item *
1301
1302 Fixed the issue where a C<< s///r >>) with B<< -DPERL_NO_COW >> attempts
1303 to modify the source SV, resulting in the program dying. [perl #127635]
1304
1305 =item *
1306
1307 Fixed a spurious warning about posix character classes. [perl #127581]
1308
1309 =item *
1310
1311 Fixed an obscure case where a pattern could fail to match. This only 
1312 occurred when matching characters from the set of C1 controls, when
1313 the target matched string was in UTF-8, and only on EBCDIC platforms.
1314
1315 =item *
1316
1317 Fixed over eager warnings for C<< /[.foo.]/ >>.
1318
1319 This prevents Perl from warning about constructs like C<< /[.].*[.]/ >>.
1320 [perl #127582, #127604]
1321
1322 =item *
1323
1324 Narrow the filename check in F<strict.pm> and F<warnings.pm>. Previously,
1325 it assumed that if the filename (without the F<.pmc?> extension) differed
1326 from the package name, if was a misspelled use statement (i.e. C<use Strict>
1327 instead of C<use strict>). We now check whether there's really a 
1328 miscapitalization happening, and not another issue.
1329
1330 =item *
1331
1332 Turn an assertion into a more user friendly failure when parsing
1333 regexes. [perl #127599]
1334
1335 =item *
1336
1337 Correctly raise an error when trying to compile patterns with 
1338 unterminated character classes while there are trailing backslashes.
1339 [perl #126141].
1340
1341 =item *
1342
1343 Line numbers larger than 2**31-1 but less than 2**32 are no longer
1344 returned by caller() as negative numbers.  [perl #126991]
1345
1346 =item *
1347
1348 C<< unless ( I<assignment> ) >> now properly warns when syntax
1349 warnings are enabled.  [perl #127122]
1350
1351 =item *
1352
1353 Setting an C<ISA> glob to an array reference now properly adds
1354 C<isaelem> magic to any existing elements.  Previously modifying such
1355 an element would not update the ISA cache, so method calls would call
1356 the wrong function.  Perl would also crash if the C<ISA> glob was
1357 destroyed, since new code added in 5.23.7 would try to release the
1358 C<isaelem> magic from the elements.  [perl #127351]
1359
1360 =item *
1361
1362 If a here-doc was found while parsing another operator, the parser had
1363 already read end of file, and the here-doc was not terminated, perl
1364 could produce an assertion or a segmentation fault.  This now reliably
1365 complains about the unterminated here-doc.  [perl #125540]
1366
1367 =item *
1368
1369 untie() would sometimes return the last value returned by the UNTIE()
1370 handler as well as it's normal value, messing up the stack.  [perl
1371 #126621]
1372
1373 =item *
1374
1375 Fixed an operator precedence problem when C< castflags & 2> is true.
1376 [perl #127474]
1377
1378 =item *
1379
1380 Caching of DESTROY methods could result in a non-pointer or a
1381 non-STASH stored in the SvSTASH() slot of a stash, breaking the B
1382 STASH() method.  The DESTROY method is now cached in the MRO metadata
1383 for the stash.  [perl #126410]
1384
1385 =item *
1386
1387 The AUTOLOAD method is now called when searching for a DESTROY method,
1388 and correctly sets C<$AUTOLOAD> too.  [perl #124387]  [perl #127494]
1389
1390 =item *
1391
1392 Avoid parsing beyond the end of the buffer when processing a C<#line>
1393 directive with no filename.  [perl #127334]
1394
1395 =item *
1396
1397 Perl now raises a warning when a regular expression pattern looks like
1398 it was supposed to contain a POSIX class, like C<qr/[[:alpha:]]/>, but
1399 there was some slight defect in its specification which causes it to
1400 instead be treated as a regular bracketed character class.  An example
1401 would be missing the second colon in the above like this:
1402 C<qr/[[:alpha]]/>.  This compiles to match a sequence of two characters.
1403 The second is C<"]">, and the first is any of: C<"[">, C<":">, C<"a">,
1404 C<"h">, C<"l">, or C<"p">.   This is unlikely to be the intended
1405 meaning, and now a warning is raised.  No warning is raised unless the
1406 specification is very close to one of the 14 legal POSIX classes.  (See
1407 L<perlrecharclass/POSIX Character Classes>.)
1408 [perl #8904]
1409
1410 =item *
1411
1412 Certain regex patterns involving a complemented POSIX class in an
1413 inverted bracketed character class, and matching something else
1414 optionally would improperly fail to match.  An example of one that could
1415 fail is C</qr/_?[^\Wbar]\x{100}/>.  This has been fixed.
1416 [perl #127537]
1417
1418 =item *
1419
1420 Perl 5.22 added support to the C99 hexadecimal floating point notation,
1421 but sometimes misparses hex floats. This has been fixed.
1422 [perl #127183]
1423
1424 =item *
1425
1426 A regression that allowed undeclared barewords in hash keys to work despite
1427 strictures has been fixed.
1428 L<[perl #126981]|https://rt.perl.org/Ticket/Display.html?id=126981>
1429
1430 =item *
1431
1432 Calls to the placeholder C<&PL_sv_yes> used internally when an C<import()>
1433 or C<unimport()> method isn't found now correctly handle scalar context.
1434 L<[perl #126042]|https://rt.perl.org/Ticket/Display.html?id=126042>
1435
1436 =item *
1437
1438 Report more context when we see an array where we expect to see an
1439 operator and avoid an assertion failure.
1440 L<[perl #123737]|https://rt.perl.org/Ticket/Display.html?id=123737>
1441
1442 =item *
1443
1444 Modifying an array that was previously a package C<@ISA> no longer
1445 causes assertion failures or crashes.
1446 L<[perl #123788]|https://rt.perl.org/Ticket/Display.html?id=123788>
1447
1448 =item *
1449
1450 Retain binary compatibility across plain and DEBUGGING perl builds.
1451 L<[perl #127212]|https://rt.perl.org/Ticket/Display.html?id=127212>
1452
1453 =item *
1454
1455 Avoid leaking memory when setting C<$ENV{foo}> on darwin.
1456 L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
1457
1458 =item *
1459
1460 C</...\G/> no longer crashes on utf8 strings. When C<\G> is a fixed number
1461 of characters from the start of the regex, perl needs to count back that
1462 many characters from the current C<pos()> position and start matching from
1463 there. However, it was counting back bytes rather than characters, which
1464 could lead to panics on utf8 strings.
1465
1466 =item *
1467
1468 In some cases operators that return integers would return negative
1469 integers as large positive integers.
1470 L<[perl #126635]|https://rt.perl.org/Ticket/Display.html?id=126635>
1471
1472 =item *
1473
1474 The C<pipe()> operator would assert for DEBUGGING builds instead of
1475 producing the correct error message.  The condition asserted on is
1476 detected and reported on correctly without the assertions, so the
1477 assertions were removed.
1478 L<[perl #126480]|https://rt.perl.org/Ticket/Display.html?id=126480>
1479
1480 =item *
1481
1482 In some cases, failing to parse a here-doc would attempt to use freed
1483 memory.  This was caused by a pointer not being restored correctly.
1484 L<[perl #126443]|https://rt.perl.org/Ticket/Display.html?id=126443>
1485
1486 =item *
1487
1488 C<< @x = sort { *a = 0; $a <=> $b } 0 .. 1 >> no longer frees the GP
1489 for *a before restoring its SV slot.
1490 L<[perl #124097]|https://rt.perl.org/Ticket/Display.html?id=124097>
1491
1492 =item *
1493
1494 Multiple problems with the new hexadecimal floating point printf
1495 format C<%a> were fixed:
1496 L<[perl #126582]|https://rt.perl.org/Ticket/Display.html?id=126582>,
1497 L<[perl #126586]|https://rt.perl.org/Ticket/Display.html?id=126586>,
1498 L<[perl #126822]|https://rt.perl.org/Ticket/Display.html?id=126822>
1499
1500 =item *
1501
1502 Calling mg_set() in leave_scope() no longer leaks.
1503
1504 =item *
1505
1506 A regression from Perl v5.20 was fixed in which debugging output of regular
1507 expression compilation was wrong.  (The pattern was correctly compiled, but
1508 what got displayed for it was wrong.)
1509
1510 =item *
1511
1512 C<\b{sb}> works much better.  In Perl v5.22.0, this new construct didn't
1513 seem to give the expected results, yet passed all the tests in the
1514 extensive suite furnished by Unicode.  It turns out that it was because
1515 these were short input strings, and the failures had to do with longer
1516 inputs.  This was fixed in Perl 5.23.4, but the improvement was not
1517 noticed until after that was released, so is included here now.
1518
1519 =item *
1520
1521 Certain syntax errors in
1522 L<perlrecharclass/Extended Bracketed Character Classes> caused panics
1523 instead of the proper error message.  This has now been fixed. [perl
1524 #126481]
1525
1526 =item *
1527
1528 An earlier commit added a message when a quantifier in a regular
1529 expression was useless, but then caused the parser to skip it;
1530 this caused the surplus quantifier to be silently ignored, instead
1531 of throwing an error. This is now fixed. [perl #126253]
1532
1533 =item *
1534
1535 The switch to building non-XS modules last in win32/makefile.mk (introduced
1536 by design as part of the changes to enable parallel building) caused the
1537 build of POSIX to break due to problems with the version module. This
1538 is now fixed.
1539
1540 =item *
1541
1542 Improved parsing of hex float constants.
1543
1544 =item *
1545
1546 Fixed an issue with C<< pack >> where C<< pack "H" >> (and C<< pack "h" >>)
1547 could read past the source when given a non-utf8 source, and a utf8 target.
1548 [perl #126325]
1549
1550 =item *
1551
1552 Fixed several cases where perl would abort due to a segmentation fault,
1553 or a C-level assert. [perl #126615], [perl #126602], [perl #126193].
1554
1555 =item *
1556
1557 There were places in regular expression patterns where comments (C<(?#...)>)
1558 weren't allowed, but should have been.  This is now fixed.
1559 L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
1560
1561 =item *
1562
1563 Some regressions from Perl 5.20 have been fixed, in which some syntax errors in
1564 L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
1565 within regular expression patterns could cause a segfault instead of a proper
1566 error message.
1567 L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
1568 L<[perl #126404]|https://rt.perl.org/Ticket/Display.html?id=126404>
1569
1570 =item *
1571
1572 Another problem with
1573 L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes>
1574 constructs has been fixed wherein things like C<\c]> could cause panics.
1575 L<[perl #126181]|https://rt.perl.org/Ticket/Display.html?id=126181>
1576
1577 =item *
1578
1579 Some problems with attempting to extend the perl stack to around 2G or 4G
1580 entries have been fixed.  This was particularly an issue on 32-bit perls built
1581 to use 64-bit integers, and was easily noticeable with the list repetition
1582 operator, e.g.
1583
1584     @a = (1) x $big_number
1585
1586 Formerly perl may have crashed, depending on the exact value of C<$big_number>;
1587 now it will typically raise an exception.
1588 L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
1589
1590 =item *
1591
1592 In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if
1593 the condition is C<(?!)> then perl failed the match outright instead of
1594 matching the no-pattern.  This has been fixed.
1595 L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222>
1596
1597 =item *
1598
1599 The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional
1600 argument and set C<REGERROR>/C<REGMARK> appropriately as well.
1601 L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186>
1602
1603 =item *
1604
1605 Several bugs, including a segmentation fault, have been fixed with the bounds
1606 checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>,
1607 C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>.  All the C<\B{}> ones now match an empty
1608 string; none of the C<\b{}> ones do.
1609 L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319>
1610
1611 =item *
1612
1613 Duplicating a closed file handle for write no longer creates a
1614 filename of the form F<GLOB(0xXXXXXXXX)>.  [perl #125115]
1615
1616 =item *
1617
1618 Warning fatality is now ignored when rewinding the stack.  This
1619 prevents infinite recursion when the now fatal error also causes
1620 rewinding of the stack.  [perl #123398]
1621
1622 =item * 
1623
1624 In perl v5.22.0, the logic changed when parsing a numeric parameter to the -C
1625 option, such that the successfully parsed number was not saved as the option
1626 value if it parsed to the end of the argument.  [perl #125381]
1627
1628 =item *
1629
1630 The PadlistNAMES macro is an lvalue again.
1631
1632 =item *
1633
1634 Zero -DPERL_TRACE_OPS memory for sub-threads.
1635
1636 perl_clone_using() was missing Zero init of PL_op_exec_cnt[].  This
1637 caused sub-threads in threaded -DPERL_TRACE_OPS builds to spew exceedingly
1638 large op-counts at destruct.  These counts would print %x as "ABABABAB",
1639 clearly a mem-poison value.
1640
1641 =item *
1642
1643 A leak in the XS typemap caused one scalar to be leaked each time a C<FILE *>
1644 or a C<PerlIO *> was C<OUTPUT:>ed or imported to Perl, since perl 5.000. These
1645 particular typemap entries are thought to be extremely rarely used by XS
1646 modules. [perl #124181]
1647
1648 =item *
1649
1650 C<alarm()> and C<sleep()> will now warn if the argument is a negative number
1651 and return undef. Previously they would pass the negative value to the
1652 underlying C function which may have set up a timer with a surprising value.
1653
1654 =item *
1655
1656 Perl can again be compiled with any Unicode version.  This used to
1657 (mostly) work, but was lost in v5.18 through v5.20.  The property
1658 C<Name_Alias> did not exist prior to Unicode 5.0.  L<Unicode::UCD>
1659 incorrectly said it did.  This has been fixed.
1660
1661 =item *
1662
1663 Very large code-points (beyond Unicode) in regular expressions no
1664 longer cause a buffer overflow in some cases when converted to UTF-8.
1665 L<[perl #125826]|https://rt.perl.org/Ticket/Display.html?id=125826>
1666
1667 =item *
1668
1669 The integer overflow check for the range operator (...) in list
1670 context now correctly handles the case where the size of the range is
1671 larger than the address space.  This could happen on 32-bits with
1672 -Duse64bitint.
1673 L<[perl #125781]|https://rt.perl.org/Ticket/Display.html?id=125781>
1674
1675 =item *
1676
1677 A crash with C<< %::=(); J->${\"::"} >> has been fixed.
1678 L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541>
1679
1680 =item *
1681
1682 C<qr/(?[ () ])/> no longer segfaults, giving a syntax error message instead.
1683 [perl #125805]
1684
1685 =item *
1686
1687 Regular expression possessive quantifier v5.20 regression now fixed.
1688 C<qr/>I<PAT>C<{>I<min>,I<max>C<}+>C</> is supposed to behave identically
1689 to C<qr/(?E<gt>>I<PAT>C<{>I<min>,I<max>C<})/>.  Since v5.20, this didn't
1690 work if I<min> and I<max> were equal.  [perl #125825]
1691
1692 =item *
1693
1694 C<< BEGIN <> >> no longer segfaults and properly produces an error
1695 message.  [perl #125341]
1696
1697 =item *
1698
1699 In C<tr///> an illegal backwards range like C<tr/\x{101}-\x{100}//> was
1700 not always detected, giving incorrect results.  This is now fixed.
1701
1702 =back
1703
1704 =head1 Acknowledgements
1705
1706 [ XXX: generate this just in time, Ricardo! ]
1707
1708 =head1 Reporting Bugs
1709
1710 If you find what you think is a bug, you might check the articles recently
1711 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
1712 https://rt.perl.org/ .  There may also be information at
1713 http://www.perl.org/ , the Perl Home Page.
1714
1715 If you believe you have an unreported bug, please run the L<perlbug> program
1716 included with your release.  Be sure to trim your bug down to a tiny but
1717 sufficient test case.  Your bug report, along with the output of C<perl -V>,
1718 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
1719
1720 If the bug you are reporting has security implications, which make it
1721 inappropriate to send to a publicly archived mailing list, then please send it
1722 to perl5-security-report@perl.org.  This points to a closed subscription
1723 unarchived mailing list, which includes all the core committers, who will be
1724 able to help assess the impact of issues, figure out a resolution, and help
1725 co-ordinate the release of patches to mitigate or fix the problem across all
1726 platforms on which Perl is supported.  Please only use this address for
1727 security issues in the Perl core, not for modules independently distributed on
1728 CPAN.
1729
1730 =head1 SEE ALSO
1731
1732 The F<Changes> file for an explanation of how to view exhaustive details on
1733 what changed.
1734
1735 The F<INSTALL> file for how to build Perl.
1736
1737 The F<README> file for general stuff.
1738
1739 The F<Artistic> and F<Copying> files for copyright information.
1740
1741 =cut