5 perldelta - what is new for perl v5.24.0
9 This document describes the differences between the 5.22.0 release and the
12 =head1 Core Enhancements
14 =head2 Postfix dereferencing is no longer experimental
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.
23 =head2 Unicode 8.0 is now supported
25 For details on what is in this release, see
26 L<http://www.unicode.org/versions/Unicode8.0.0/>.
28 =head2 perl will now croak when closing an in-place output file fails
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.
35 =head2 New C<\b{lb}> boundary in regular expressions
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.
44 =head2 C<qr/(?[ ])/> now works in UTF-8 locales
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
53 =head2 Integer shift (C<< << >> and C<< >> >>) now more explicitly defined
55 Negative shifts are reverse shifts: left shift becomes right shift,
56 and right shift becomes left shift.
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).
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
67 1 >> 64 == 1 >> (64 % 64) == 1 >> 0 == 1 # Common C behavior.
69 # And the same for <<, while Perl now produces 0 for both.
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:
77 my $wordbits = $Config{uvsize} * 8; # Or $Config{uvsize} << 3.
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.
82 =head2 printf and sprintf now allow reordered precision arguments
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).
88 =head2 More fields provided to C<sigaction> callback with C<SA_SIGINFO>
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
97 =head2 Set proper umask before calling C<mkstemp(3)>
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.
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.
108 This has been fixed by using umask 0177 instead. [perl #127322]
110 =head2 fix out of boundary access in Win32 path handling
112 This is CVE-2015-8608. For more information see
113 L<[perl #126755]|https://rt.perl.org/Ticket/Display.html?id=126755>
115 =head2 fix loss of taint in canonpath
117 This is CVE-2015-8607. For more information see
118 L<[perl #126862]|https://rt.perl.org/Ticket/Display.html?id=126862>
120 =head2 Avoid accessing uninitialized memory in win32 C<crypt()>
122 Added validation that will detect both a short salt and invalid characters
124 L<[perl #126922]|https://rt.perl.org/Ticket/Display.html?id=126922>
126 =head2 Remove duplicate environment variables from C<environ>
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.
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
139 =head1 Incompatible Changes
141 =head2 The C<autoderef> feature has been removed
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.
149 =head2 Lexical $_ has been removed
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.
157 =head2 C<qr/\b{wb}/> is now tailored to Perl expectations
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}>
166 =head2 Regular expression compilation errors
168 Some regular expression patterns that had runtime errors now
169 don't compile at all.
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.
180 =head2 C<qr/\N{}/> now disallowed under C<use re "strict">
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>.
186 =head2 Nested declarations are now disallowed
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.
191 For example, these are now fatal:
196 L<[perl #125587]|https://rt.perl.org/Ticket/Display.html?id=125587>
198 L<[perl #121058]|https://rt.perl.org/Ticket/Display.html?id=121058>
200 =head2 The C</\C/> character class has been removed.
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
208 =head2 C<chdir('')> no longer chdirs home
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.
213 =head2 ASCII characters in variable names must now be all visible
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).
230 =head2 An off by one issue in C<$Carp::MaxArgNums> has been fixed
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.
236 =head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
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>.
247 =head2 Using code points above the platform's C<IV_MAX> is now deprecated
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
260 =head2 Doing bitwise operations on strings containing code points above
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.
269 =head2 sysread(), syswrite(), recv() and send() are deprecated on
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.
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.
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
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.
291 =head1 Performance Enhancements
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:
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
314 C</fixed-substr/> has been made much faster.
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:
320 $s = "a" x 1000 . "wxyz";
321 $s =~ /wxyz/ for 1..30000
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.
330 Faster addition, subtraction and multiplication.
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.
340 Preincrement, predecrement, postincrement, and postdecrement have been
341 made faster by internally splitting the functions which handled multiple
342 cases into different functions.
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.
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.
361 Single arguments in list assign are now slightly faster:
368 Less peak memory is now used when compiling regular expression patterns.
372 =head1 Modules and Pragmata
374 =head2 Updated Modules and Pragmata
380 =head2 Changes to Existing Documentation
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
401 A number of cleanups have been made to perlcall, including:
407 use EXTEND(SP, n) and PUSHs() instead of XPUSHs() where applicable
408 and update prose to match
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
418 add API documentation for POPu and POPul
422 use ERRSV more efficiently
426 approaches to thread-safety storage of SVs.
438 The documentation of C<hex> has been revised to clarify valid inputs.
442 Better explain meaning of negative PIDs in C<waitpid>.
443 L<[perl #127080]|https://rt.perl.org/Ticket/Display.html?id=127080>
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.
459 A new section has been added, L<perlguts/"Dynamic Scope and the Context
460 Stack">, which explains how the perl context stack works.
470 We now recommend contacting the module-authors list or PAUSE in seeking
471 guidance on the naming of modules.
481 The documentation of C<qx//> now describes how C<$?> is affected.
491 This note has been added to perlpolicy:
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?"
505 Fix some examples to be L<strict> clean.
509 =head3 L<perlrebackslash>
515 Clarify that in languages like Japanese and Thai, dictionary lookup
516 is required to determine word boundaries.
526 Updated to note that anonymous subroutines can have signatures.
536 Fixed a broken example where C<=> was used instead of
537 C<==> in conditional in do/while example.
547 The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
551 =head3 L<perlunicode>
557 Discourage use of 'In' prefix for Unicode Block property.
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>
573 The specific true value of C<$!{E...}> is now documented, noting that it is
574 subject to change and not guaranteed.
578 Use of C<$OLD_PERL_VERSION> is now discouraged.
588 The documentation of C<PROTOTYPES> has been corrected; they are I<disabled>
589 by default, not I<enabled>.
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>.
599 =head2 New Diagnostics
607 L<%s must not be a named sequence in transliteration operator|perldiag/"%s must not be a named sequence in transliteration operator">
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
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/">
620 L<Can't redeclare "%s" in "%s"|perldiag/"Can't redeclare "%s" in "%s"">
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)>.
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/">
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>">
636 L<Illegal user-defined property name|perldiag/"Illegal user-defined property name">
640 L<Invalid number '%s' for -C option.|perldiag/"Invalid number '%s' for -C option.">
642 (F) You supplied a number to the -C option that either has extra leading
643 zeroes or overflows perl's unsigned integer representation.
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>" >>>
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>" >>>
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>">
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>>
672 L<%s() is deprecated on :utf8 handles|perldiag/"%s() is deprecated on :utf8 handles">
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.
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.
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
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.
695 =head2 Changes to Existing Diagnostics
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>
708 The diagnostic C<< Hexadecimal float: internal error >> has been changed to
709 C<< Hexadecimal float: internal error (%s) >> to include more information.
713 L<Can't modify non-lvalue subroutine call of &%s|perldiag/"Can't modify non-lvalue subroutine call of &%s">
715 This error now reports the name of the non-lvalue subroutine you attempted to
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" >>
728 =head1 Configuration and Compilation
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.
741 Bison 3.0 is now supported.
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>
752 Added F<Configure> probes for C<newlocale>, C<freelocale>, and C<uselocale>.
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.
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 >>.
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.
772 F<Configure> should handle spaces in paths a little better.
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.
782 The GNU Make makefile for Win32 now supports parallel builds. [perl #126632]
786 You can now build perl with MSVC++ on Win32 using GNU Make. [perl #126632]
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.
801 A new test (F<t/op/aassign.t>) has been added to test the list assignment operator
806 Parallel building has been added to the dmake C<makefile.mk> makefile. All
807 Win32 compilers are supported.
811 =head1 Platform Support
813 =head2 Platform-Specific Notes
819 The AmigaOS port has been reintegrated into the main tree, based off of
824 Tests are more robust against unusual cygdrive prefixes.
825 L<[perl #126834]|https://rt.perl.org/Ticket/Display.html?id=126834>
831 =item UTF-EBCDIC extended
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.
845 =item EBCDIC C<cmp()> and C<sort()> fixed for UTF-EBCDIC strings
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.
851 =item EBCDIC C<tr///> and C<y///> fixed for C<\N{}>, and C<S<use utf8>> ranges
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>>.
859 There were also some problems with these operations under S<C<use
860 utf8>>, which are now fixed
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>
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>
888 Problems when multiplying long doubles by infinity have been fixed.
889 L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
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
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.
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>
927 All Solaris now builds shared libperl.
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.
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 >>.
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.
951 VMS has had C<setenv/unsetenv> since v7.0 (released in 1996), C<Perl_vmssetenv>
952 now always uses C<setenv/unsetenv>.
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:
964 to signal all processes in the same group as C<$pid>.
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.
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>.
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.
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>.
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.
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.
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.
1030 Builds using Microsoft Visual C++ 2003 and earlier no longer produce
1031 an "INTERNAL COMPILER ERROR" message. [perl #126045]
1035 Visual C++ 2013 builds will now execute on XP and higher. Previously they would
1036 only execute on Vista and higher.
1040 You can now build perl with GNU Make and GCC. [perl #123440]
1044 C<truncate($filename, $size)> now works for files over 4GB in size.
1049 Parallel building has been added to the dmake C<makefile.mk> makefile. All
1050 Win32 compilers are supported.
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.
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.
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.
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.
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.
1082 =item ppc64el floating point
1084 The floating point format of ppc64el (Debian naming for little-endian
1085 PowerPC) is now detected correctly.
1089 =head1 Internal Changes
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:
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.
1116 Various macros, which now consistently have a CX_ prefix, have been added:
1118 CX_CUR(), CX_LEAVE_SCOPE(), CX_POP()
1122 CX_POP_SAVEARRAY(), CX_DEBUG(), CX_PUSHSUBST(), CX_POPSUBST()
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
1129 ENTER; SAVETMPS; ....; LEAVE
1133 C<cx_popblock()> now also restores C<PL_curpm>.
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.
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).
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
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
1165 Various context struct fields have been added, removed or modified.
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()>.
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.
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>.
1189 Some variables formerly declared by C<dMULTICALL> (but not documented) have
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
1200 L<[perl #121351]|https://rt.perl.org/Ticket/Display.html?id=121351>
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>
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
1220 Deprecate the C<to_utf8_case()> function, see
1221 L<http://nntp.perl.org/group/perl.perl5.porters/233287>.
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
1233 The C<signbit()> emulation has been enhanced. This will help older
1234 and/or more exotic platforms or configurations.
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>.
1243 EBCDIC code paths have largely been unified to avoid repetition.
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.
1252 C<< sv_ref() >> is now part of the API.
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)>.
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).
1274 C<PL_sawalias> and C<GPf_ALIASED_SV> have been removed.
1278 C<GvASSIGN_GENERATION> and C<GvASSIGN_GENERATION_set> have been removed.
1282 =head1 Selected Bug Fixes
1288 It now works properly to specify a user-defined property, such as
1290 qr/\p{mypkg1::IsMyProperty}/i
1292 with C</i> caseless matching, an explicit package name, and
1293 I<IsMyProperty> not defined at the time of the pattern compilation.
1297 Perl's memcpy(), memmove(), memset() and memcmp() fallbacks are now
1298 more compatible with the originals. [perl #127619]
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]
1307 Fixed a spurious warning about posix character classes. [perl #127581]
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.
1317 Fixed over eager warnings for C<< /[.foo.]/ >>.
1319 This prevents Perl from warning about constructs like C<< /[.].*[.]/ >>.
1320 [perl #127582, #127604]
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.
1332 Turn an assertion into a more user friendly failure when parsing
1333 regexes. [perl #127599]
1337 Correctly raise an error when trying to compile patterns with
1338 unterminated character classes while there are trailing backslashes.
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]
1348 C<< unless ( I<assignment> ) >> now properly warns when syntax
1349 warnings are enabled. [perl #127122]
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]
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]
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
1375 Fixed an operator precedence problem when C< castflags & 2> is true.
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]
1387 The AUTOLOAD method is now called when searching for a DESTROY method,
1388 and correctly sets C<$AUTOLOAD> too. [perl #124387] [perl #127494]
1392 Avoid parsing beyond the end of the buffer when processing a C<#line>
1393 directive with no filename. [perl #127334]
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>.)
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.
1420 Perl 5.22 added support to the C99 hexadecimal floating point notation,
1421 but sometimes misparses hex floats. This has been fixed.
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>
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>
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>
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>
1450 Retain binary compatibility across plain and DEBUGGING perl builds.
1451 L<[perl #127212]|https://rt.perl.org/Ticket/Display.html?id=127212>
1455 Avoid leaking memory when setting C<$ENV{foo}> on darwin.
1456 L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
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.
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>
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>
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>
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>
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>
1502 Calling mg_set() in leave_scope() no longer leaks.
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.)
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.
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
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]
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
1542 Improved parsing of hex float constants.
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.
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].
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>
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
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>
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>
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
1584 @a = (1) x $big_number
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>
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>
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>
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>
1613 Duplicating a closed file handle for write no longer creates a
1614 filename of the form F<GLOB(0xXXXXXXXX)>. [perl #125115]
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]
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]
1630 The PadlistNAMES macro is an lvalue again.
1634 Zero -DPERL_TRACE_OPS memory for sub-threads.
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.
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]
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.
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.
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>
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
1673 L<[perl #125781]|https://rt.perl.org/Ticket/Display.html?id=125781>
1677 A crash with C<< %::=(); J->${\"::"} >> has been fixed.
1678 L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541>
1682 C<qr/(?[ () ])/> no longer segfaults, giving a syntax error message instead.
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]
1694 C<< BEGIN <> >> no longer segfaults and properly produces an error
1695 message. [perl #125341]
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.
1704 =head1 Acknowledgements
1706 [ XXX: generate this just in time, Ricardo! ]
1708 =head1 Reporting Bugs
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.
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.
1720 If the bug you are reporting has security implications which make it
1721 inappropriate to send to a publicly archived mailing list, then see
1722 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
1723 for details of how to report the issue.
1727 The F<Changes> file for an explanation of how to view exhaustive details on
1730 The F<INSTALL> file for how to build Perl.
1732 The F<README> file for general stuff.
1734 The F<Artistic> and F<Copying> files for copyright information.