This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta - Wrap to 79 columns
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.19.4
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.19.3 release and the 5.19.4
10 release.
11
12 If you are upgrading from an earlier release such as 5.19.2, first read
13 L<perl5193delta>, which describes differences between 5.19.2 and 5.19.3.
14
15 =head1 Core Enhancements
16
17 =head2 C<rand> now uses a consistent random number generator
18
19 Previously perl would use a platform specific random number generator, varying
20 between the libc rand(), random() or drand48().
21
22 This meant that the quality of perl's random numbers would vary from platform
23 to platform, from the 15 bits of rand() on Windows to 48-bits on POSIX
24 platforms such as Linux with drand48().
25
26 Perl now uses its own internal drand48() implementation on all platforms.  This
27 does not make perl's C<rand> cryptographically secure.  [perl #115928]
28
29 =head2 Better 64-bit support
30
31 On 64-bit platforms, the internal array functions now use 64-bit offsets,
32 allowing Perl arrays to hold more than 2**31 elements, if you have the memory
33 available.
34
35 The regular expression engine now supports strings longer than 2**31
36 characters.  [perl #112790, #116907]
37
38 The functions PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt and
39 PerlIO_set_ptrcnt now have SSize_t, rather than int, return values and
40 parameters.
41
42 =head2 New slice syntax
43
44 The new C<%hash{...}> and C<%array[...]> syntax returns a list of key/value (or
45 index/value) pairs.
46
47 =head2 EBCDIC support
48
49 Core Perl now mostly works on EBCDIC platforms.  This is not true of many
50 modules, including some which are shipped with this release.  If you have
51 resources to help continue this process, including test machines, send email to
52 L<mailto:perl-mvs@perl.org>.
53
54 As a result of this, certain XS functions are now deprecated; see L</Internal
55 Changes>.
56
57 =head1 Incompatible Changes
58
59 =head2 Locale decimal point character no longer leaks outside of
60 S<C<use locale>> scope (with the exception of $!)
61
62 This is actually a bug fix, but some code has come to rely on the bug being
63 present, so this change is listed here.  The current locale that the program is
64 running under is not supposed to be visible to Perl code except within the
65 scope of a S<C<use locale>>.  However, until now under certain circumstances,
66 the character used for a decimal point (often a comma) leaked outside the
67 scope.
68
69 This continues the work released in Perl 5.19.1.  It turns out that that did
70 not catch all the leaks, including C<printf> and C<sprintf> not respecting
71 S<C<use locale>>.  If your code is affected by this change, simply add a
72 S<C<use locale>>.
73
74 Now, the only known place where S<C<use locale>> is not respected is in the
75 stringification of L<$!|perlvar/$!>.
76
77 =head2 Assignments of Windows sockets error codes to $! now prefer F<errno.h> values over WSAGetLastError() values
78
79 In previous versions of Perl, Windows sockets error codes as returned by
80 WSAGetLastError() were assigned to $!, and some constants such as ECONNABORTED,
81 not in F<errno.h> in VC++ (or the various Windows ports of gcc) were defined to
82 corresponding WSAE* values to allow $! to be tested against the E* constants
83 exported by L<Errno> and L<POSIX>.
84
85 This worked well until VC++ 2010 and later, which introduced new E* constants
86 with values E<gt> 100 into F<errno.h>, including some being (re)defined by perl
87 to WSAE* values.  That caused problems when linking XS code against other
88 libraries which used the original definitions of F<errno.h> constants.
89
90 To avoid this incompatibility, perl now maps WSAE* error codes to E* values
91 where possible, and assigns those values to $!.  The E* constants exported by
92 L<Errno> and L<POSIX> are updated to match so that testing $! against them,
93 wherever previously possible, will continue to work as expected, and all E*
94 constants found in F<errno.h> are now exported from those modules with their
95 original F<errno.h> values
96
97 In order to avoid breakage in existing Perl code which assigns WSAE* values to
98 $!, perl now intercepts the assignment and performs the same mapping to E*
99 values as it uses internally when assigning to $! itself.
100
101 However, one backwards-incompatibility remains: existing Perl code which
102 compares $! against the numeric values of the WSAE* error codes that were
103 previously assigned to $! will now be broken in those cases where a
104 corresponding E* value has been assigned instead.  This is only an issue for
105 those E* values E<lt> 100, which were always exported from L<Errno> and
106 L<POSIX> with their original F<errno.h> values, and therefore could not be used
107 for WSAE* error code tests (e.g. WSAEINVAL is 10022, but the corresponding
108 EINVAL is 22).  (E* values E<gt> 100, if present, were redefined to WSAE*
109 values anyway, so compatibility can be achieved by using the E* constants,
110 which will work both before and after this change, albeit using different
111 numeric values under the hood.)
112
113 =head1 Deprecations
114
115 =head2 Literal control characters in variable names
116
117 This deprecation affects things like $\cT, where \cT is a literal control in
118 the source code.  Surprisingly, it appears that originally this was intended as
119 the canonical way of accessing variables like $^T, with the caret form only
120 being added as an alternative.
121
122 The literal control form is being deprecated for two main reasons.  It has what
123 are likely unfixable bugs, such as $\cI not working as an alias for $^I, and
124 their usage not being portable to non-ASCII platforms: While $^T will work
125 everywhere, \cT is whitespace in EBCDIC.  [perl #119123]
126
127 =head1 Performance Enhancements
128
129 =over 4
130
131 =item *
132
133 The trie performance enhancement for regular expressions has now been extended
134 to those compiled under C</iaa>.
135
136 =back
137
138 =head1 Modules and Pragmata
139
140 =head2 Updated Modules and Pragmata
141
142 =over 4
143
144 =item *
145
146 L<autodie> has been upgraded from version 2.20 to 2.21.
147
148 Numerous improvements have been made, many speed-related.  See the F<Changes>
149 file in the CPAN distribution for full details.
150
151 =item *
152
153 L<B> has been upgraded from version 1.45 to 1.46.
154
155 The fix for [perl #118525] introduced a regression in the behaviour of
156 C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on a
157 C<NULL> C<CvGV> to C<undef>.  C<B::CV::GV> again returns a C<B::SPECIAL> object
158 in this case.  [perl #119351]
159
160 L<B> version 1.44 (Perl 5.19.2) introduced four new B::OP methods, C<slabbed>,
161 C<savefree>, C<static> and C<folded>, but these have never actually worked
162 until now.  They used to croak.
163
164 =item *
165
166 L<B::Concise> has been upgraded from version 0.98 to 0.99.
167
168 The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed
169 and handling of the new kvaslice and kvhslice operators have been added.
170
171 =item *
172
173 L<B::Deparse> has been upgraded from version 1.22 to 1.23.
174
175 The new kvaslice and kvhslice operators have been added.
176
177 =item *
178
179 L<Carp> has been upgraded from version 1.31 to 1.32.
180
181 =over 4
182
183 =item *
184
185 In stack traces, subroutine arguments that are strings are now quoted in a
186 consistent manner, regardless of what characters they contain and how they're
187 internally represented.
188
189 =item *
190
191 C<Carp> also now shows subroutine arguments that are references to regexp
192 objects in a consistent manner in stack traces.
193
194 =item *
195
196 C<Carp> now takes care not to clobber the status variables $! and $^E.
197
198 =item *
199
200 C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
201 C<overload> stash.
202
203 =item *
204
205 C<Carp> now avoids some unwanted Unicode warnings on older Perls.  This doesn't
206 affect behaviour with current Perls.
207
208 =item *
209
210 C<Carp::Heavy> detects version mismatch with C<Carp>, to give a good error
211 message if a current (stub) C<Carp::Heavy> gets loaded by an old C<Carp> that
212 expects C<Carp::Heavy> to provide subroutines.
213
214 =back
215
216 =item *
217
218 L<charnames> has been upgraded from version 1.38 to 1.39.
219
220 This module now works on EBCDIC platforms.
221
222 =item *
223
224 L<CPAN> has been upgraded from version 2.00 to 2.03-TRIAL.
225
226 Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
227 full details.
228
229 =item *
230
231 L<CPAN::Meta> has been upgraded from version 2.132140 to 2.132620.
232
233 META validation no longer allows a scalar value when a list was required for a
234 field.
235
236 =item *
237
238 L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123.
239
240 No changes have been made to the installed code other than the version bump to
241 keep in sync with the latest CPAN release.
242
243 =item *
244
245 L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
246
247 This upgrade is part of a larger change to make the array interface 64-bit safe
248 by using SSize_t instead of I32 for array indices.
249
250 In addition, an EBCDIC fix has been applied.
251
252 =item *
253
254 L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
255
256 This upgrade is part of a larger change to preserve referential identity when
257 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
258 non-existent array elements.
259
260 In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been
261 fixed.
262
263 =item *
264
265 L<diagnostics> has been upgraded from version 1.32 to 1.33.
266
267 C<=back> is now treated as the end of a warning description, thus keeping any
268 trailing data in the file from showing up as part of the last warning's
269 description.  [perl #119817]
270
271 =item *
272
273 L<DynaLoader> has been upgraded from version 1.19 to 1.20.
274
275 The documentation now makes it clear, as has always been the case, that
276 C<dl_unload_file> is only called automatically to unload all loaded shared
277 objects if the perl interpreter was built with the C macro
278 DL_UNLOAD_ALL_AT_EXIT defined.  Support for GNU DLD has also been removed.
279
280 =item *
281
282 L<Encode> has been upgraded from version 2.52 to 2.55.
283
284 An erroneous early return in C<decode_utf8> has been removed, and a bug in
285 C<_utf8_on> under COW has been fixed.  Encode also now uses L<parent> rather
286 than L<base> throughout.
287
288 =item *
289
290 L<Errno> has been upgraded from version 1.19 to 1.20.
291
292 The list of E* constants exported on Windows has been updated to reflect the
293 changes made in the assignment of sockets error codes to $! (see
294 L</Incompatible Changes>).
295
296 =item *
297
298 L<Exporter> has been upgraded from version 5.69 to 5.70.
299
300 A number of typos have been corrected in the documentation.
301
302 =item *
303
304 L<ExtUtils::CBuilder> has been upgraded from version 0.280210 to 0.280212.
305
306 No changes have been made to the installed code other than the version bump to
307 keep in sync with the latest CPAN release.
308
309 =item *
310
311 L<ExtUtils::Command> has been upgraded from version 1.17 to 1.18.
312
313 No changes have been made to the installed code other than the version bump to
314 keep in sync with the latest CPAN release.
315
316 =item *
317
318 L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76.
319
320 Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
321 full details.
322
323 =item *
324
325 L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.23.
326
327 Unquoted "here-doc" markers for typemaps can now be optionally followed by a
328 semicolon, just like quoted markers.  [perl #119761]
329
330 =item *
331
332 L<File::Copy> has been upgraded from version 2.27 to 2.28.
333
334 The documentation of C<copy> now makes it clear that trying to copy a file into
335 a non-existent directory is not supported.  [perl #119539]
336
337 =item *
338
339 L<File::Find> has been upgraded from version 1.24 to 1.25.
340
341 Better diagnostics are now provided in the case of a failed C<chdir>.
342
343 =item *
344
345 L<File::Glob> has been upgraded from version 1.20 to 1.21.
346
347 C<glob> now warns in the context of C<use warnings "syscalls";> if the supplied
348 pattern has an internal NUL (C<"\0">) character.
349
350 =item *
351
352 L<FileCache> has been upgraded from version 1.08 to 1.09.
353
354 This upgrade is part of a larger change to use L<parent> rather than L<base>.
355
356 =item *
357
358 L<Hash::Util::FieldHash> has been upgraded from version 1.12 to 1.13.
359
360 This upgrade is part of a larger change to use L<parent> rather than L<base>.
361
362 =item *
363
364 L<HTTP::Tiny> has been upgraded from version 0.034 to 0.035.
365
366 Encoded data from C<post_form> now preserves term order if data is provided as
367 an array reference.  (They are still sorted for consistency if provided as a
368 hash reference.)
369
370 =item *
371
372 L<I18N::LangTags> has been upgraded from version 0.39 to 0.40.
373
374 Bosnian has now joined Croatian and Serbian in the lists of mutually
375 intelligible Slavic languages.  [perl #72594]
376
377 =item *
378
379 L<IO> has been upgraded from version 1.28 to 1.29.
380
381 A minor internals-only change has been made to the XS code.
382
383 =item *
384
385 L<IO::Socket> has been upgraded from version 1.36 to 1.37.
386
387 The C<connect> method has been updated in the light of changes made in the
388 assignment of sockets error codes to $! on Windows (see L</Incompatible
389 Changes>).
390
391 =item *
392
393 L<IPC::Open3> has been upgraded from version 1.15 to 1.16.
394
395 This upgrade is part of a larger change to preserve referential identity when
396 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
397 non-existent array elements.
398
399 =item *
400
401 L<JSON::PP> has been patched from version 2.27202 to 2.27202_01.
402
403 A precedence issue has been fixed in the return value of a private subroutine.
404
405 =item *
406
407 L<Locale::Codes> has been upgraded from version 3.26 to 3.27.
408
409 New codes have been added and the (deprecated) set of FIPS-10 country codes has
410 been removed.
411
412 =item *
413
414 L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
415
416 Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more
417 consistent with other Perl documentation.  [perl #86686]
418
419 Added a C<bint> method for rounding towards zero.  [perl #85296]
420
421 =item *
422
423 L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
424
425 This upgrade is part of a larger change to make the array interface 64-bit safe
426 by using SSize_t instead of I32 for array indices.
427
428 =item *
429
430 L<Module::CoreList> has been upgraded from version 2.97 to 2.99.
431
432 The list of Perl versions covered has been updated.
433
434 A function C<is_core> has been added, which returns true if the specified
435 module was bundled with Perl.  Optionally you can specify a minimum version of
436 the module, and the specific version of Perl you're interested in (defaults to
437 $^V, the running version of Perl).
438
439 =item *
440
441 L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58.
442
443 C<requires> has been made more robust.  [cpan #83728]
444
445 =item *
446
447 L<Module::Metadata> has been upgraded from version 1.000014 to 1.000018.
448
449 The module's DESCRIPTION has been re-worded regarding safety/security to
450 satisfy CVE-2013-1437.  Also, versions are now detainted if needed.  [cpan
451 #88576]
452
453 =item *
454
455 L<mro> has been upgraded from version 1.13 to 1.14.
456
457 This upgrade is part of a larger change to make the array interface 64-bit safe
458 by using SSize_t instead of I32 for array indices.
459
460 =item *
461
462 L<Opcode> has been upgraded from version 1.25 to 1.26.
463
464 The new kvaslice and kvhslice operators have been added.
465
466 =item *
467
468 L<parent> has been upgraded from version 0.226 to 0.228.
469
470 No changes have been made to the installed code other than the version bump to
471 keep in sync with the latest CPAN release.
472
473 =item *
474
475 L<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407.
476
477 No changes have been made to the installed code other than the version bump to
478 keep in sync with the latest CPAN release.
479
480 =item *
481
482 L<Perl::OSType> has been upgraded from version 1.003 to 1.005.
483
484 The Unix OSType 'bitrig' has been added.
485
486 =item *
487
488 L<perlfaq> has been upgraded from version 5.0150043 to 5.0150044.
489
490 The use of C<gensym> in a number of examples has been removed, the use of C<&>
491 in subroutine calls is now clarified and several new questions have been
492 answered.
493
494 =item *
495
496 L<Pod::Html> has been upgraded from version 1.20 to 1.21.
497
498 This upgrade is part of a larger change to use L<parent> rather than L<base>.
499
500 =item *
501
502 L<POSIX> has been upgraded from version 1.34 to 1.35.
503
504 The list of E* constants exported on Windows has been updated to reflect the
505 changes made in the assignment of sockets error codes to $! (see
506 L</Incompatible Changes>).
507
508 =item *
509
510 L<re> has been upgraded from version 0.25 to 0.26.
511
512 This upgrade is part of a larger change to support 64-bit string lengths in the
513 regular expression engine.
514
515 =item *
516
517 L<Scalar::Util> has been upgraded from version 1.31 to 1.32.
518
519 The documentation of C<blessed> has been improved to mention the fact that
520 package "0" is defined but false.
521
522 =item *
523
524 L<Socket> has been upgraded from version 2.011 to 2.012.
525
526 Syntax errors when building on the WinCE platform have been fixed.  [cpan
527 #87389]
528
529 =item *
530
531 L<Storable> has been upgraded from version 2.46 to 2.47.
532
533 This upgrade is part of a larger change to preserve referential identity when
534 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
535 non-existent array elements.
536
537 =item *
538
539 L<Term::ReadLine> has been upgraded from version 1.13 to 1.14.
540
541 Term::ReadLine::EditLine support has been added.
542
543 =item *
544
545 L<Test::Simple> has been patched from version 0.98 to 0.98_06.
546
547 A precedence issue has been fixed in the return value of a private subroutine
548 in L<Test::Builder>.
549
550 =item *
551
552 L<Time::Piece> has been upgraded from version 1.22 to 1.23.
553
554 Day of year parsing (like "%y%j") has been fixed.
555
556 =item *
557
558 L<Unicode::Collate> has been upgraded from version 0.98 to 0.99.
559
560 By default, out-of-range values are replaced with C<U+FFFD> (REPLACEMENT
561 CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>=
562 20.  When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be
563 overridden.
564
565 =item *
566
567 L<Unicode::UCD> has been upgraded from version 0.53 to 0.54.
568
569 This module now works on EBCDIC platforms.
570
571 =item *
572
573 L<version> has been upgraded from version 0.9903 to 0.9904.
574
575 No changes have been made to the installed code other than the version bump to
576 keep in sync with the latest CPAN release.
577
578 =item *
579
580 L<warnings> has been upgraded from version 1.18 to 1.19.
581
582 The C<syscalls> warnings category has been added to check for embedded NUL
583 (C<"\0">) characters in pathnames and string arguments to other system calls.
584 [perl #117265]
585
586 =item *
587
588 L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
589
590 This upgrade is part of the change to remove the uninitialized warnings
591 exemption for uninitialized values returned by XSUBs (see the L</Selected Bug
592 Fixes> section).
593
594 =back
595
596 =head1 Documentation
597
598 =head2 New Documentation
599
600 =head3 L<perlrepository>
601
602 This document was removed (actually, renamed L<perlgit> and given a major
603 overhaul) in Perl 5.13.10, causing Perl documentation websites to show the now
604 out of date version in Perl 5.12 as the latest version.  It has now been
605 restored in stub form, directing readers to current information.
606
607 =head2 Changes to Existing Documentation
608
609 =head3 L<perldata>
610
611 =over 4
612
613 =item *
614
615 New sections have been added to document the new index/value array slice and
616 key/value hash slice syntax.
617
618 =back
619
620 =head3 L<perldebguts>
621
622 =over 4
623
624 =item *
625
626 The C<&DB::goto> and C<&DB::lsub> debugger subroutines are now documented.
627 [perl #77680]
628
629 =back
630
631 =head3 L<perlguts>
632
633 =over 4
634
635 =item *
636
637 Numerous minor changes have been made to reflect changes made to the perl
638 internals in this release.
639
640 =back
641
642 =head3 L<perlhack>
643
644 =over 4
645
646 =item *
647
648 The L<SUPER QUICK PATCH GUIDE|perlhack/SUPER QUICK PATCH GUIDE> section has
649 been updated.
650
651 =back
652
653 =head3 L<perlsub>
654
655 =over 4
656
657 =item *
658
659 A list of subroutine names used by the perl implementation is now included.
660 [perl #77680]
661
662 =back
663
664 =head1 Diagnostics
665
666 The following additions or changes have been made to diagnostic output,
667 including warnings and fatal error messages.  For the complete list of
668 diagnostic messages, see L<perldiag>.
669
670 =head2 New Diagnostics
671
672 =head3 New Errors
673
674 =over 4
675
676 =item *
677
678 L<delete argument is indexE<sol>value array slice, use array slice|perldiag/"delete argument is index/value array slice, use array slice">
679
680 (F) You used index/value array slice syntax (C<%array[...]>) as the argument to
681 C<delete>.  You probably meant C<@array[...]> with an @ symbol instead.
682
683 =item *
684
685 L<delete argument is keyE<sol>value hash slice, use hash slice|perldiag/"delete argument is key/value hash slice, use hash slice">
686
687 (F) You used key/value hash slice syntax (C<%hash{...}>) as the argument to
688 C<delete>.  You probably meant C<@hash{...}> with an @ symbol instead.
689
690 =back
691
692 =head3 New Warnings
693
694 =over 4
695
696 =item *
697
698 L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
699
700 (W syscalls) Embedded \0 characters in pathnames or other system call arguments
701 produce a warning as of 5.20.  The parts after the \0 were formerly ignored by
702 system calls.
703
704 =item *
705
706 L<Possible precedence issue with control flow operator|perldiag/"Possible precedence issue with control flow operator">
707
708 (W syntax) There is a possible problem with the mixing of a control flow
709 operator (e.g. C<return>) and a low-precedence operator like C<or>.  Consider:
710
711     sub { return $a or $b; }
712
713 This is parsed as:
714
715     sub { (return $a) or $b; }
716
717 Which is effectively just:
718
719     sub { return $a; }
720
721 Either use parentheses or the high-precedence variant of the operator.
722
723 Note this may be also triggered for constructs like:
724
725     sub { 1 if die; }
726
727 =item *
728
729 L<Scalar value %%s[%s] better written as $%s[%s]|perldiag/"Scalar value %%s[%s] better written as $%s[%s]">
730
731 (W syntax) In scalar context, you've used an array index/value slice (indicated
732 by %) to select a single element of an array.  Generally it's better to ask for
733 a scalar value (indicated by $).  The difference is that C<$foo[&bar]> always
734 behaves like a scalar, both in the value it returns and when evaluating its
735 argument, while C<%foo[&bar]> provides a list context to its subscript, which
736 can do weird things if you're expecting only one subscript.  When called in
737 list context, it also returns the index (what C<&bar> returns) in addition to
738 the value.
739
740 =item *
741
742 L<Scalar value %%s{%s} better written as $%s{%s}|perldiag/"Scalar value %%s{%s} better written as $%s{%s}">
743
744 (W syntax) In scalar context, you've used a hash key/value slice (indicated by
745 %) to select a single element of a hash.  Generally it's better to ask for a
746 scalar value (indicated by $).  The difference is that C<$foo{&bar}> always
747 behaves like a scalar, both in the value it returns and when evaluating its
748 argument, while C<@foo{&bar}> and provides a list context to its subscript,
749 which can do weird things if you're expecting only one subscript.  When called
750 in list context, it also returns the key in addition to the value.
751
752 =item *
753
754 L<Use of literal control characters in variable names is deprecated|perldiag/"Use of literal control characters in variable names is deprecated">
755
756 (D deprecated) Using literal control characters in the source to refer to the
757 ^FOO variables, like $^X and ${^GLOBAL_PHASE} is now deprecated.  This only
758 affects code like $\cT, where \cT is a control in the source code: ${"\cT"} and
759 $^T remain valid.
760
761 =back
762
763 =head2 Changes to Existing Diagnostics
764
765 =over 4
766
767 =item *
768
769 Warnings and errors from the regexp engine are now UTF-8 clean
770
771 =item *
772
773 The "Unknown switch condition" error message has some slight changes.  This
774 error triggers when there is an unknown condition in a C<(?(foo))> conditional.
775 The error message used to read:
776
777     Unknown switch condition (?(%s in regex;
778
779 But what %s could be was mostly up to luck.  For C<(?(foobar))>, you might have
780 seen "fo" or "f".  For Unicode characters, you would generally get a corrupted
781 string.  The message has been changed to read:
782
783     Unknown switch condition (?(...)) in regex;
784
785 Additionally, the C<'E<lt>-- HERE'> marker in the error will now point to the
786 correct spot in the regex.
787
788 =item *
789
790 The "%s "\x%X" does not map to Unicode" warning is now correctly listed as a
791 severe warning rather than as a fatal error.
792
793 =back
794
795 =head1 Utility Changes
796
797 =head3 L<find2perl>
798
799 =over 4
800
801 =item *
802
803 L<find2perl> now handles C<?> wildcards correctly.  [perl #113054]
804
805 =back
806
807 =head1 Configuration and Compilation
808
809 =over 4
810
811 =item *
812
813 The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
814 avoids a race condition during parallel makes, which could cause the build to
815 fail.  This is the last known parallel make problem (on *nix platforms), and
816 therefore we believe that a parallel make should now always be error free.
817
818 =for comment
819
820 Strictly only for a build where build files such as F<Makefile.SH> have not
821 been updated by C<git> in an already configured and built tree.
822
823 =back
824
825 =head1 Testing
826
827 =over 4
828
829 =item *
830
831 The test script F<t/bigmem/regexp.t> has been added to test that regular
832 expression matches on very large strings now succeed as expected.
833
834 =item *
835
836 A bug that was fixed in Perl 5.15.4 is now tested by the new test script
837 F<t/io/eintr_print.t>.  [perl #119097]
838
839 =item *
840
841 The new test scripts F<t/op/kvaslice.t> and F<t/op/kvhslice.t> test the new
842 index/value array slice and key/value hash slice syntax respectively.
843
844 =item *
845
846 Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
847 now tested by the new test script F<t/op/rt119311.t>.
848
849 =item *
850
851 The new test script F<t/op/waitpid.t> tests the fix for [perl #85228] (see
852 L</Selected Bug Fixes>).
853
854 =item *
855
856 The latest copyright years in the top-level F<README> file and the B<perl -v>
857 output are now tested as matching each other by the new test script
858 F<t/porting/copyright.t>
859
860 =item *
861
862 The new test script F<t/win32/signal.t> tests that $! and $^E are now preserved
863 across signal handlers by the Win32 signal emulation code.
864
865 =item *
866
867 The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
868 program on platforms where it is practical to do so.
869
870 =back
871
872 =head1 Platform Support
873
874 =head2 New Platforms
875
876 =over 4
877
878 =item FreeMiNT
879
880 Support has been added for FreeMiNT, a free open-source OS for the Atari ST
881 system and its successors, based on the original MiNT that was officially
882 adopted by Atari.
883
884 =item Bitrig
885
886 Compile support has been added for Bitrig, a fork of OpenBSD.
887
888 =back
889
890 =head2 Discontinued Platforms
891
892 Configure hints and conditional code for several very old platforms has been
893 removed.  We have not received reports for these in many years, typically not
894 since Perl 5.6.0.
895
896 =over 4
897
898 =item AT&T 3b1
899
900 Configure support for the 3b1, also known as the AT&T Unix PC (and the similar
901 AT&T 7300), has been removed.
902
903 =back
904
905 =head2 Platform-Specific Notes
906
907 =over 4
908
909 =item VMS
910
911 The C<PERL_ENV_TABLES> feature to control the population of %ENV at perl
912 start-up was broken in Perl 5.16.0 but has now been fixed.
913
914 =item Win32
915
916 C<rename> and C<link> on Win32 now set $! to ENOSPC and EDQUOT when
917 appropriate.  [perl #119857]
918
919 =item WinCE
920
921 Perl now builds again on WinCE, following locale-related breakage (WinCE has
922 non-existent locale support) introduced around 5.19.1.  [perl #119443]
923
924 The building of XS modules has largely been restored.  Several still cannot
925 (yet) be built but it is now possible to build Perl on WinCE with only a couple
926 of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
927 incorporated soon.
928
929 =item GNU/Hurd
930
931 The BSD compatibility library C<libbsd> is no longer required for builds.
932
933 =back
934
935 =head1 Internal Changes
936
937 =over 4
938
939 =item *
940
941 The internal representation has changed for the match variables $1, $2 etc.,
942 $`, $&, $', ${^PREMATCH}, ${^MATCH} and ${^POSTMATCH}.  It uses slightly less
943 memory, avoids string comparisons and numeric conversions during lookup, and
944 uses 23 fewer lines of C.  This change should not affect any external code.
945
946 =item *
947
948 Arrays now use NULL internally to represent unused slots, instead of
949 &PL_sv_undef.  &PL_sv_undef is no longer treated as a special value, so
950 av_store(av, 0, &PL_sv_undef) will cause element 0 of that array to hold a
951 read-only undefined scalar.  C<$array[0] = anything> will croak and
952 C<\$array[0]> will compare equal to C<\undef>.
953
954 =item *
955
956 The SV returned by HeSVKEY_force() now correctly reflects the UTF8ness of the
957 underlying hash key when that key is not stored as a SV.  [perl #79074]
958
959 =item *
960
961 Certain rarely used functions and macros available to XS code are now, or are
962 planned to be, deprecated.  These are:
963 C<utf8n_to_uvuni> (use C<utf8_to_uvchr_buf> instead),
964 C<utf8_to_uni_buf> (use C<utf8_to_uvchr_buf> instead),
965 C<valid_utf8_to_uvuni> (use C<utf8_to_uvchr_buf> instead),
966 C<uvuni_to_utf8> (use C<uvchr_to_utf8> instead),
967 C<NATIVE_TO_NEED> (this did not work properly anyway),
968 and C<ASCII_TO_NEED>  (this did not work properly anyway).
969
970 Starting in this release, almost never does application code need to
971 distinguish between the platform's character set and Latin1, on which the
972 lowest 256 characters of Unicode are based.
973
974 =back
975
976 =head1 Selected Bug Fixes
977
978 =over 4
979
980 =item *
981
982 The value of $^E is now saved across signal handlers on Windows.  [perl #85104]
983
984 =item *
985
986 A lexical filehandle (as in C<open my $fh...>) is usually given a name based on
987 the current package and the name of the variable, e.g. "main::$fh".  Under
988 recursion, the filehandle was losing the "$fh" part of the name.  This has been
989 fixed.
990
991 =item *
992
993 Perl 5.19.3 accidentally extended the previous bug to all closures, even when
994 not called recursively, i.e. lexical handles in closure would always be called
995 "main::" or "MyPackage::" etc.  This has been fixed.
996
997 =item *
998
999 Uninitialized values returned by XSUBs are no longer exempt from uninitialized
1000 warnings.  [perl #118693]
1001
1002 =item *
1003
1004 C<elsif ("")> no longer erroneously produces a warning about void context.
1005 [perl #118753]
1006
1007 =item *
1008
1009 Passing C<undef> to a subroutine now causes @_ to contain the same read-only
1010 undefined scalar that C<undef> returns.  Furthermore, C<exists $_[0]> will now
1011 return true if C<undef> was the first argument.  [perl #7508, #109726]
1012
1013 =item *
1014
1015 Passing a non-existent array element to a subroutine does not usually
1016 autovivify it unless the subroutine modifies its argument.  This did not work
1017 correctly with negative indices and with non-existent elements within the
1018 array.  The element would be vivified immediately.  The delayed vivification
1019 has been extended to work with those.  [perl #118691]
1020
1021 =item *
1022
1023 Assigning references or globs to the scalar returned by $#foo after the @foo
1024 array has been freed no longer causes assertion failures on debugging builds
1025 and memory leaks on regular builds.
1026
1027 =item *
1028
1029 Perl 5.19.2 threw line numbers off after some cases of line breaks following
1030 keywords, such as
1031
1032    1 unless
1033    1;
1034
1035 This has been fixed.  [perl #118931]
1036
1037 =item *
1038
1039 On 64-bit platforms, large ranges like 1..1000000000000 no longer crash, but
1040 eat up all your memory instead.  [perl #119161]
1041
1042 =item *
1043
1044 C<__DATA__> now puts the C<DATA> handle in the right package, even if the
1045 current package has been renamed through glob assignment.
1046
1047 =item *
1048
1049 The string position set by C<pos> could shift if the string changed
1050 representation internally to or from utf8.  This could happen, e.g., with
1051 references to objects with string overloading.
1052
1053 =item *
1054
1055 Taking references to the return values of two C<pos> calls with the same
1056 argument, and then assigning a reference to one and C<undef> to the other,
1057 could result in assertion failures or memory leaks.
1058
1059 =item *
1060
1061 Elements of @- and @+ now update correctly when they refer to non-existent
1062 captures.  Previously, a referenced element (C<$ref = \$-[1]>) could refer to
1063 the wrong match after subsequent matches.
1064
1065 =item *
1066
1067 When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the scope,
1068 it is possible for C<DESTROY> recursively to call a subroutine or format that
1069 is currently being exited.  It that case, sometimes the lexical variables
1070 inside the sub would start out having values from the outer call, instead of
1071 being undefined as they should.  This has been fixed.  [perl #119311]
1072
1073 =item *
1074
1075 ${^MPEN} is no longer treated as a synonym for ${^MATCH}.
1076
1077 =item *
1078
1079 Perl now tries a little harder to return the correct line number in
1080 C<(caller)[2]>.  [perl #115768]
1081
1082 =item *
1083
1084 Line numbers inside multiline quote-like operators are now reported correctly.
1085 [perl #3643]
1086
1087 =item *
1088
1089 C<#line> directives inside code embedded in quote-like operators are now
1090 respected.
1091
1092 =item *
1093
1094 Line numbers are now correct inside the second here-doc when two here-doc
1095 markers occur on the same line.
1096
1097 =item *
1098
1099 Starting with Perl 5.12, line numbers were off by one if the B<-d> switch was
1100 used on the #! line.  Now they are correct.
1101
1102 =item *
1103
1104 Perl 5.19.2 inadvertently stopped some lines of code from being available to
1105 the debugger if C<=E<gt>> occurred at the beginning of a line and the previous
1106 line ended with a keyword.  This is now fixed.
1107
1108 =item *
1109
1110 Perl 5.19.2 allowed the PERL5DB environment variable to contain multiple lines
1111 of code, but those lines were not made available to the debugger.  Now they are
1112 all stuffed into line number 0, accessible via C<$dbline[0]> in the debugger.
1113
1114 =item *
1115
1116 An optimization in Perl 5.18 made incorrect assumptions causing a bad
1117 interaction with the L<Devel::CallParser> CPAN module.  If the module was
1118 loaded then lexical variables declared in separate statements following a
1119 C<my(...)> list might fail to be cleared on scope exit.
1120
1121 =item *
1122
1123 C<&xsub> and C<goto &xsub> calls now allow the called subroutine to autovivify
1124 elements of @_.
1125
1126 =item *
1127
1128 C<&xsub> and C<goto &xsub> no longer crash if *_ has been undefined and has no
1129 ARRAY entry (i.e. @_ does not exist).
1130
1131 =item *
1132
1133 C<&xsub> and C<goto &xsub> now work with tied @_.
1134
1135 =item *
1136
1137 Overlong identifiers no longer cause a buffer overflow (and a crash).  They
1138 started doing so in Perl 5.18.
1139
1140 =item *
1141
1142 The warning "Scalar value @hash{foo} better written as $hash{foo}" now produces
1143 far fewer false positives.  In particular, C<@hash{+function_returning_a_list}>
1144 and C<@hash{ qw "foo bar baz" }> no longer warn.  The same applies to array
1145 slices.  [perl #28380, #114024]
1146
1147 =item *
1148
1149 C<$! = EINVAL; waitpid(0, WNOHANG);> no longer goes into an internal infinite
1150 loop.  [perl #85228]
1151
1152 =item *
1153
1154 Perl 5.19.3 accidentally caused C<\(1+2)> to return a reference to the same
1155 mutable scalar each time, so that modifications affect future evaluations.
1156 This has been fixed.  [perl #119501]
1157
1158 =item *
1159
1160 A possible segmentation fault in filehandle duplication has been fixed.
1161
1162 =item *
1163
1164 A subroutine in @INC can return a reference to a scalar containing the initial
1165 contents of the file.  However, that scalar was freed prematurely if not
1166 referenced elsewhere, giving random results.
1167
1168 =back
1169
1170 =head1 Acknowledgements
1171
1172 XXX Generate this with:
1173
1174   perl Porting/acknowledgements.pl v5.19.3..HEAD
1175
1176 =head1 Reporting Bugs
1177
1178 If you find what you think is a bug, you might check the articles recently
1179 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
1180 http://rt.perl.org/perlbug/ .  There may also be information at
1181 http://www.perl.org/ , the Perl Home Page.
1182
1183 If you believe you have an unreported bug, please run the L<perlbug> program
1184 included with your release.  Be sure to trim your bug down to a tiny but
1185 sufficient test case.  Your bug report, along with the output of C<perl -V>,
1186 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
1187
1188 If the bug you are reporting has security implications, which make it
1189 inappropriate to send to a publicly archived mailing list, then please send it
1190 to perl5-security-report@perl.org.  This points to a closed subscription
1191 unarchived mailing list, which includes all the core committers, who will be
1192 able to help assess the impact of issues, figure out a resolution, and help
1193 co-ordinate the release of patches to mitigate or fix the problem across all
1194 platforms on which Perl is supported.  Please only use this address for
1195 security issues in the Perl core, not for modules independently distributed on
1196 CPAN.
1197
1198 =head1 SEE ALSO
1199
1200 The F<Changes> file for an explanation of how to view exhaustive details on
1201 what changed.
1202
1203 The F<INSTALL> file for how to build Perl.
1204
1205 The F<README> file for general stuff.
1206
1207 The F<Artistic> and F<Copying> files for copyright information.
1208
1209 =cut