This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlfunc: clarify kill()'s return value
[perl5.git] / pod / perl5193delta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perl5193delta - what is new for perl v5.19.3
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.19.2 release and the 5.19.3
10 release.
11
12 If you are upgrading from an earlier release such as 5.19.1, first read
13 L<perl5192delta>, which describes differences between 5.19.1 and 5.19.2.
14
15 =head1 Core Enhancements
16
17 =head2 B<-F> now implies B<-a> and B<-a> implies B<-n>
18
19 Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or B<-p>
20 was a no-op, with this change, if you supply B<-F> then both B<-a> and B<-n>
21 are implied and if you supply B<-a> then B<-n> is implied.
22
23 You can still use B<-p> for its extra behaviour. [perl #116190]
24
25 =head1 Security
26
27 =head2 Avoid possible read of free()d memory during parsing
28
29 It was possible that free()d memory could be read during parsing in the unusual
30 circumstance of the Perl program ending with a heredoc and the last line of the
31 file on disk having no terminating newline character.  This has now been fixed.
32
33 =head1 Performance Enhancements
34
35 =over 4
36
37 =item *
38
39 A performance regression introduced in Perl 5.11.2 in non-Unicode
40 case-insensitive pattern matching has been largely resolved.  In particular,
41 the disabled optimization is now restored for every ASCII-range character.
42 [perl #107816]
43
44 =back
45
46 =head1 Modules and Pragmata
47
48 =head2 Updated Modules and Pragmata
49
50 =over 4
51
52 =item *
53
54 L<B> has been upgraded from version 1.44 to 1.45.
55
56 Calling the C<GV> method on C<B::CV> objects created from a lexical sub would
57 return nonsense, possibly crashing perl.  C<GV> now returns C<undef> for
58 lexical subs. [perl #118525]
59
60 Added the C<NAME_HEK> method to return the name of a lexical sub.
61
62 =item *
63
64 L<bignum> has been upgraded from version 0.33 to 0.36.
65
66 L<bigrat> wasn't correctly updating an internal variable when C<use>d with a
67 C<lib> option.
68
69 =item *
70
71 L<Carp> has been upgraded from 1.30 to 1.31
72
73 L<Carp> now handles objects with string overloads.  It also allows objects to
74 specify how they appear in the stack dump with a C<CARP_TRACE> method, and also
75 allows the user to specify their own formatter for objects without
76 C<CARP_TRACE> as well as other references. [perl #92446]
77
78 =item *
79
80 L<Compress::Raw::Bzip2> has been upgraded from 2.061 to 2.062.
81
82 No changes have been made other than the version bump to keep in sync with
83 other related modules.
84
85 =item *
86
87 L<Compress::Raw::Zlib> has been upgraded from 2.061 to 2.062.
88
89 A minor typo has been fixed in the documentation.
90
91 =item *
92
93 L<Config::Perl::V> has been upgraded from version 0.18 to 0.19.
94
95 The list of build options has been updated.
96
97 =item *
98
99 L<constant> has been upgraded from version 1.27 to 1.28.
100
101 Note that list constants will be inlined and may be read-only in future Perl
102 versions.
103
104 =item *
105
106 L<CPAN::Meta> has been upgraded from version 2.131560 to 2.132140.
107
108 Some documentation typos have been fixed.
109
110 =item *
111
112 L<Data::Dumper> has been upgraded from version 2.147 to 2.148.
113
114 The compatibility of the XS implementation with the pure perl version under
115 C<Useqq> has been improved. [perl #118933]
116
117 =item *
118
119 L<DB> has been upgraded from 1.41 to 1.42.
120
121 The Perl debugger no longer crashes with C<PERLDB_OPTS="noTTY frame=2">.
122
123 =item *
124
125 L<Devel::Peek> has been upgraded from version 1.12 to 1.13.
126
127 C<SvREFCNT_inc> and C<SvREFCNT_dec> have been removed and C<SvREFCNT> will now
128 work on non-scalars. [perl #117793]
129
130 C<Dump> now checks its arguments at compile time.  Both arguments are now
131 evaluated in scalar context, with exceptions for @arrays and %hashes, allowing
132 aggregates to be dumped directly.  The first argument is evaluated in rvalue
133 scalar context, allowing rvalue C<pos> and C<substr> to be dumped.
134
135 C<fill_mstats> no longer crashes if its argument is not already a string.
136 [perl #92260]
137
138 =item *
139
140 L<Devel::PPPort> has been upgraded from version 3.20 to 3.21.
141
142 Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
143 full details.
144
145 =item *
146
147 L<diagnostics> has been upgraded from version 1.31 to 1.32.
148
149 Wrapped links are no longer truncated.
150
151 =item *
152
153 L<DynaLoader> has been upgraded from version 1.18 to 1.19.
154
155 The $dl_dlext variable is now documented.
156
157 =item *
158
159 L<Encode> has been upgraded from version 2.51 to 2.52.
160
161 Encoding "0" with MIME-Headers no longer gets a blank string.
162
163 =item *
164
165 L<English> has been upgraded from version 1.07 to 1.08.
166
167 The documentation of a performance fix has been corrected.
168
169 =item *
170
171 L<Exporter> has been upgraded from version 5.68 to 5.69.
172
173 L<Exporter> would ignore custom $SIG{__WARN__} handlers in C<Exporter::Heavy>.
174 [perl #39739]
175
176 =item *
177
178 L<ExtUtils::MakeMaker> has been upgraded from 6.68 to 6.72.
179
180 The C<dist> target now reports the file created, an infinite loop in
181 C<clean_subdirs> has been fixed, an invisible interactive question is now
182 avoided when rebuilding Makefile, issues with F</cygdrive> on Cygwin have been
183 resolved, C<LD> and C<OPTIMIZE> are now used in recursive F<Makefile.PL>
184 invocations, C<VERSION> and C<VERSION_FROM> now handle v-strings correctly, and
185 control characters are now stripped from C<ABSTRACT>.
186
187 =item *
188
189 L<File::Spec> has been upgraded from 3.41 to 3.44.
190
191 The module is now partly implemented in XS, for performance.
192
193 =item *
194
195 L<Getopt::Std> has been upgraded from version 1.09 to 1.10.
196
197 Clarified documentation of what happens when a switch is expecting an argument
198 but fails to be provided with one.
199
200 =item *
201
202 The IO-Compress module collection has been upgraded from 2.061 to 2.062.
203
204 Some documentation typos have been fixed.
205
206 =item *
207
208 L<IPC::Cmd> has been upgraded from version 0.82 to 0.84.
209
210 C<run_forked> has various fixes/improvements, L<Socket> is only used where
211 needed and a regression introduced in 0.78 has been fixed.
212
213 =item *
214
215 L<IPC::Open3> has been upgraded from version 1.14 to 1.15.
216
217 C<open3> would leak a zombie process if the child process I/O redirection or
218 C<exec> failed. [perl #114722]
219
220 =item *
221
222 L<IPC::SysV> has been upgraded from version 2.03 to 2.04.
223
224 $EXPORT_TAGS{all} has been added and a couple of typos have been fixed.
225
226 =item *
227
228 The libnet module collection has been upgraded from version 1.22 to 1.23.
229
230 Numerous bug fixes and documentation improvements have been made.  See the
231 F<Changes> file for full details.
232
233 =item *
234
235 L<List::Util> has been upgraded from version 1.27 to 1.31.
236
237 L<List::Util> now includes C<pairgrep>, C<pairmap>, C<pairs>, C<pairkeys>,
238 C<pairvalues> and C<pairfirst> functions that operate on even-sized lists of
239 pairs.
240
241 =item *
242
243 L<Module::Build> has been upgraded from 0.4005 to 0.4007.
244
245 The test suite has been significantly sped up, Unicode man page support has
246 been enhanced and hash argument parsing in subclasses has been fixed.
247
248 =item *
249
250 L<Module::CoreList> has been upgraded from 2.92 to 2.97.
251
252 The list of Perl versions covered has been updated.
253
254 =item *
255
256 L<mro> has been upgraded from version 1.12 to 1.13.
257
258 A minor typo has been fixed in the documentation.
259
260 =item *
261
262 L<parent> has been upgraded from version 0.225 to 0.226.
263
264 Internal changes only have been made to the test suite.
265
266 =item *
267
268 L<PerlIO> has been upgraded from version 1.07 to 1.08.
269
270 Although not a security vulnerability, it was possible to inject code via
271 C<PerlIO-E<gt>import()>.  This has now been fixed. [perl #119287]
272
273 =item *
274
275 L<Pod::Functions> has been upgraded from version 1.07 to 1.08.
276
277 Internal changes only have been made to the test suite.
278
279 =item *
280
281 L<Socket> has been upgraded from version 2.010 to 2.011.
282
283 Handle FreeBSD (or other platforms) returning shorter AF_UNIX sockaddr
284 structures due to embedded sun_len. [cpan #86613]
285
286 =item *
287
288 L<Storable> has been upgraded from version 2.45 to 2.46.
289
290 Avoid creating temporary objects for STORABLE_attach when they aren't required.
291 [perl #118907]
292
293 =item *
294
295 L<Time::HiRes> has been upgraded from version 1.9725 to 1.9726.
296
297 An C<lstat> function is now provided and various bugs have been fixed.  See the
298 F<Changes> file for full details.
299
300 =item *
301
302 L<Time::Piece> has been upgraded from version 1.21 to 1.22.
303
304 A minor documentation encoding problem has been fixed.
305
306 =item *
307
308 L<utf8> has been upgraded from version 1.12 to 1.13.
309
310 A minor clarification has been made in the documentation.
311
312 =item *
313
314 L<version> has been upgraded from version 0.9902 to 0.9903.
315
316 Various installation, testing and documentation changes have been made.
317
318 =back
319
320 =head1 Documentation
321
322 =head2 Changes to Existing Documentation
323
324 =head3 L<perlfunc>
325
326 =over 4
327
328 =item *
329
330 The documentation of C<ref> has been updated to recommend the use of
331 C<blessed>, C<isa> and C<reftype> when dealing with references to blessed
332 objects.
333
334 =back
335
336 =head3 L<perlguts>
337
338 =over 4
339
340 =item *
341
342 The explanation of the use of the C<SVs_PADMY> and C<SVs_PADTMP> flags in
343 determining whether an SV lives on a scratchpad has been clarified.
344
345 =back
346
347 =head3 L<perlopentut>
348
349 =over 4
350
351 =item *
352
353 The C<open> tutorial has been completely rewritten by Tom Christiansen, and now
354 focuses on covering only the basics, rather than providing a comprehensive
355 reference to all things openable.  This rewrite came as the result of a
356 vigorous discussion on perl5-porters kicked off by a set of improvements
357 written by Alexander Hartmaier to the existing L<perlopentut>.  A "more than
358 you ever wanted to know about C<open>" document may follow in subsequent
359 versions of perl.
360
361 =back
362
363 =head3 L<perlre>
364
365 =over 4
366
367 =item *
368
369 The C</r> modifier (for non-destructive substitution) is now documented. [perl
370 #119151]
371
372 =back
373
374 =head3 L<perlsub>
375
376 =over 4
377
378 =item *
379
380 The need to predeclare recursive functions with prototypes in order for the
381 prototype to be honoured in the recursive call is now documented. [perl #2726]
382
383 =back
384
385 =head3 L<perlvar>
386
387 =over 4
388
389 =item *
390
391 A new section explaining the performance issues of $`, $& and $', including
392 workarounds and changes in different versions of Perl, has been added.
393
394 =back
395
396 =head3 L<perlxs>
397
398 =over 4
399
400 =item *
401
402 Several problems in the C<MY_CXT> example have been fixed.
403
404 =back
405
406 =head1 Diagnostics
407
408 The following additions or changes have been made to diagnostic output,
409 including warnings and fatal error messages.  For the complete list of
410 diagnostic messages, see L<perldiag>.
411
412 =head2 New Diagnostics
413
414 =head3 New Errors
415
416 =over 4
417
418 =item *
419
420 L<Magical list constants are not supported|perldiag/"Magical list constants are
421 not supported">
422
423 (F) You assigned a magical array to a stash element, and then tried to use the
424 subroutine from the same slot.  You are asking Perl to do something it cannot
425 do, details subject to change between Perl versions.
426
427 =back
428
429 =head3 New Warnings
430
431 =over 4
432
433 =item *
434
435 L<Argument "%s" treated as 0 in increment (++)|perldiag/"Argument "%s" treated
436 as 0 in increment (++)">
437
438 (W numeric) The indicated string was fed as an argument to the C<++> operator
439 which expects either a number or a string matching C</^[a-zA-Z]*[0-9]*\z/>.
440 See L<perlop/Auto-increment and Auto-decrement> for details.
441
442 =item *
443
444 L<Unexpected exit %u|perldiag/"Unexpected exit %u">
445
446 (S) exit() was called or the script otherwise finished gracefully when
447 C<PERL_EXIT_WARN> was set in C<PL_exit_flags>.
448
449 =item *
450
451 L<Unexpected exit failure %u|perldiag/"Unexpected exit failure %u">
452
453 (S) An uncaught die() was called when C<PERL_EXIT_WARN> was set in
454 C<PL_exit_flags>.
455
456 =back
457
458 =head1 Testing
459
460 =over 4
461
462 =item *
463
464 The behaviour of C<pos> on very large strings is now tested in the new test
465 script F<t/bigmem/pos.t>.
466
467 =item *
468
469 The test script F<t/porting/ss_dup.t> has been created to test that ss_dup()
470 handles all savestack items.
471
472 =item *
473
474 The new behaviour of B<-F> and B<-a> (see the L</Core Enhancements> section) is
475 tested in the new test script F<t/run/switchF2.t>.
476
477 =back
478
479 =head1 Internal Changes
480
481 =over 4
482
483 =item *
484
485 C<sv_pos_b2u_flags> has been added to the API.  It is similar to C<sv_pos_b2u>,
486 but supports long strings on 64-bit platforms.
487
488 =item *
489
490 C<PL_exit_flags> can now be used by perl embedders or other XS code to have
491 perl C<warn> or C<abort> on an attempted exit. [perl #52000]
492
493 =back
494
495 =head1 Selected Bug Fixes
496
497 =over 4
498
499 =item *
500
501 Autovivifying a subroutine stub via C<\&$glob> started causing crashes in Perl
502 5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar that had
503 had a glob assigned to it.  This has been fixed. [perl #119051]
504
505 =item *
506
507 On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1.
508 [perl #72766]
509
510 =item *
511
512 Perl used to leak an implementation detail when it came to referencing the
513 return values of certain operators.  C<for ($a+$b) { warn \$_; warn \$_ }> used
514 to display two different memory addresses, because the C<\> operator was
515 copying the variable.  Under threaded builds, it would also happen for
516 constants (C<for(1) { ... }>).  This has been fixed. [perl #21979, #78194,
517 #89188, #109746, #114838, #115388]
518
519 =item *
520
521 The range operator C<..> was returning the same modifiable scalars with each
522 call, unless it was the only thing in a C<foreach> loop header.  This meant
523 that changes to values within the list returned would be visible the next time
524 the operator was executed. [perl #3105]
525
526 =item *
527
528 Constant folding and subroutine inlining no longer cause operations that would
529 normally return new modifiable scalars to return read-only values instead.
530
531 =item *
532
533 Closures of the form C<sub () { $some_variable }> are no longer inlined,
534 causing changes to the variable to be ignored by callers of the subroutine.
535 [perl #79908]
536
537 =item *
538
539 Return values of certain operators such as C<ref> would sometimes be shared
540 between recursive calls to the same subroutine, causing the inner call to
541 modify the value returned by C<ref> in the outer call.  This has been fixed.
542
543 =item *
544
545 C<__PACKAGE__> and constants returning a package name or hash key are now
546 consistently read-only.  In various previous Perl releases, they have become
547 mutable under certain circumstances.
548
549 =item *
550
551 C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored.  This has been
552 fixed. [perl #118213]
553
554 =item *
555
556 Starting in Perl 5.18.0, a construct like C</[#](?{})/x> would have its C<#>
557 incorrectly interpreted as a comment.  The code block would be skipped,
558 unparsed.  This has been corrected.
559
560 =item *
561
562 Starting in Perl 5.001, a regular expression like C</[#$a]/x> or C</[#]$a/x>
563 would have its C<#> incorrectly interpreted as a comment, so the variable would
564 not interpolate.  This has been corrected. [perl #45667]
565
566 =item *
567
568 On non-threaded builds, setting C<${"_E<lt>filename"}> to a reference or
569 typeglob no longer causes C<__FILE__> and some error messages to produce a
570 corrupt string, and no longer prevents C<#line> directives in string evals from
571 providing the source lines to the debugger.  Threaded builds were unaffected.
572
573 =item *
574
575 Enabling "used once" warnings no longer causes crashes on stash circularities
576 created at compile time (C<*Foo::Bar::Foo:: = *Foo::>).
577
578 =item *
579
580 Undef constants used in hash keys (C<use constant u =E<gt> undef; $h{+u}>) no
581 longer produce "uninitialized" warnings at compile time.
582
583 =item *
584
585 Modifying a substitution target inside the substitution replacement no longer
586 causes crashes.
587
588 =item *
589
590 The first statement inside a string eval used to use the wrong pragma setting
591 sometimes during constant folding.  C<eval 'uc chr 0xe0'> would randomly choose
592 between Unicode, byte, and locale semantics.  This has been fixed.
593
594 =item *
595
596 The handling of return values of @INC filters (subroutines returned by
597 subroutines in @INC) has been fixed in various ways.  Previously tied variables
598 were mishandled, and setting $_ to a reference or typeglob could result in
599 crashes.
600
601 =item *
602
603 The C<SvPVbyte> XS function has been fixed to work with tied scalars returning
604 something other than a string.  It used to return utf8 in those cases where
605 C<SvPV> would.
606
607 =item *
608
609 Perl 5.18.0 inadvertently made dereferenced regular expressions
610 S<(C<${ qr// }>)> false as booleans.  This has been fixed.
611
612 =item *
613
614 Perl 5.18.0 inadvertently made C<--> and C<++> crash on dereferenced regular
615 expressions, and stopped C<++> from flattening vstrings.
616
617 =item *
618
619 C<bless> no longer dies with "Can't bless non-reference value" if its first
620 argument is a tied reference.
621
622 =item *
623
624 C<reset> with an argument no longer skips copy-on-write scalars, regular
625 expressions, typeglob copies, and vstrings.  Also, when encountering those or
626 read-only values, it no longer skips any array or hash with the same name.
627
628 =item *
629
630 C<reset> with an argument now skips scalars aliased to typeglobs
631 (C<for $z (*foo) { reset "z" }>).  Previously it would corrupt memory or crash.
632
633 =item *
634
635 C<ucfirst> and C<lcfirst> were not respecting the bytes pragma.  This was a
636 regression from Perl 5.12. [perl #117355]
637
638 =item *
639
640 The use of C<\G> in regular expressions, where it's not at the start of the
641 pattern, is now slightly less buggy (although it is still somewhat
642 problematic).
643
644 =item *
645
646 Where a regular expression included code blocks (C</(?{...})/>), and where the
647 use of constant overloading triggered a re-compilation of the code block, the
648 second compilation didn't see its outer lexical scope.  This was a regression
649 in Perl 5.18.0.
650
651 =item *
652
653 Changes to C<UNIVERSAL::DESTROY> now update DESTROY caches in all classes,
654 instead of causing classes that have already had objects destroyed to continue
655 using the old sub.  This was a regression in Perl 5.18. [perl #114864]
656
657 =item *
658
659 All known false-positive occurrences of the deprecation warning "Useless use of
660 '\'; doesn't escape metacharacter '%c'", added in Perl 5.18.0, have been
661 removed. [perl #119101]
662
663 =back
664
665 =head1 Acknowledgements
666
667 Perl 5.19.3 represents approximately 4 weeks of development since Perl 5.19.2
668 and contains approximately 24,000 lines of changes across 710 files from 36
669 authors.
670
671 Perl continues to flourish into its third decade thanks to a vibrant community
672 of users and developers.  The following people are known to have contributed
673 the improvements that became Perl 5.19.3:
674
675 Alexander Voronov, Andy Dougherty, Aristotle Pagaltzis, Brendan Byrd, Chris
676 'BinGOs' Williams, Colin Kuskie, Craig A. Berry, Daniel Dragan, Darin McBride,
677 David Mitchell, Father Chrysostomos, H.Merijn Brand, James E Keenan, John
678 Gardiner Myers, John Peacock, Karl Williamson, Lukas Mai, Marcus
679 Holland-Moritz, Nathan Trapuzzano, Neil Bowers, Nicholas Clark, Peter Martini,
680 Philip Boulain, Ricardo Signes, Sergey Alekseev, Shlomi Fish, Smylers, Steffen
681 Müller, Steve Hay, Tom Christiansen, Tony Cook, Victor Efimov, Viktor Turskyi,
682 Vladimir Timofeev, Yves Orton, Zefram.
683
684 The list above is almost certainly incomplete as it is automatically generated
685 from version control history.  In particular, it does not include the names of
686 the (very much appreciated) contributors who reported issues to the Perl bug
687 tracker.
688
689 Many of the changes included in this version originated in the CPAN modules
690 included in Perl's core.  We're grateful to the entire CPAN community for
691 helping Perl to flourish.
692
693 For a more complete list of all of Perl's historical contributors, please see
694 the F<AUTHORS> file in the Perl source distribution.
695
696 =head1 Reporting Bugs
697
698 If you find what you think is a bug, you might check the articles recently
699 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
700 http://rt.perl.org/perlbug/ .  There may also be information at
701 http://www.perl.org/ , the Perl Home Page.
702
703 If you believe you have an unreported bug, please run the L<perlbug> program
704 included with your release.  Be sure to trim your bug down to a tiny but
705 sufficient test case.  Your bug report, along with the output of C<perl -V>,
706 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
707
708 If the bug you are reporting has security implications, which make it
709 inappropriate to send to a publicly archived mailing list, then please send it
710 to perl5-security-report@perl.org.  This points to a closed subscription
711 unarchived mailing list, which includes all the core committers, who will be
712 able to help assess the impact of issues, figure out a resolution, and help
713 co-ordinate the release of patches to mitigate or fix the problem across all
714 platforms on which Perl is supported.  Please only use this address for
715 security issues in the Perl core, not for modules independently distributed on
716 CPAN.
717
718 =head1 SEE ALSO
719
720 The F<Changes> file for an explanation of how to view exhaustive details on
721 what changed.
722
723 The F<INSTALL> file for how to build Perl.
724
725 The F<README> file for general stuff.
726
727 The F<Artistic> and F<Copying> files for copyright information.
728
729 =cut