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