This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 6136213, cccbbce
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 Stuff that needs to be done still:
5 70502ce [perl #119101] Extraneous warnings in Parse::ErrorString::Perl
6 aa8c2dc Fix RT #41461 (with a test).
7
8 =head1 NAME
9
10 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
11 to be processed before release. ]
12
13 perldelta - what is new for perl v5.19.3
14
15 =head1 DESCRIPTION
16
17 This document describes differences between the 5.19.2 release and the 5.19.3
18 release.
19
20 If you are upgrading from an earlier release such as 5.19.1, first read
21 L<perl5192delta>, which describes differences between 5.19.1 and 5.19.2.
22
23 =head1 Notice
24
25 XXX Any important notices here
26
27 =head1 Core Enhancements
28
29 XXX New core language features go here.  Summarize user-visible core language
30 enhancements.  Particularly prominent performance optimisations could go
31 here, but most should go in the L</Performance Enhancements> section.
32
33 [ List each enhancement as a =head2 entry ]
34
35 =head2 B<-F> now implies B<-a> and B<-a> implies B<-n>
36
37 Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or
38 B<-p> was a no-op, with this change, if you supply B<-F> then both
39 B<-a> and B<-n> are implied and if you supply B<-a> then B<-n> is implied.
40
41 You can still use B<-p> for its extra behaviour. [perl #116190]
42
43 =head1 Security
44
45 XXX Any security-related notices go here.  In particular, any security
46 vulnerabilities closed should be noted here rather than in the
47 L</Selected Bug Fixes> section.
48
49 [ List each security issue as a =head2 entry ]
50
51 =head1 Incompatible Changes
52
53 XXX For a release on a stable branch, this section aspires to be:
54
55     There are no changes intentionally incompatible with 5.XXX.XXX
56     If any exist, they are bugs, and we request that you submit a
57     report.  See L</Reporting Bugs> below.
58
59 [ List each incompatible change as a =head2 entry ]
60
61 =head1 Deprecations
62
63 XXX Any deprecated features, syntax, modules etc. should be listed here.
64
65 =head2 Module removals
66
67 XXX Remove this section if inapplicable.
68
69 The following modules will be removed from the core distribution in a
70 future release, and will at that time need to be installed from CPAN.
71 Distributions on CPAN which require these modules will need to list them as
72 prerequisites.
73
74 The core versions of these modules will now issue C<"deprecated">-category
75 warnings to alert you to this fact.  To silence these deprecation warnings,
76 install the modules in question from CPAN.
77
78 Note that these are (with rare exceptions) fine modules that you are encouraged
79 to continue to use.  Their disinclusion from core primarily hinges on their
80 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
81 not usually on concerns over their design.
82
83 =over
84
85 XXX Note that deprecated modules should be listed here even if they are listed
86 as an updated module in the L</Modules and Pragmata> section.
87
88 =back
89
90 [ List each other deprecation as a =head2 entry ]
91
92 =head1 Performance Enhancements
93
94 XXX Changes which enhance performance without changing behaviour go here.
95 There may well be none in a stable release.
96
97 [ List each enhancement as a =item entry ]
98
99 =over 4
100
101 =item *
102
103 XXX
104
105 =back
106
107 =head1 Modules and Pragmata
108
109 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
110 go here.  If Module::CoreList is updated, generate an initial draft of the
111 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
112 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
113 below.  A paragraph summary for important changes should then be added by hand.
114 In an ideal world, dual-life modules would have a F<Changes> file that could be
115 cribbed.
116
117 [ Within each section, list entries as a =item entry ]
118
119 =head2 New Modules and Pragmata
120
121 =over 4
122
123 =item *
124
125 XXX
126
127 =back
128
129 =head2 Updated Modules and Pragmata
130
131 =over 4
132
133 =item *
134
135 L<B> has been upgraded from version 1.44 to 1.45.
136
137 Calling the C<GV> method on C<B::CV> objects created from a lexical
138 sub would return nonsense, possibly crashing perl. C<GV> now returns
139 C<undef> for lexical subs. [perl #118525]
140
141 Added the C<NAME_HEK> method to return the name of a lexical sub.
142
143 =item *
144
145 L<bignum> has been upgraded from version 0.35 to 0.36.
146
147 L<bigrat> wasn't correctly updating an internal variable when C<use>d
148 with a C<lib> option.
149
150 =item *
151
152 L<Carp> has been upgraded from 1.30 to 1.31
153
154 L<Carp> now handles objects with string overloads. It also allows objects
155 to specify how they appear in the stack dump with a C<CARP_TRACE> method,
156 and also allows the user to specify their own formatter for objects without
157 C<CARP_TRACE> as well as other references. [perl #92446]
158
159 =item *
160
161 L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062.
162
163 =item *
164
165 L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
166
167 =item *
168
169 L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
170
171 =item *
172
173 L<Data::Dumper> has been upgraded from version 2.147 to 2.148.
174
175 The compatbility of the XS implementation with the pure perl version
176 under C<Useqq> has been improved. [perl #118933]
177
178 =item *
179
180 L<Devel::Peek> has been upgraded from version 1.12 to 1.13.
181
182 The C<SvREFCNT_inc()> and C<SvREFCNT_dec()> functions have been
183 removed and C<SvREFCNT()> will now work on non-scalars. [perl #117793]
184
185 C<Dump> now checks its arguments at compile time.  Both arguments are now
186 evaluated in scalar context, with exceptions for @arrays and %hashes,
187 allowing aggregates to be dumped directly.  The first argument is evaluated
188 in rvalue scalar context, allowing rvalue C<pos> and C<substr> to be
189 dumped.  
190
191 C<fill_mstats> no longer crashes if its argument is not already a string.
192 [perl #92260]
193
194 =item *
195
196 L<Encode> has been upgraded from version 2.51 to 2.52.
197
198 Encoding "0" with MIME-Headers no longer gets a blank string.
199
200 =item *
201
202 L<Exporter> has been upgraded from version 5.68 to 5.69.
203
204 L<Exporter> would ignore custom C<$SIG{__WARN__}> handlers in
205 C<Exporter::Heavy>. [perl #39739]
206
207 =item *
208
209 The IO-Compress module collection has been upgraded from 2.061 to 2.062.
210
211 =item *
212
213 L<IPC::Cmd> has been upgraded from version 0.82 to 0.84.
214
215 C<run_forked> has various fixes/improvements, L<Socket> is only used where
216 needed and a regression introduced in 0.78 has been fixed.
217
218 =item *
219
220 L<IPC::Open3> has been upgradded from version 1.14 to 1.15.
221
222 C<open3> would leak a zombie process if the child process I/O
223 redirection or exec() failed. [perl #114722]
224
225 =item *
226
227 The libnet module collection has been upgraded from version 1.22 to 1.23.
228
229 =item *
230
231 L<List::Util> has been upgraded from version 1.27 to 1.30
232
233 L<List::Util> now includes C<pairgrep>, C<pairmap>, C<pairs>, C<pairkeys>,
234 C<pairvalues> and C<pairfirst> functions that operate on even-sized lists of
235 pairs.
236
237 =item *
238
239 L<parent> has been upgraded from version 0.225 to 0.226.
240
241 =item *
242
243 L<Socket> has been upgraded from version 2.010 to 2.011.
244
245 Handle FreeBSD (or other platforms) returning shorter AF_UNIX sockaddr
246 structures due to embedded sun_len. [cpan #86613]
247
248 =item *
249
250 L<Storable> has been upgraded from version 2.45 to 2.46.
251
252 Avoid creating temporary objects for STORABLE_attach when they aren't
253 required. [perl #118907]
254
255 =item *
256
257 L<Time::Piece> has been upgraded from version 1.21 to 1.22.
258
259 =back
260
261 =head2 Removed Modules and Pragmata
262
263 =over 4
264
265 =item *
266
267 XXX
268
269 =back
270
271 =head1 Documentation
272
273 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
274 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
275
276 =head2 New Documentation
277
278 XXX Changes which create B<new> files in F<pod/> go here.
279
280 =head3 L<XXX>
281
282 XXX Description of the purpose of the new file here
283
284 =head2 Changes to Existing Documentation
285
286 XXX Changes which significantly change existing files in F<pod/> go here.
287 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
288 section.
289
290 =head3 L<perlopentut>
291
292 =over 4
293
294 =item *
295
296 The C<open> tutorial has been completely rewriten by Tom Christiansen, and now
297 focuses on covering only the basics, rather than providing a comprehensive
298 reference to all things openable.  This rewrite came as the result of a
299 vigorous discussion on perl5-porters kicked off by a set of improvements
300 written by Alexander Hartmaier to the existing C<perlopentut>.  A "more than
301 you ever wanted to know about C<open>" document may follow in subsequent
302 versions of perl.
303
304 =back
305
306 =head1 Diagnostics
307
308 The following additions or changes have been made to diagnostic output,
309 including warnings and fatal error messages.  For the complete list of
310 diagnostic messages, see L<perldiag>.
311
312 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
313 include any changes in L<perldiag> that reconcile it to the C<C> code.
314
315 =head2 New Diagnostics
316
317 XXX Newly added diagnostic messages go under here, separated into New Errors
318 and New Warnings
319
320 =head3 New Errors
321
322 =over 4
323
324 =item *
325
326 XXX L<message|perldiag/"message">
327
328 =back
329
330 =head3 New Warnings
331
332 =over 4
333
334 =item *
335
336 L<Argument "%s" treated as 0 in increment (++)|perldiag/"Argument
337 "%s" treated as 0 in increment (++)">
338
339 (W numeric) The indicated string was fed as an argument to the C<++>
340 operator which expects either a number or a string matching
341 C</^[a-zA-Z]*[0-9]*\z/>.  See L<perlop/Auto-increment and
342 Auto-decrement> for details.
343
344 =back
345
346 =head2 Changes to Existing Diagnostics
347
348 XXX Changes (i.e. rewording) of diagnostic messages go here
349
350 =over 4
351
352 =item *
353
354 XXX Describe change here
355
356 =back
357
358 =head1 Utility Changes
359
360 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
361 Most of these are built within the directories F<utils> and F<x2p>.
362
363 [ List utility changes as a =head3 entry for each utility and =item
364 entries for each change
365 Use L<XXX> with program names to get proper documentation linking. ]
366
367 =head3 L<XXX>
368
369 =over 4
370
371 =item *
372
373 XXX
374
375 =back
376
377 =head1 Configuration and Compilation
378
379 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
380 go here.  Any other changes to the Perl build process should be listed here.
381 However, any platform-specific changes should be listed in the
382 L</Platform Support> section, instead.
383
384 [ List changes as a =item entry ].
385
386 =over 4
387
388 =item *
389
390 XXX
391
392 =back
393
394 =head1 Testing
395
396 XXX Any significant changes to the testing of a freshly built perl should be
397 listed here.  Changes which create B<new> files in F<t/> go here as do any
398 large changes to the testing harness (e.g. when parallel testing was added).
399 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
400 that they represent may be covered elsewhere.
401
402 [ List each test improvement as a =item entry ]
403
404 =over 4
405
406 =item *
407
408 XXX
409
410 =back
411
412 =head1 Platform Support
413
414 XXX Any changes to platform support should be listed in the sections below.
415
416 [ Within the sections, list each platform as a =item entry with specific
417 changes as paragraphs below it. ]
418
419 =head2 New Platforms
420
421 XXX List any platforms that this version of perl compiles on, that previous
422 versions did not.  These will either be enabled by new files in the F<hints/>
423 directories, or new subdirectories and F<README> files at the top level of the
424 source tree.
425
426 =over 4
427
428 =item XXX-some-platform
429
430 XXX
431
432 =back
433
434 =head2 Discontinued Platforms
435
436 XXX List any platforms that this version of perl no longer compiles on.
437
438 =over 4
439
440 =item XXX-some-platform
441
442 XXX
443
444 =back
445
446 =head2 Platform-Specific Notes
447
448 XXX List any changes for specific platforms.  This could include configuration
449 and compilation changes or changes in portability/compatibility.  However,
450 changes within modules for platforms should generally be listed in the
451 L</Modules and Pragmata> section.
452
453 =over 4
454
455 =item XXX-some-platform
456
457 XXX
458
459 =back
460
461 =head1 Internal Changes
462
463 XXX Changes which affect the interface available to C<XS> code go here.  Other
464 significant internal changes for future core maintainers should be noted as
465 well.
466
467 [ List each change as a =item entry ]
468
469 =over 4
470
471 =item *
472
473 C<sv_pos_b2u_flags> has been added to the API.  It is similar to
474 C<sv_pos_b2u>, but supports long strings on 64-bit platforms.
475
476 =item *
477
478 C<PL_exit_flags> can now be used by perl embedders or other XS code to
479 have perl warn or abort() on an attempted exit. [perl #52000]
480
481 =back
482
483 =head1 Selected Bug Fixes
484
485 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
486 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
487
488 [ List each fix as a =item entry ]
489
490 =over 4
491
492 =item *
493
494 Autovivifying a subroutine stub via C<\&$glob> started causing crashes in
495 Perl 5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar
496 that had had a glob assigned to it.  This has been fixed [perl #119051].
497
498 =item *
499
500 On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1
501 [perl #72766].
502
503 =item *
504
505 Perl used to leak an implementation detail when it came to referencing the
506 return values of certain operators.  C<for ($a+$b) { warn \$_; warn \$_ }>
507 used to display two different memory addresses, because the C<\> operator
508 was copying the variable.  Under threaded builds, it would also happen for
509 constants (C<for(1) { ... }>).  This has been fixed [perl #21979, #78194,
510 #89188, #109746, #114838, #115388].
511
512 =item *
513
514 The range operator C<..> was returning the same modifiable scalars with
515 each call, unless it was the only thing in a C<foreach> loop header.  This
516 meant that changes to values within the list returned would be visible the
517 next time the operator was executed [perl #3105].
518
519 =item *
520
521 Constant folding and subroutine inlining no longer cause operations that
522 would normally return new modifiable scalars to return read-only values
523 instead.
524
525 =item *
526
527 Closures of the form C<sub () { $some_variable }> are no longer inlined,
528 causing changes to the variable to be ignored by callers of the subroutine
529 [perl #79908].
530
531 =item *
532
533 Return values of certain operators such as C<ref> would sometimes be shared
534 between recursive calls to the same subroutine, causing the inner call to
535 modify the value returned by C<ref> in the outer call.  This has been
536 fixed.
537
538 =item *
539
540 C<__PACKAGE__> and constants returning a package name or hash key are now
541 consistently read-only.  In various previous Perl releases, they have
542 become mutable under certain circumstances.
543
544 =item *
545
546 C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored.  This has
547 been fixed [perl #118213].
548
549 =item *
550
551 Starting in v5.18.0, a construct like C</[#](?{})/x> would have its C<#>
552 incorrectly interpreted as a comment.  The code block would be skipped,
553 unparsed.  This has been corrected.
554
555 =item *
556
557 Starting in Perl 5.001, a regular expression like C</[#$a]/x> or
558 C</[#]$a/x> would have its C<#> incorrectly interpreted as a comment, so
559 the variable would not interpolate.  This has been corrected [perl #45667].
560
561 =item *
562
563 On non-threaded builds, setting C<${"_<filename"}> to a reference or
564 typeglob no longer causes C<__FILE__> and some error messages to produce a
565 corrupt string, and no longer prevents C<#line> directives in string evals
566 from providing the source lines to the debugger.  Threaded builds were
567 unaffected.
568
569 =item *
570
571 Enabling "used once" warnings no longer causes crashes on stash
572 circularities created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
573
574 =item *
575
576 Undef constants used in hash keys (C<use constant u => undef; $h{+u}>) no
577 longer produce "uninitialized" warnings at compile time.
578
579 =item *
580
581 Modifying a substitution target inside the substitution replacement no
582 longer causes crashes.
583
584 =item *
585
586 The first statement inside a string eval used to use the wrong pragma setting sometimes during constant folding.  C<eval 'uc chr 0xe0'> would randomly choose between Unicode, byte, and locale semantics.  This has been
587 fixed.
588
589 =item *
590
591 The handling of return values of @INC filters (subroutines returned by
592 subroutines in @INC) has been fixed in various ways.  Previously tied
593 variables were mishandled, and setting $_ to a reference or typeglob could
594 result in crashes.
595
596 =item *
597
598 The C<SvPVbyte> XS function has been fixed to work with tied scalars
599 returning something other than a string.  It used to return utf8 in those
600 cases where C<SvPV> would.
601
602 =item *
603
604 Perl 5.18.0 inadvertently made dereferenced regular expressions
605 S<(C<${ qr// }>)> false as booleans.  This has been fixed.
606
607 =item *
608
609 Perl 5.18.0 inadvertently made C<--> and C<++> crash on dereferenced
610 regular expressions, and stopped C<++> from flattening vstrings.
611
612 =item *
613
614 C<bless> no longer dies with "Can't bless non-reference value" if its first
615 argument is a tied reference.
616
617 =item *
618
619 C<reset> with an argument no longer skips copy-on-write scalars, regular
620 expressions, typeglob copies, and vstrings.  Also, when encountering those
621 or read-only values, it no longer skips any array or hash with the same
622 name.
623
624 =item *
625
626 C<reset> with an argument now skips scalars aliased to typeglobs
627 (C<for $z (*foo) { reset "z" }>).  Previously it would corrupt memory or
628 crash.
629
630 =item *
631
632 C<ucfirst> and C<lcfirst> were not respecting the bytes pragma.  This was a
633 regression from v5.12 [perl #117355].
634
635 =item *
636
637 The use of C<\G> in regular expressions, where it's not at the start of
638 the pattern, is now slightly less buggy (although it is still somewhat
639 problematic).
640
641 =item *
642
643 Where a regular expression included code blocks (C</(?{...})/>), and where
644 the use of constant overloading triggered a re-compilation of the code block,
645 the second compilation didn't see its outer lexical scope. This was a
646 regression in 5.18.0.
647
648 =back
649
650 =head1 Known Problems
651
652 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
653 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
654 platform specific bugs also go here.
655
656 [ List each fix as a =item entry ]
657
658 =over 4
659
660 =item *
661
662 XXX
663
664 =back
665
666 =head1 Obituary
667
668 XXX If any significant core contributor has died, we've added a short obituary
669 here.
670
671 =head1 Acknowledgements
672
673 XXX Generate this with:
674
675   perl Porting/acknowledgements.pl v5.19.2..HEAD
676
677 =head1 Reporting Bugs
678
679 If you find what you think is a bug, you might check the articles recently
680 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
681 http://rt.perl.org/perlbug/ .  There may also be information at
682 http://www.perl.org/ , the Perl Home Page.
683
684 If you believe you have an unreported bug, please run the L<perlbug> program
685 included with your release.  Be sure to trim your bug down to a tiny but
686 sufficient test case.  Your bug report, along with the output of C<perl -V>,
687 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
688
689 If the bug you are reporting has security implications, which make it
690 inappropriate to send to a publicly archived mailing list, then please send it
691 to perl5-security-report@perl.org.  This points to a closed subscription
692 unarchived mailing list, which includes all the core committers, who will be
693 able to help assess the impact of issues, figure out a resolution, and help
694 co-ordinate the release of patches to mitigate or fix the problem across all
695 platforms on which Perl is supported.  Please only use this address for
696 security issues in the Perl core, not for modules independently distributed on
697 CPAN.
698
699 =head1 SEE ALSO
700
701 The F<Changes> file for an explanation of how to view exhaustive details on
702 what changed.
703
704 The F<INSTALL> file for how to build Perl.
705
706 The F<README> file for general stuff.
707
708 The F<Artistic> and F<Copying> files for copyright information.
709
710 =cut