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