perldelta: merge in changes from perl5236delta
[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 Unicode 8.0 is now supported
15
16 For details on what is in this release, see
17 L<http://www.unicode.org/versions/Unicode8.0.0/>.
18
19 =head2 C<qr/(?[ ])/> now works in UTF-8 locales
20
21 L<Extended Bracketed Character Classes|perlrecharclass/Extended Bracketed Character Classes>
22 now will successfully compile when S<C<use locale>> is in effect.  The compiled
23 pattern will use standard Unicode rules.  If the runtime locale is not a
24 UTF-8 one, a warning is raised and standard Unicode rules are used
25 anyway.  No tainting is done since the outcome does not actually depend
26 on the locale.
27
28 =head2 Integer shift (C<< << >> and C<< >> >>) now more explicitly defined
29
30 Negative shifts are reverse shifts: left shift becomes right shift,
31 and right shift becomes left shift.
32
33 Shifting by the number of bits in a native integer (or more) is zero,
34 except when the "overshift" is right shifting a negative value under
35 C<use integer>, in which case the result is -1 (arithmetic shift).
36
37 Until now negative shifting and overshifting have been undefined
38 because they have relied on whatever the C implementation happens
39 to do.  For example, for the overshift a common C behavior is
40 "modulo shift":
41
42   1 >> 64 == 1 >> (64 % 64) == 1 >> 0 == 1  # Common C behavior.
43
44   # And the same for <<, while Perl now produces 0 for both.
45
46 Now these behaviors are well-defined under Perl, regardless of what
47 the underlying C implementation does.  Note, however, that you cannot
48 escape the native integer width, you need to know how far left you
49 can go.  You can use for example:
50
51   use Config;
52   my $wordbits = $Config{uvsize} * 8;  # Or $Config{uvsize} << 3.
53
54 If you need a more bits on the left shift, you can use for example
55 the C<bigint> pragma, or the C<Bit::Vector> module from CPAN.
56
57 =head2 Postfix dereferencing is no longer experimental
58
59 Using the C<postderef> and C<postderef_qq> features no longer emits a
60 warning. Existing code that disables the C<experimental::postderef> warning
61 category that they previously used will continue to work. The C<postderef>
62 feature has no effect; all Perl code can use postfix dereferencing,
63 regardless of what feature declarations are in scope. The C<5.24> feature
64 bundle now includes the C<postderef_qq> feature.
65
66 =head2 printf and sprintf now allow reordered precision arguments
67
68 That is, C<< sprintf '|%.*2$|', 2, 3 >> now returns C<|002|>. This extends
69 the existing reordering mechanism (which allows reordering for arguments
70 that are used as format fields, widths, and vector separators).
71
72 =head1 Incompatible Changes
73
74 =head2 Regular expression compilation errors
75
76 Some regular expression patterns that had runtime errors now
77 don't compile at all.
78
79 This should have been in the perldelta for 5.23.4, but was omitted.
80
81 Almost all Unicode properties using the C<\p{}> and C<\P{}> regular
82 expression pattern constructs are now checked for validity at pattern
83 compilation time, and invalid ones will cause the program to not
84 compile.  In earlier releases, this check was often deferred until run
85 time.  Whenever an error check is moved from run- to compile time,
86 erroneous code is caught 100% of the time, whereas before it would only
87 get caught if and when the offending portion actually gets executed,
88 which for unreachable code might be never.
89
90 =head2 Nested declarations are now disallowed
91
92 A C<my>, C<our>, or C<state> declaration is no longer allowed inside
93 of another C<my>, C<our>, or C<state> declaration.
94
95 For example, these are now fatal:
96
97    my ($x, my($y));
98    our (my $x);
99
100 L<[perl #125587]|https://rt.perl.org/Ticket/Display.html?id=125587>
101
102 L<[perl #121058]|https://rt.perl.org/Ticket/Display.html?id=121058>
103
104 =head2 The C</\C/> character class has been removed.
105
106 This regular expression character class was deprecated in v5.20.0 and has
107 produced a deprecation warning since v5.22.0. It is now a compile-time
108 error. If you need to examine the individual bytes that make up a
109 UTF8-encoded character, then use C<utf8::encode()> on the string (or a
110 copy) first.
111
112 =head2 C<chdir('')> no longer chdirs home
113
114 Using C<chdir('')> or C<chdir(undef)> to chdir home has been deprecated since
115 perl v5.8, and will now fail.  Use C<chdir()> instead.
116
117 =head2 ASCII characters in variable names must now be all visible
118
119 It was legal until now on ASCII platforms for variable names to contain
120 non-graphical ASCII control characters (ordinals 0 through 31, and 127,
121 which are the C0 controls and C<DELETE>).  This usage has been
122 deprecated since v5.20, and as of now causes a syntax error.  The
123 variables these names referred to are special, reserved by Perl for
124 whatever use it may choose, now, or in the future.  Each such variable
125 has an alternative way of spelling it.  Instead of the single
126 non-graphic control character, a two character sequence beginning with a
127 caret is used, like C<$^]> and C<${^GLOBAL_PHASE}>.  Details are at
128 L<perlvar>.   It remains legal, though unwise and deprecated (raising a
129 deprecation warning), to use certain non-graphic non-ASCII characters in
130 variables names when not under S<C<use utf8>>.  No code should do this,
131 as all such variables are reserved by Perl, and Perl doesn't currently
132 define any of them (but could at any time, without notice).
133
134 =head2 The C<autoderef> feature has been removed
135
136 The experimental C<autoderef> feature (which allowed calling C<push>,
137 C<pop>, C<shift>, C<unshift>, C<splice>, C<keys>, C<values>, and C<each> on
138 a scalar argument) has been deemed unsuccessful. It has now been removed;
139 trying to use the feature (or to disable the C<experimental::autoderef>
140 warning it previously triggered) now yields an exception.
141
142 =head2 An off by one issue in C<$Carp::MaxArgNums> has been fixed
143
144 C<$Carp::MaxArgNums> is supposed to be the number of arguments to display.
145 Prior to this version, it was instead showing C<$Carp::MaxArgNums> + 1 arguments,
146 contrary to the documentation.
147
148 =head2 Lexical $_ has been removed
149
150 C<my $_> was introduced in Perl 5.10, and subsequently caused much confusion
151 with no obvious solution.  In Perl 5.18.0, it was made experimental on the
152 theory that it would either be removed or redesigned in a less confusing (but
153 backward-incompatible) way.  Over the following years, no alternatives were
154 proposed.  The feature has now been removed and will fail to compile.
155
156 =head2 Only blanks and tabs are now allowed within C<[...]> within C<(?[...])>.
157
158 The experimental Extended Bracketed Character Classes can contain regular
159 bracketed character classes within them.  These differ from regular ones in
160 that white space is generally ignored, unless escaped by preceding it with a
161 backslash.  The white space that is ignored is now limited to just tab C<\t>
162 and SPACE characters.  Previously, it was any white space.  See
163 L<perlrecharclass/Extended Bracketed Character Classes>.
164
165 =head1 Deprecations
166
167 =head2 Using code points above the platform's C<IV_MAX> is now
168 deprecated
169
170 Unicode defines code points in the range C<0..0x10FFFF>.  Some standards
171 at one time defined them up to 2**31 - 1, but Perl has allowed them to
172 be as high as anything that will fit in a word on the platform being
173 used.  However, use of those above the platform's C<IV_MAX> is broken in
174 some constructs, notably C<tr///>, regular expression patterns involving
175 quantifiers, and in some arithmetic and comparison operations, such as
176 being the upper limit of a loop.  Now the use of such code points raises
177 a deprecation warning, unless that warning category is turned off.
178 C<IV_MAX> is typically 2**31 -1 on 32-bit platforms, and 2**63-1 on
179 64-bit ones.
180
181 =head2 Doing bitwise operations on strings containing code points above
182 0xFF is deprecated
183
184 The string bitwise operators treat their operands as strings of bytes,
185 and values beyond 0xFF are nonsensical in this context.  To operate on
186 encoded bytes, first encode the strings.  To operate on code points'
187 numeric values, use C<split> and C<map ord>.  In the future, this
188 warning will be replaced by an exception.
189
190 =head2 sysread(), syswrite(), recv() and send() are deprecated on
191 :utf8 handles
192
193 The sysread(), recv(), syswrite() and send() operators
194 are deprecated on handles that have the C<:utf8> layer, either
195 explicitly, or implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
196
197 Both sysread() and recv() currently use only the C<:utf8> flag for the
198 stream, ignoring the actual layers.  Since sysread() and recv() do no
199 UTF-8 validation they can end up creating invalidly encoded scalars.
200
201 Similarly, syswrite() and send() use only the C<:utf8> flag, otherwise
202 ignoring any layers.  If the flag is set, both write the value UTF-8
203 encoded, even if the layer is some different encoding, such as the
204 example above.
205
206 Ideally, all of these operators would completely ignore the C<:utf8>
207 state, working only with bytes, but this would result in silently
208 breaking existing code.  To avoid this a future version of perl will
209 throw an exception when any of sysread(), recv(), syswrite() or send()
210 are called on handle with the C<:utf8> layer.
211
212 =head1 Performance Enhancements
213
214 =over 4
215
216 =item *
217
218 Many languages, such as Chinese, are caseless.  Perl now knows about
219 most modern commercially important ones, and skips much of the work when
220 a program tries to change case in them (like C<ucfirst()>) or match
221 caselessly (C<qr//i>).  This will speed up a program, such as a web
222 server, that can operate on multiple languages, while operating on a
223 caseless one.
224
225 =item *
226
227 Creating Perl debugger data structures (see L<perldebguts/"Debugger Internals">)
228 for XSUBs and const subs has been removed.  This removed one glob/scalar combo
229 for each unique C<.c> file that XSUBs and const subs came from.  On startup
230 (C<perl -e"0">) about half a dozen glob/scalar debugger combos were created.
231 Loading XS modules created more glob/scalar combos.  These things were created
232 regardless if the perl debugger was being used or not, unlike for pure perl
233 subs, and ignores that the perl debugger can not debug C code.
234
235 =item *
236
237 Single arguments in list assign are now slightly faster:
238
239   ($x) = (...);
240   (...) = ($x);
241
242 =item *
243
244 C</fixed-substr/> has been made much faster.
245
246 On platforms with a libc memchr() implementation which makes good use of
247 underlying hardware support, patterns which include fixed substrings will now
248 often be much faster; for example with glibc on a recent x86_64 CPU, this:
249
250     $s = "a" x 1000 . "wxyz";
251     $s =~ /wxyz/ for 1..30000
252
253 is now about 7 times faster.  On systems with slow memchr(), e.g. 32-bit ARM
254 Raspberry Pi, there will be a small or little speedup.  Conversely, some
255 pathological cases, such as C<"ab" x 1000 =~ /aa/> will be slower now; up to 3
256 times slower on the rPi, 1.5x slower on x86_64.
257
258 =item *
259
260 Faster addition, subtraction and multiplication.
261
262 Since 5.8.0, arithmetic became slower due to the need to support
263 64-bit integers. To deal with 64-bit integers, a lot more corner
264 cases need to be checked, which adds time. We now detect common
265 cases where there is no need to check for those corner cases,
266 and special-case them.
267
268 =item *
269
270 Faster preincrement, predecrement, postincrement, postdecrement.
271
272 By internally splitting the functions which handled multiple
273 cases into different functions.
274
275 =back
276
277 =head1 Modules and Pragmata
278
279 =head2 Updated Modules and Pragmata
280
281 =over 4
282
283 =item *
284
285 The libnet distribution has been upgraded from version 3.05 to 3.06.
286
287 =item *
288
289 The Scalar-List-Utils distribution has been upgraded from version 1.41 to 1.42.
290
291 =item *
292
293 L<autodie> has been upgraded from version 2.26 to 2.27.
294
295 =item *
296
297 L<CPAN::Meta> has been upgraded from version 2.150001 to 2.150005.
298
299 =item *
300
301 L<CPAN::Meta::Requirements> has been upgraded from version 2.132 to 2.133.
302
303 =item *
304
305 L<CPAN::Meta::YAML> has been upgraded from version 0.012 to 0.016.
306
307 =item *
308
309 L<Encode> has been upgraded from version 2.72 to 2.73.
310
311 =item *
312
313 L<encoding> has been upgraded from version 2.14 to 2.15.
314
315 =item *
316
317 L<ExtUtils::CBuilder> has been upgraded from version 0.280221 to 0.280223.
318
319 =item *
320
321 L<feature> has been upgraded from version 1.40 to 1.41.
322
323 =item *
324
325 L<Getopt::Long> has been upgraded from version 2.45 to 2.46.
326
327 =item *
328
329 L<HTTP::Tiny> has been upgraded from version 0.054 to 0.056.
330
331 =item *
332
333 L<List::Util> has been upgraded from version 1.41 to 1.42_01.
334
335 =item *
336
337 L<Locale::Codes> has been upgraded from version 3.34 to 3.35.
338
339 =item *
340
341 L<Math::BigInt> has been upgraded from version 1.9997 to 1.999701.
342
343 Correct the behaviour of bdiv() and bmod() in list context. [perl #124300]
344
345 Correct C<< Math::BigInt->new() >> for non-integer input.  [perl #124325]
346
347 Speed up Math::BigFloat -> blog(). [perl #124382]
348
349 Fix bug in Math::BigFloat's bceil() and bint() methods. [perl #124412]
350
351 =item *
352
353 L<Math::BigRat> has been upgraded from version 0.2608 to 0.260801.
354
355 Correct the behaviour of bdiv() and bmod() in list context. [perl #124303]
356
357 =item *
358
359 L<Module::CoreList> has been upgraded from version 5.20150520 to 5.20150620.
360
361 =item *
362
363 L<Module::Metadata> has been upgraded from version 1.000026 to 1.000027.
364
365 =item *
366
367 L<parent> has been upgraded from version 0.232 to 0.234.
368
369 =item *
370
371 L<Parse::CPAN::Meta> has been upgraded from version 1.4414 to 1.4417.
372
373 =item *
374
375 L<perl5db.pl> has been upgraded from version 1.49 to 1.49_01.
376
377 User actions are no longer evaluated after the script under the
378 debugger finishes.  [perl #71678]
379
380 =item *
381
382 L<Pod::Simple> has been upgraded from version 3.29 to 3.30.
383
384 =item *
385
386 L<Pod::Usage> has been upgraded from version 1.64 to 1.67.
387
388 =item *
389
390 L<POSIX> has been upgraded from version 1.53 to 1.54.
391
392 The NaN payload API has been implemented (getpayload, setpayload,
393 setpayloadsig, issignaling).
394
395 =item *
396
397 L<Scalar::Util> has been upgraded from version 1.41 to 1.42_01.
398
399 =item *
400
401 L<Socket> has been upgraded from version 2.018 to 2.019.
402
403 =item *
404
405 L<threads> has been upgraded from version 2.01 to 2.02.
406
407 =item *
408
409 L<Time::Piece> has been upgraded from version 1.29 to 1.30.
410
411 =item *
412
413 L<UNIVERSAL> has been upgraded from version 1.12 to 1.13.
414
415 Don't import from L<UNIVERSAL> in its documentation, it no longer
416 exports anything.  [perl #125410]
417
418 =back
419
420 =head1 Documentation
421
422 =head2 Changes to Existing Documentation
423
424 =head3 L<perlfunc>
425
426 =over 4
427
428 =item *
429
430 The documentation of C<hex> has been revised to clarify valid inputs.
431
432 =back
433
434 =head3 L<perlop>
435
436 =over 4
437
438 =item *
439
440 The documentation of C<qx//> now describes how C<$?> is affected.
441
442 =back
443
444 =head3 L<perlvar>
445
446 =over 4
447
448 =item *
449
450 The documentation of C<$@> was reworded to clarify that it is not just for
451 syntax errors in C<eval>.
452 L<[perl #124034]|https://rt.perl.org/Ticket/Display.html?id=124034>
453
454 =back
455
456 =head3 L<perlxs>
457
458 =over 4
459
460 =item *
461
462 The documentation of C<PROTOTYPES> has been clarified; they are I<disabled>
463 by default, not I<enabled>.
464
465 =back
466
467 =head3 L<perlapi>
468
469 =over 4
470
471 =item *
472
473 The process of using undocumented globals has been documented, namely, that one
474 should send email to L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>
475 first to get the go-ahead for documenting and using an undocumented function or
476 global variable.
477
478 =back
479
480 =head3 L<perlsub>
481
482 =over 4
483
484 =item *
485
486 Updated to note that anonymous subroutines can have signatures.
487
488 =back
489
490 =head3 L<perltie>
491
492 =over 4
493
494 =item *
495
496 The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified.
497
498 =back
499
500 =head3 L<perlvar>
501
502 =over 4
503
504 =item *
505
506 The specific true value of C<$!{E...}> is now documented, noting that it is
507 subject to change and not guaranteed.
508
509 =back
510
511 =head3 L<perlcall>
512
513 =over 4
514
515 =item *
516
517 A number of cleanups have been made to perlcall, including:
518
519 =over 4
520
521 =item *
522
523 use EXTEND(SP, n) and PUSHs() instead of XPUSHs() where applicable
524 and update prose to match
525
526 =item *
527
528 add POPu, POPul and POPpbytex to the "complete list of POP macros"
529 and clarify the documentation for some of the existing entries, and
530 a note about side-effects
531
532 =item *
533
534 add API documentation for POPu and POPul
535
536 =item *
537
538 use ERRSV more efficiently
539
540 =item *
541
542 approaches to thread-safety storage of SVs.
543
544 =back
545
546 =back
547
548 =head3 L<perlunicode>
549
550 =over 4
551
552 =item *
553
554 Discourage use of 'In' prefix for Unicode Block property.
555
556 =back
557
558 =head3 L<perlpolicy>
559
560 =over 4
561
562 =item *
563
564 This note has been added to perlpolicy:
565
566   While civility is required, kindness is encouraged; if you have any doubt
567   about whether you are being civil, simply ask yourself, "Am I being kind?"
568   and aspire to that.
569
570 =back
571
572 =head3 L<perlvar>
573
574 =over 4
575
576 =item *
577
578 Use of C<$OLD_PERL_VERSION> is now discouraged.
579
580 =back
581
582 =head1 Diagnostics
583
584 The following additions or changes have been made to diagnostic output,
585 including warnings and fatal error messages.  For the complete list of
586 diagnostic messages, see L<perldiag>.
587
588 =head2 New Diagnostics
589
590 =head3 New Errors
591
592 =over 4
593
594 =item *
595
596 L<%s must not be a named sequence in transliteration operator|perldiag/"%s must not be a named sequence in transliteration operator">
597
598 (F) Transliteration (C<tr///> and C<y///>) transliterates individual
599 characters.  But a named sequence by definition is more than an
600 individual charater, and hence doing this operation on it doesn't make
601 sense.
602
603 =item *
604
605 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/">
606
607 =item *
608
609 L<Can't redeclare "%s" in "%s"|perldiag/"Can't redeclare "%s" in "%s"">
610
611 (F) A "my", "our" or "state" declaration was found within another declaration,
612 such as C<my ($x, my($y), $z)> or C<our (my $x)>.
613
614 =item *
615
616 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/">
617
618 =item *
619
620 L<Illegal user-defined property name|perldiag/"Illegal user-defined property name">
621
622 =item *
623
624 L<Invalid number '%s' for -C option.|perldiag/"Invalid number '%s' for -C option.">
625
626 (F) You supplied a number to the -C option that either has extra leading
627 zeroes or overflows perl's unsigned integer representation.
628
629 =item *
630
631 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>" >>>
632
633 =back
634
635 =head3 New Warnings
636
637 =over 4
638
639 =item *
640
641 L<%s() is deprecated on :utf8 handles|perldiag/"%s() is deprecated on :utf8 handles">
642
643 (W deprecated) The sysread(), recv(), syswrite() and send() operators
644 are deprecated on handles that have the C<:utf8> layer, either
645 explicitly, or implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
646
647 Both sysread() and recv() currently use only the C<:utf8> flag for the
648 stream, ignoring the actual layers.  Since sysread() and recv() do no
649 UTF-8 validation they can end up creating invalidly encoded scalars.
650
651 Similarly, syswrite() and send() use only the C<:utf8> flag, otherwise
652 ignoring any layers.  If the flag is set, both write the value UTF-8
653 encoded, even if the layer is some different encoding, such as the
654 example above.
655
656 Ideally, all of these operators would completely ignore the C<:utf8>
657 state, working only with bytes, but this would result in silently
658 breaking existing code.  To avoid this a future version of perl will
659 throw an exception when any of sysread(), recv(), syswrite() or send()
660 are called on handle with the C<:utf8> layer.
661
662 =back
663
664 =head2 Changes to Existing Diagnostics
665
666 =over 4
667
668 =item *
669
670 The diagnostic C<< Hexadecimal float: internal error >> has been changed to
671 C<< Hexadecimal float: internal error (%s) >> to include more information.
672
673 =item *
674
675 L<Can't modify non-lvalue subroutine call of &%s|perldiag/"Can't modify non-lvalue subroutine call of &%s">
676
677 This error now reports the name of the non-lvalue subroutine you attempted to
678 use as an lvalue.
679
680 =item *
681
682 When running out of memory during an attempt the increase the stack
683 size, previously, perl would die using the cryptic message
684 C<< panic: av_extend_guts() negative count (-9223372036854775681) >>.
685 This has been fixed to show the prettier message:
686 L<< Out of memory during stack extend|perldiag/"Out of memory during %s extend" >>
687
688 =back
689
690 =head1 Configuration and Compilation
691
692 =over 4
693
694 =item *
695
696 C<Configure> now acts as if the C<-O> option is always passed, allowing command
697 line options to override saved configuration.  This should eliminate confusion
698 when command line options are ignored for no obvious reason.  C<-O> is now
699 permitted, but ignored.
700
701 =item *
702
703 Some filesystem stat symbols which were not used by the Perl core
704 were removed in an earlier commit. However, since these symbols
705 turned out to be used by at least one CPAN module, these symbols
706 have been restored.
707
708 =item *
709
710 C<< PPPort.so/PPPort.dll >> no longer get installed, as they are
711 not used by C<< PPPort.pm >>, only by its test files.
712
713 =item *
714
715 It is now possible to specify which compilation date to show on
716 C<< perl -V >> output, by setting the macro C<< PERL_BUILD_DATE >>.
717
718 =item *
719
720 Using the C<NO_HASH_SEED> define in combination with the default hash algorithm
721 C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling
722 the interpreter, since Perl 5.17.10.  This has been fixed.
723
724 =item *
725
726 If you had F<Configure> hints for C<d_procselfexe> or C<procselfexe>, they were
727 probably broken by the AmigaOS changes in Perl 5.23.3.  This has been now
728 fixed.
729 L<[perl #126152]|https://rt.perl.org/Ticket/Display.html?id=126152>
730
731 =item *
732
733 F<Configure> should handle spaces in paths a little better.
734
735 =back
736
737 =head1 Testing
738
739 =over 4
740
741 =item *
742
743 A new test (F<t/op/aassign.t>) has been added to test the list assignment operator
744 C<OP_AASSIGN>.
745
746 =item *
747
748 Parallel building has been added to the dmake C<makefile.mk> makefile. All
749 Win32 compilers are supported.
750
751 =back
752
753 =head1 Platform Support
754
755 =head2 Platform-Specific Notes
756
757 =over 4
758
759 =item IRIX
760
761 =over
762
763 =item *
764
765 Under some circumstances IRIX stdio fgetc() and fread() set the errno to
766 C<ENOENT>, which made no sense according to either IRIX or POSIX docs.  Errno
767 is now cleared in such cases.
768 L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977>
769
770 =item *
771
772 Problems when multiplying long doubles by infinity have been fixed.
773 L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396>
774
775 =back
776
777 =item MacOS X
778
779 =over
780
781 =item *
782
783 Until now OS X builds of perl have specified a link target of 10.3 (Panther,
784 2003) but have not specified a compiler target.  From now on, builds of perl on
785 OS X 10.6 or later (Snow Leopard, 2008) by default capture the current OS X
786 version and specify that as the explicit build target in both compiler and
787 linker flags, thus preserving binary compatibility for extensions built later
788 regardless of changes in OS X, SDK, or compiler and linker versions.  To
789 override the default value used in the build and preserved in the flags,
790 specify C<export MACOSX_DEPLOYMENT_TARGET=10.N> before configuring and building
791 perl, where 10.N is the version of OS X you wish to target.  In OS X 10.5 or
792 earlier there is no change to the behavior present when those systems were
793 current; the link target is still OS X 10.3 and there is no explicit compiler
794 target.
795
796 =back
797
798 =item Tru64
799
800 Workaround where Tru64 balks when prototypes are listed as
801 C<< PERL_STATIC_INLINE >>, but where the test is build with
802 C<< -DPERL_NO_INLINE_FUNCTIONS >>.
803
804 =item VMS
805
806 =over
807
808 =item *
809
810 Perl now implements its own C<killpg> by scanning for processes in the
811 specified process group, which may not mean exactly the same thing as a Unix
812 process group, but allows us to send a signal to a parent (or master) process
813 and all of its sub-processes.  At the perl level, this means we can now send a
814 negative pid like so:
815
816     kill SIGKILL, -$pid;
817
818 to signal all processes in the same group as C<$pid>.
819
820 =back
821
822 =item Win32
823
824 =over
825
826 =item *
827
828 A new build option C<USE_NO_REGISTRY> has been added to the makefiles.  This
829 option is off by default, meaning the default is to do Windows registry
830 lookups.  This option stops Perl from looking inside the registry for anything.
831 For what values are looked up in the registry see L<perlwin32>.  Internally, in
832 C, the name of this option is C<WIN32_NO_REGISTRY>.
833
834 =item *
835
836 The behavior of Perl using C<HKEY_CURRENT_USER\Software\Perl> and
837 C<HKEY_LOCAL_MACHINE\Software\Perl> to lookup certain values, including C<%ENV>
838 vars starting with C<PERL> has changed.  Previously, the 2 keys were checked
839 for entries at all times through Perl processes life time even if they did not
840 exist.  For performance reasons, now, if the root key (i.e.
841 C<HKEY_CURRENT_USER\Software\Perl> or C<HKEY_LOCAL_MACHINE\Software\Perl>) does
842 not exist at process start time, it will not be checked again for C<%ENV>
843 override entries for the remainder of the Perl processes life.  This more
844 closely matches Unix behaviour in that the environment is copied or inherited
845 on startup and changing the variable in the parent process or another process
846 or editing F<.bashrc> will not change the environmental variable in other
847 existing, running, processes.
848
849 =item *
850
851 One glob fetch was removed for each C<-X> or C<stat> call whether done from
852 Perl code or internally from Perl's C code.  The glob being looked up was
853 C<${^WIN32_SLOPPY_STAT}> which is a special variable.  This makes C<-X> and
854 C<stat> slightly faster.
855
856 =item *
857
858 During miniperl's process startup, during the build process, 4 to 8 IO calls
859 related to the process starting F<.pl> and the F<buildcustomize.pl> file were
860 removed from the code opening and executing the first 1 or 2 F<.pl> files.
861
862 =back
863
864 =item EBCDIC
865
866 =over 4
867
868 =item UTF-EBCDIC extended
869
870 UTF-EBCDIC is like UTF-8, but for EBCDIC platforms.  It now has been
871 extended so that it can represent code points up to 2 ** 64 - 1 on
872 platforms with 64-bit words.  This brings it into parity with UTF-8.
873 This enhancement requires an incompatible change to the representation
874 of code points in the range 2 ** 30 to 2 ** 31 -1 (the latter was the
875 previous maximum representable code point).  This means that a file that
876 contains one of these code points, written out with previous versions of
877 perl cannot be read in, without conversion, by a perl containing this
878 change.  We do not believe any such files are in existence, but if you
879 do have one, submit a ticket at L<perlbug@perl.org|mailto:perlbug@perl.org>,
880 and we will write a conversion script for you.
881
882 =item EBCDIC C<cmp()> and C<sort()> fixed for UTF-EBCDIC strings
883
884 Comparing two strings that were both encoded in UTF-8 (or more
885 precisely, UTF-EBCDIC) did not work properly until now.  Since C<sort()>
886 uses C<cmp()>, this fixes that as well.
887
888 =item EBCDIC C<tr///> and C<y///> fixed for C<\N{}>, and C<S<use utf8>> ranges
889
890 Perl v5.22 introduced the concept of portable ranges to regular
891 expression patterns.  A portable range matches the same set of
892 characters no matter what platform is being run on.  This concept is now
893 extended to C<tr///>.  See
894 C<L<trE<sol>E<sol>E<sol>|perlop/trE<sol>SEARCHLISTE<sol>REPLACEMENTLISTE<sol>cdsr>>.
895
896 There were also some problems with these operations under S<C<use
897 utf8>>, which are now fixed
898
899 =back
900
901 =item VMS
902
903 =over
904
905 =item *
906
907 The minimum supported version of VMS is now v7.3-2, released in 2003.  As a
908 side effect of this change, VAX is no longer supported as the terminal
909 release of OpenVMS VAX was v7.3 in 2001.
910
911 =back
912
913 =item Win32
914
915 =over
916
917 =item *
918
919 Visual C++ 2013 builds will now execute on XP and higher. Previously they would
920 only execute on Vista and higher.
921
922 =item *
923
924 You can now build perl with GNU Make and GCC.  [perl #123440]
925
926 =item *
927
928 C<truncate($filename, $size)> now works for files over 4GB in size.
929 [perl #125347]
930
931 =item *
932
933 Parallel building has been added to the dmake C<makefile.mk> makefile. All
934 Win32 compilers are supported.
935
936 =back
937
938 =item Cygwin
939
940 Tests are more robust against unusual cygdrive prefixes.
941 L<[perl #126834]|https://rt.perl.org/Ticket/Display.html?id=126834>
942
943 =item OS X/Darwin
944
945 Builds with both -DDEBUGGING and threading enabled would fail with a
946 "panic: free from wrong pool" error when built or tested from Terminal
947 on OS X.  This was caused by perl's internal management of the
948 environment conflicting with an atfork handler using the libc
949 setenv() function to update the environment.
950
951 Perl now uses setenv()/unsetenv() to update the environment on OS X.
952 L<[perl #126240]|https://rt.perl.org/Ticket/Display.html?id=126240>
953
954 =item ppc64el floating point
955
956 The floating point format of ppc64el (Debian naming for little-endian
957 PowerPC) is now detected correctly.
958
959 =item Solaris
960
961 All Solaris now builds shared libperl.
962
963 Solaris and variants like OpenIndiana now always build with the shared
964 Perl library (Configure -Duseshrplib).  This was required for the
965 OpenIndiana builds, but this has also been the setting for Oracle/Sun
966 Perl builds for several years.
967
968 =item AmigaOS
969
970 The AmigaOS port has been reintegrated into the main tree, based off of
971 Perl 5.22.1.
972
973 =back
974
975 =head1 Internal Changes
976
977 =over 4
978
979 =item *
980
981 Perl core code and the threads extension have been annotated so that,
982 if Perl is configured to use threads, then during compile-time clang (3.6
983 or later) will warn about suspicious uses of mutexes.
984 See L<http://clang.llvm.org/docs/ThreadSafetyAnalysis.html> for more
985 information.
986
987 =item *
988
989 The C<signbit()> emulation has been enhanced.  This will help older
990 and/or more exotic platforms or configurations.
991
992 =item *
993
994 The C<to_utf8_case> function is discouraged in favor of C<toUPPER_utf8>,
995 C<toTITLE_utf8>, C<toLOWER_utf8>, and C<toFOLD_utf8>.
996
997 =item *
998
999 EBCDIC code paths have largely been unified to avoid repetition.
1000
1001 =item *
1002
1003 MSWin32 code for C<$^X> has been moved out of the F<win32> directory to
1004 F<caretx.c>, where other operating systems set that variable.
1005
1006 =item *
1007
1008 C<< sv_ref() >> is now part of the API.
1009
1010 =item *
1011
1012 L<perlapi/sv_backoff> had its return type changed from C<int> to C<void>.  It
1013 previously has always returned C<0> since Perl 5.000 stable but that was
1014 undocumented.  Although C<sv_backoff> is marked as public API, XS code is not
1015 expected to be impacted since the proper API call would be through public API
1016 C<sv_setsv(sv, &PL_sv_undef)>, or quasi-public C<SvOOK_off>, or non-public
1017 C<SvOK_off> calls, and the return value of C<sv_backoff> was previously a
1018 meaningless constant that can be rewritten as C<(sv_backoff(sv),0)>.
1019
1020 =item *
1021
1022 The C<EXTEND> and C<MEXTEND> macros have been improved to avoid various issues
1023 with integer truncation and wrapping.  In particular, some casts formerly used
1024 within the macros have been removed.  This means for example that passing an
1025 unsigned nitems argument is likely to raise a compiler warning now (it's always
1026 been documented to require a signed value; formerly int, lately SSize_t).
1027
1028 =item *
1029
1030 C<PL_sawalias> and C<GPf_ALIASED_SV> have been removed.
1031
1032 =item *
1033
1034 C<GvASSIGN_GENERATION> and C<GvASSIGN_GENERATION_set> have been removed.
1035
1036 =back
1037
1038 =head1 Selected Bug Fixes
1039
1040 =over 4
1041
1042 =item *
1043
1044 C</...\G/> no longer crashes on utf8 strings. When C<\G> is a fixed number
1045 of characters from the start of the regex, perl needs to count back that
1046 many characters from the current C<pos()> position and start matching from
1047 there. However, it was counting back bytes rather than characters, which
1048 could lead to panics on utf8 strings.
1049
1050 =item *
1051
1052 In some cases operators that return integers would return negative
1053 integers as large positive integers.
1054 L<[perl #126635]|https://rt.perl.org/Ticket/Display.html?id=126635>
1055
1056 =item *
1057
1058 The C<pipe()> operator would assert for DEBUGGING builds instead of
1059 producing the correct error message.  The condition asserted on is
1060 detected and reported on correctly without the assertions, so the
1061 assertions were removed.
1062 L<[perl #126480]|https://rt.perl.org/Ticket/Display.html?id=126480>
1063
1064 =item *
1065
1066 In some cases, failing to parse a here-doc would attempt to use freed
1067 memory.  This was caused by a pointer not being restored correctly.
1068 L<[perl #126443]|https://rt.perl.org/Ticket/Display.html?id=126443>
1069
1070 =item *
1071
1072 C<< @x = sort { *a = 0; $a <=> $b } 0 .. 1 >> no longer frees the GP
1073 for *a before restoring its SV slot.
1074 L<[perl #124097]|https://rt.perl.org/Ticket/Display.html?id=124097>
1075
1076 =item *
1077
1078 Multiple problems with the new hexadecimal floating point printf
1079 format C<%a> were fixed:
1080 L<[perl #126582]|https://rt.perl.org/Ticket/Display.html?id=126582>,
1081 L<[perl #126586]|https://rt.perl.org/Ticket/Display.html?id=126586>,
1082 L<[perl #126822]|https://rt.perl.org/Ticket/Display.html?id=126822>
1083
1084 =item *
1085
1086 Calling mg_set() in leave_scope() no longer leaks.
1087
1088 =item *
1089
1090 A regression from Perl v5.20 was fixed in which debugging output of regular
1091 expression compilation was wrong.  (The pattern was correctly compiled, but
1092 what got displayed for it was wrong.)
1093
1094 =item *
1095
1096 C<\b{sb}> works much better.  In Perl v5.22.0, this new construct didn't
1097 seem to give the expected results, yet passed all the tests in the
1098 extensive suite furnished by Unicode.  It turns out that it was because
1099 these were short input strings, and the failures had to do with longer
1100 inputs.  This was fixed in Perl 5.23.4, but the improvement was not
1101 noticed until after that was released, so is included here now.
1102
1103 =item *
1104
1105 Certain syntax errors in
1106 L<perlrecharclass/Extended Bracketed Character Classes> caused panics
1107 instead of the proper error message.  This has now been fixed. [perl
1108 #126481]
1109
1110 =item *
1111
1112 An earlier commit added a message when a quantifier in a regular
1113 expression was useless, but then caused the parser to skip it;
1114 this caused the surplus quantifier to be silently ignored, instead
1115 of throwing an error. This is now fixed. [perl #126253]
1116
1117 =item *
1118
1119 The switch to building non-XS modules last in win32/makefile.mk (introduced
1120 by design as part of the changes to enable parallel building) caused the
1121 build of POSIX to break due to problems with the version module. This
1122 is now fixed.
1123
1124 =item *
1125
1126 Improved parsing of hex float constants.
1127
1128 =item *
1129
1130 Fixed an issue with C<< pack >> where C<< pack "H" >> (and C<< pack "h" >>)
1131 could read past the source when given a non-utf8 source, and a utf8 target.
1132 [perl #126325]
1133
1134 =item *
1135
1136 Fixed several cases where perl would abort due to a segmentation fault,
1137 or a C-level assert. [perl #126615], [perl #126602], [perl #126193].
1138
1139 =item *
1140
1141 There were places in regular expression patterns where comments (C<(?#...)>)
1142 weren't allowed, but should have been.  This is now fixed.
1143 L<[perl #116639]|https://rt.perl.org/Ticket/Display.html?id=116639>
1144
1145 =item *
1146
1147 Some regressions from Perl 5.20 have been fixed, in which some syntax errors in
1148 L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs
1149 within regular expression patterns could cause a segfault instead of a proper
1150 error message.
1151 L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180>
1152 L<[perl #126404]|https://rt.perl.org/Ticket/Display.html?id=126404>
1153
1154 =item *
1155
1156 Another problem with
1157 L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes>
1158 constructs has been fixed wherein things like C<\c]> could cause panics.
1159 L<[perl #126181]|https://rt.perl.org/Ticket/Display.html?id=126181>
1160
1161 =item *
1162
1163 Some problems with attempting to extend the perl stack to around 2G or 4G
1164 entries have been fixed.  This was particularly an issue on 32-bit perls built
1165 to use 64-bit integers, and was easily noticeable with the list repetition
1166 operator, e.g.
1167
1168     @a = (1) x $big_number
1169
1170 Formerly perl may have crashed, depending on the exact value of C<$big_number>;
1171 now it will typically raise an exception.
1172 L<[perl #125937]|https://rt.perl.org/Ticket/Display.html?id=125937>
1173
1174 =item *
1175
1176 In a regex conditional expression C<(?(condition)yes-pattern|no-pattern)>, if
1177 the condition is C<(?!)> then perl failed the match outright instead of
1178 matching the no-pattern.  This has been fixed.
1179 L<[perl #126222]|https://rt.perl.org/Ticket/Display.html?id=126222>
1180
1181 =item *
1182
1183 The special backtracking control verbs C<(*VERB:ARG)> now all allow an optional
1184 argument and set C<REGERROR>/C<REGMARK> appropriately as well.
1185 L<[perl #126186]|https://rt.perl.org/Ticket/Display.html?id=126186>
1186
1187 =item *
1188
1189 Several bugs, including a segmentation fault, have been fixed with the bounds
1190 checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>,
1191 C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>.  All the C<\B{}> ones now match an empty
1192 string; none of the C<\b{}> ones do.
1193 L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319>
1194
1195 =item *
1196
1197 Duplicating a closed file handle for write no longer creates a
1198 filename of the form F<GLOB(0xXXXXXXXX)>.  [perl #125115]
1199
1200 =item *
1201
1202 Warning fatality is now ignored when rewinding the stack.  This
1203 prevents infinite recursion when the now fatal error also causes
1204 rewinding of the stack.  [perl #123398]
1205
1206 =item * 
1207
1208 In perl v5.22.0, the logic changed when parsing a numeric parameter to the -C
1209 option, such that the successfully parsed number was not saved as the option
1210 value if it parsed to the end of the argument.  [perl #125381]
1211
1212 =item *
1213
1214 The PadlistNAMES macro is an lvalue again.
1215
1216 =item *
1217
1218 Zero -DPERL_TRACE_OPS memory for sub-threads.
1219
1220 perl_clone_using() was missing Zero init of PL_op_exec_cnt[].  This
1221 caused sub-threads in threaded -DPERL_TRACE_OPS builds to spew exceedingly
1222 large op-counts at destruct.  These counts would print %x as "ABABABAB",
1223 clearly a mem-poison value.
1224
1225 =item *
1226
1227 A leak in the XS typemap caused one scalar to be leaked each time a C<FILE *>
1228 or a C<PerlIO *> was C<OUTPUT:>ed or imported to Perl, since perl 5.000. These
1229 particular typemap entries are thought to be extremely rarely used by XS
1230 modules. [perl #124181]
1231
1232 =item *
1233
1234 C<alarm()> and C<sleep()> will now warn if the argument is a negative number
1235 and return undef. Previously they would pass the negative value to the
1236 underlying C function which may have set up a timer with a surprising value.
1237
1238 =item *
1239
1240 Perl can again be compiled with any Unicode version.  This used to
1241 (mostly) work, but was lost in v5.18 through v5.20.  The property
1242 C<Name_Alias> did not exist prior to Unicode 5.0.  L<Unicode::UCD>
1243 incorrectly said it did.  This has been fixed.
1244
1245 =item *
1246
1247 Very large code-points (beyond Unicode) in regular expressions no
1248 longer cause a buffer overflow in some cases when converted to UTF-8.
1249 L<[perl #125826]|https://rt.perl.org/Ticket/Display.html?id=125826>
1250
1251 =item *
1252
1253 The integer overflow check for the range operator (...) in list
1254 context now correctly handles the case where the size of the range is
1255 larger than the address space.  This could happen on 32-bits with
1256 -Duse64bitint.
1257 L<[perl #125781]|https://rt.perl.org/Ticket/Display.html?id=125781>
1258
1259 =item *
1260
1261 A crash with C<< %::=(); J->${\"::"} >> has been fixed.
1262 L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541>
1263
1264 =item *
1265
1266 C<qr/(?[ () ])/> no longer segfaults, giving a syntax error message instead.
1267 [perl #125805]
1268
1269 =item *
1270
1271 Regular expression possessive quantifier v5.20 regression now fixed.
1272 C<qr/>I<PAT>C<{>I<min>,I<max>C<}+>C</> is supposed to behave identically
1273 to C<qr/(?E<gt>>I<PAT>C<{>I<min>,I<max>C<})/>.  Since v5.20, this didn't
1274 work if I<min> and I<max> were equal.  [perl #125825]
1275
1276 =item *
1277
1278 C<< BEGIN <> >> no longer segfaults and properly produces an error
1279 message.  [perl #125341]
1280
1281 =item *
1282
1283 In C<tr///> an illegal backwards range like C<tr/\x{101}-\x{100}//> was
1284 not always detected, giving incorrect results.  This is now fixed.
1285
1286 =back
1287
1288 =head1 Acknowledgements
1289
1290 [ XXX: generate this just in time, Ricardo! ]
1291
1292 =head1 Reporting Bugs
1293
1294 If you find what you think is a bug, you might check the articles recently
1295 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
1296 https://rt.perl.org/ .  There may also be information at
1297 http://www.perl.org/ , the Perl Home Page.
1298
1299 If you believe you have an unreported bug, please run the L<perlbug> program
1300 included with your release.  Be sure to trim your bug down to a tiny but
1301 sufficient test case.  Your bug report, along with the output of C<perl -V>,
1302 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
1303
1304 If the bug you are reporting has security implications, which make it
1305 inappropriate to send to a publicly archived mailing list, then please send it
1306 to perl5-security-report@perl.org.  This points to a closed subscription
1307 unarchived mailing list, which includes all the core committers, who will be
1308 able to help assess the impact of issues, figure out a resolution, and help
1309 co-ordinate the release of patches to mitigate or fix the problem across all
1310 platforms on which Perl is supported.  Please only use this address for
1311 security issues in the Perl core, not for modules independently distributed on
1312 CPAN.
1313
1314 =head1 SEE ALSO
1315
1316 The F<Changes> file for an explanation of how to view exhaustive details on
1317 what changed.
1318
1319 The F<INSTALL> file for how to build Perl.
1320
1321 The F<README> file for general stuff.
1322
1323 The F<Artistic> and F<Copying> files for copyright information.
1324
1325 =cut