This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade HTTP::Tiny from version 0.34 o 0.35
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.19.4
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.19.3 release and the 5.19.4
13 release.
14
15 If you are upgrading from an earlier release such as 5.19.2, first read
16 L<perl5193delta>, which describes differences between 5.19.2 and 5.19.3.
17
18 =head1 Notice
19
20 XXX Any important notices here
21
22 =head1 Core Enhancements
23
24 XXX New core language features go here.  Summarize user-visible core language
25 enhancements.  Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
27
28 [ List each enhancement as a =head2 entry ]
29
30 =head1 Security
31
32 XXX Any security-related notices go here.  In particular, any security
33 vulnerabilities closed should be noted here rather than in the
34 L</Selected Bug Fixes> section.
35
36 [ List each security issue as a =head2 entry ]
37
38 =head1 Incompatible Changes
39
40 =head2 Locale decimal point character no longer leaks outside of
41 S<C<use locale>> scope (with the exception of C<$!>)
42
43 This is actually a bug fix, but some code has come to rely on the bug being
44 present, so this change is listed here.  The current locale that the program is
45 running under is not supposed to be visible to Perl code except within the
46 scope of a S<C<use locale>>.  However, until now under certain circumstances,
47 the character used for a decimal point (often a comma) leaked outside the
48 scope.
49
50 This continues the work released in Perl 5.19.1.  It turns out that that did
51 not catch all the leaks, including C<printf> and C<sprintf> not respecting
52 S<C<use locale>>.  If your code is affected by this change, simply add a
53 S<C<use locale>>.
54
55 Now, the only known place where C<'use locale'> is not respected is in the
56 stringification of L<$!|perlvar/$!>.
57
58 =head1 Deprecations
59
60 XXX Any deprecated features, syntax, modules etc. should be listed here.
61
62 =head2 Module removals
63
64 XXX Remove this section if inapplicable.
65
66 The following modules will be removed from the core distribution in a
67 future release, and will at that time need to be installed from CPAN.
68 Distributions on CPAN which require these modules will need to list them as
69 prerequisites.
70
71 The core versions of these modules will now issue C<"deprecated">-category
72 warnings to alert you to this fact.  To silence these deprecation warnings,
73 install the modules in question from CPAN.
74
75 Note that these are (with rare exceptions) fine modules that you are encouraged
76 to continue to use.  Their disinclusion from core primarily hinges on their
77 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
78 not usually on concerns over their design.
79
80 =over
81
82 XXX Note that deprecated modules should be listed here even if they are listed
83 as an updated module in the L</Modules and Pragmata> section.
84
85 =back
86
87 [ List each other deprecation as a =head2 entry ]
88
89 =head1 Performance Enhancements
90
91 =over 4
92
93 =item *
94
95 The trie performance enhancement for regular expressions has now been extended
96 to those compiled under C</iaa>.
97
98 =back
99
100 =head1 Modules and Pragmata
101
102 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
103 go here.  If Module::CoreList is updated, generate an initial draft of the
104 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
105 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
106 below.  A paragraph summary for important changes should then be added by hand.
107 In an ideal world, dual-life modules would have a F<Changes> file that could be
108 cribbed.
109
110 [ Within each section, list entries as a =item entry ]
111
112 =head2 New Modules and Pragmata
113
114 =over 4
115
116 =item *
117
118 XXX
119
120 =back
121
122 =head2 Updated Modules and Pragmata
123
124 =over 4
125
126 =item *
127
128 L<B> has been upgraded from version 1.45 to 1.46.
129
130 The fix for [perl #118525] introduced a regression in the behaviour of
131 C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on a
132 C<NULL> C<CvGV> to C<undef>.  C<B::CV::GV> again returns a C<B::SPECIAL>
133 object in this case. [perl #119351]
134
135 =item *
136
137 L<B::Concise> has been upgraded from version 0.98 to 0.99.
138
139 The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed.
140
141 =item *
142
143 L<Carp> has been upgraded from version 1.31 to 1.32.
144
145 =over 4
146
147 =item *
148
149 In stack traces, subroutine arguments that are strings are now quoted in a
150 consistent manner, regardless of what characters they contain and how they're
151 internally represented.
152
153 =item *
154
155 C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
156 C<overload> stash.
157
158 =item *
159
160 C<Carp> now avoids some unwanted Unicode warnings on older Perls.  This doesn't
161 affect behaviour with current Perl.
162
163 =item *
164
165 C<Carp::Heavy> detects version mismatch with C<Carp>, to give a good error
166 message if a current (stub) C<Carp::Heavy> gets loaded by an old C<Carp> that
167 expects C<Carp::Heavy> to provide subroutines.
168
169 =back
170
171 =item *
172
173 L<charnames> has been upgraded from version 1.38 to 1.39.
174
175 This module now works on EBCDIC platforms.
176
177 =item *
178
179 L<CPAN::Meta> has been upgraded from version 2.132140 to 2.132510.
180
181 No changes have been made to the installed code other than the version bump to
182 keep in sync with the latest CPAN release.
183
184 =item *
185
186 L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123.
187
188 No changes have been made to the installed code other than the version bump to
189 keep in sync with the latest CPAN release.
190
191 =item *
192
193 L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
194
195 This upgrade is part of a larger change to make the array interface 64-bit safe
196 by using SSize_t instead of I32 for array indices.
197
198 In addition, an EBCDIC fix has been applied.
199
200 =item *
201
202 L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
203
204 This upgrade is part of a larger change to preserve referential identity when
205 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
206 nonexistent array elements.
207
208 In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been
209 fixed.
210
211 =item *
212
213 L<DynaLoader> has been upgraded from version 1.19 to 1.20.
214
215 The documentation now makes it clear, as has always been the case, that
216 C<dl_unload_file> is only called automatically to unload all loaded shared
217 objects if the perl interpreter was built with the C macro
218 DL_UNLOAD_ALL_AT_EXIT defined.  Support for GNU DLD has also been removed.
219
220 =item *
221
222 L<Encode> has been upgraded from version 2.52 to 2.54.
223
224 An erroneous early return in C<decode_utf8> has been removed, and a bug in
225 C<_utf8_on> under COW has been fixed.
226
227 =item *
228
229 L<Exporter> has been upgraded from version 5.69 to 5.70.
230
231 A number of typos have been corrected in the documentation.
232
233 =item *
234
235 L<ExtUtils::CBuilder> has been upgraded from version 0.280205 to 0.280212.
236
237 No changes have been made to the installed code other than the version bump to
238 keep in sync with the latest CPAN release.
239
240 =item *
241
242 L<ExtUtils::Command> has been upgraded from version 1.17 to 1.18.
243
244 No changes have been made to the installed code other than the version bump to
245 keep in sync with the latest CPAN release.
246
247 =item *
248
249 L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76.
250
251 Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
252 full details.
253
254 =item *
255
256 L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.22.
257
258 No changes have been made to the installed code other than the version bump to
259 keep in sync with the latest CPAN release.
260
261 =item *
262
263 L<File::Glob> has been upgraded from version 1.20 to 1.21.
264
265 C<glob()> now warns in the context of C<use warnings "syscalls";> if the
266 supplied pattern has an internal NUL (C<"\0">) character.
267
268 =item *
269
270 L<HTTP::Tiny> has been upgraded from version 0.34 to 0.35.
271
272 Encoded data from C<post_form> now preserves term order if data is provided as
273 an array reference.  (They are still sorted for consistency if provided as a
274 hash reference.)
275
276 =item *
277
278 L<I18N::LangTags> has been upgraded from version 0.39 to 0.40.
279
280 Bosnian has now joined Croatian and Serbian in the lists of mutually
281 intelligible Slavic languages. [perl #72594]
282
283 =item *
284
285 L<IPC::Open3> has been upgraded from version 1.15 to 1.16.
286
287 This upgrade is part of a larger change to preserve referential identity when
288 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
289 nonexistent array elements.
290
291 =item *
292
293 L<Locale::Codes> has been upgraded from version 3.26 to 3.27.
294
295 New codes have been added and the (deprecated) set of FIPS-10 country codes has
296 been removed.
297
298 =item *
299
300 L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
301
302 Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more
303 consistent with other perl documentation. [perl #86686]
304
305 Added a bint() method for rounding towards zero. [perl #85296]
306
307 =item *
308
309 L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
310
311 This upgrade is part of a larger change to make the array interface 64-bit safe
312 by using SSize_t instead of I32 for array indices.
313
314 =item *
315
316 L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
317
318 The list of Perl versions covered has been updated.
319
320 =item *
321
322 L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58.
323
324 C<requires> has been made more robust. [cpan #83728]
325
326 =item *
327
328 L<Module::Metadata> has been upgraded from version 1.000014 to 1.000016.
329
330 The module's DESCRIPTION has been re-worded regarding safety/security to
331 satisfy CVE-2013-1437.
332
333 =item *
334
335 L<mro> has been upgraded from version 1.13 to 1.14.
336
337 This upgrade is part of a larger change to make the array interface 64-bit safe
338 by using SSize_t instead of I32 for array indices.
339
340 =item *
341
342 L<parent> has been upgraded from version 0.226 to 0.227.
343
344 No changes have been made to the installed code other than the version bump to
345 keep in sync with the latest CPAN release.
346
347 =item *
348
349 L<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407.
350
351 No changes have been made to the installed code other than the version bump to
352 keep in sync with the latest CPAN release.
353
354 =item *
355
356 L<Perl::OSType> has been upgraded from version 1.003 to 1.004.
357
358 The Unix OSType 'bitrig' has been added.
359
360 =item *
361
362 L<re> has been upgraded from version 0.25 to 0.26.
363
364 A function signature has been corrected in the XS implementation.
365
366 =item *
367
368 L<Scalar::Util> has been upgraded from version 1.31 to 1.32.
369
370 The documentation of C<blessed> has been improved to mention the fact that
371 package "0" is defined but false.
372
373 =item *
374
375 L<Socket> has been upgraded from version 2.011 to 2.012.
376
377 Syntax errors when building on the WinCE platform have been fixed. [cpan #87389]
378
379 =item *
380
381 L<Storable> has been upgraded from version 2.46 to 2.47.
382
383 This upgrade is part of a larger change to preserve referential identity when
384 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
385 nonexistent array elements.
386
387 =item *
388
389 L<Term::ReadLine> has been upgraded from version 1.10 to 1.14.
390
391 Term::ReadLine::EditLine support has been added.
392
393 =item *
394
395 L<Time::Piece> has been upgraded from version 1.22 to 1.23.
396
397 Day of year parsing (like "%y%j") has been fixed.
398
399 =item *
400
401 L<Unicode::Collate> has been upgraded from version 0.98 to 0.99.
402
403 By default, out-of-range values are replaced with C<U+FFFD> (REPLACEMENT
404 CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>=
405 20.  When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be
406 overridden.
407
408 =item *
409
410 L<Unicode::UCD> has been upgraded from version 0.53 to 0.54.
411
412 This module now works on EBCDIC platforms.
413
414 =item *
415
416 L<version> has been upgraded from version 0.9903 to 0.9904.
417
418 No changes have been made to the installed code other than the version bump to
419 keep in sync with the latest CPAN release.
420
421 =item *
422
423 L<warnings> has been upgraded from version 1.18 to 1.19.
424
425 The C<syscalls> warnings category has been added to check for embedded NUL
426 (C<"\0">) characters in pathnames and string arguments to other system calls.
427
428 =item *
429
430 L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
431
432 =back
433
434 =head2 Removed Modules and Pragmata
435
436 =over 4
437
438 =item *
439
440 XXX
441
442 =back
443
444 =head1 Documentation
445
446 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
447 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
448
449 =head2 New Documentation
450
451 XXX Changes which create B<new> files in F<pod/> go here.
452
453 =head3 L<XXX>
454
455 XXX Description of the purpose of the new file here
456
457 =head2 Changes to Existing Documentation
458
459 XXX Changes which significantly change existing files in F<pod/> go here.
460 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
461 section.
462
463 =head3 L<XXX>
464
465 =over 4
466
467 =item *
468
469 XXX Description of the change here
470
471 =back
472
473 =head1 Diagnostics
474
475 The following additions or changes have been made to diagnostic output,
476 including warnings and fatal error messages.  For the complete list of
477 diagnostic messages, see L<perldiag>.
478
479 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
480 include any changes in L<perldiag> that reconcile it to the C<C> code.
481
482 =head2 New Diagnostics
483
484 XXX Newly added diagnostic messages go under here, separated into New Errors
485 and New Warnings
486
487 =head3 New Errors
488
489 =over 4
490
491 =item *
492
493 XXX L<message|perldiag/"message">
494
495 =back
496
497 =head3 New Warnings
498
499 =over 4
500
501 =item *
502
503 L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
504
505 (W syscalls) Embedded \0 characters in pathnames or other system call arguments
506 produce a warning as of 5.20. The parts after the \0 were formerly ignored by
507 system calls.
508
509 =back
510
511 =head2 Changes to Existing Diagnostics
512
513 XXX Changes (i.e. rewording) of diagnostic messages go here
514
515 =over 4
516
517 =item *
518
519 Warnings and errors from the regexp engine are now UTF-8 clean
520
521 =item *
522
523 The "Unknown switch condition" error message has some slight changes.
524 This error triggers when there is an unknown condition in a (?(foo))
525 conditional; The error message used to read:
526
527     Unknown switch condition (?(%s in regex;
528
529 But what %s could be was mostly up to luck; For (?(foobar)), you
530 might've seen "fo" or "f".  For Unicode characters, you'd generally
531 get a corrupted string.
532 The message was changed to read:
533
534     Unknown switch condition (?(...)) in regex;
535
536 And additionally, the '<-- HERE' marker in the error will now point
537 to the correct spot in the regex.
538
539 =back
540
541 =head1 Utility Changes
542
543 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
544 Most of these are built within the directories F<utils> and F<x2p>.
545
546 [ List utility changes as a =head3 entry for each utility and =item
547 entries for each change
548 Use L<XXX> with program names to get proper documentation linking. ]
549
550 =head3 L<find2perl>
551
552 =over 4
553
554 =item *
555
556 L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
557
558 =back
559
560 =head1 Configuration and Compilation
561
562 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
563 go here.  Any other changes to the Perl build process should be listed here.
564 However, any platform-specific changes should be listed in the
565 L</Platform Support> section, instead.
566
567 [ List changes as a =item entry ].
568
569 =over 4
570
571 =item *
572
573 The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
574 avoids a race condition during parallel makes, which could cause the build to
575 fail.  This is the last known parallel make problem (on *nix platforms), and
576 therefore we believe that a parallel make should now always be error free.
577
578 =for comment
579
580 Strictly only for a build where build files such as F<Makefile.SH> have not
581 been updated by C<git> in an already configured and built tree.
582
583 =back
584
585 =head1 Testing
586
587 XXX Any significant changes to the testing of a freshly built perl should be
588 listed here.  Changes which create B<new> files in F<t/> go here as do any
589 large changes to the testing harness (e.g. when parallel testing was added).
590 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
591 that they represent may be covered elsewhere.
592
593 [ List each test improvement as a =item entry ]
594
595 =over 4
596
597 =item *
598
599 The test script F<t/bigmem/regexp.t> has been added to test that regular
600 expression matches on very large strings now succeed as expected.
601
602 =item *
603
604 Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
605 now tested by the new test script F<t/op/rt119311.t>.
606
607 =item *
608
609 The new test script F<t/win32/signal.t> tests that C<$!> and C<$^E> are now
610 preserved across signal handlers by the Win32 signal emulation code.
611
612 =item *
613
614 The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
615 program on platforms where it is practical to do so.
616
617 =back
618
619 =head1 Platform Support
620
621 XXX Any changes to platform support should be listed in the sections below.
622
623 [ Within the sections, list each platform as a =item entry with specific
624 changes as paragraphs below it. ]
625
626 =head2 New Platforms
627
628 XXX List any platforms that this version of perl compiles on, that previous
629 versions did not.  These will either be enabled by new files in the F<hints/>
630 directories, or new subdirectories and F<README> files at the top level of the
631 source tree.
632
633 =over 4
634
635 =item Bitrig
636
637 Compile support has been added for Bitrig, a fork of OpenBSD
638
639 =back
640
641 =head2 Discontinued Platforms
642
643 XXX List any platforms that this version of perl no longer compiles on.
644
645 Configure hints and conditional code for several very old platforms
646 has been removed.  We have not received reports for these in many years,
647 typically not since perl-5.6.0.
648
649 =over 4
650
651 =item AT&T 3b1
652
653 Configure support for the 3b1, also known as the AT&T Unix PC (and the
654 similar AT&T 7300), has been removed.
655
656 =back
657
658 =head2 Platform-Specific Notes
659
660 XXX List any changes for specific platforms.  This could include configuration
661 and compilation changes or changes in portability/compatibility.  However,
662 changes within modules for platforms should generally be listed in the
663 L</Modules and Pragmata> section.
664
665 =over 4
666
667 =item WinCE
668
669 The building of XS modules has largely been restored. Several still cannot
670 (yet) be built but it is now possible to build Perl on WinCE with only a couple
671 of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
672 incorporated soon.
673
674 =back
675
676 =head1 Internal Changes
677
678 XXX Changes which affect the interface available to C<XS> code go here.  Other
679 significant internal changes for future core maintainers should be noted as
680 well.
681
682 [ List each change as a =item entry ]
683
684 =over 4
685
686 =item *
687
688 The internal representation has changed for the match variables C<$1>, C<$2>
689 I<etc.>, C<$`>, C<$&>, C<$'>, C<${^PREMATCH}>, C<${^MATCH}> and
690 C<${^POSTMATCH>.  It uses slightly less memory, avoids string comparisons
691 and numeric conversions during lookup, and uses 23 fewer lines of C.  This
692 change should not affect any external code.
693
694 =back
695
696 =head1 Selected Bug Fixes
697
698 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
699 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
700
701 [ List each fix as a =item entry ]
702
703 =over 4
704
705 =item *
706
707 The value of C<$^E> is now saved across signal handlers on Win32. [perl #85104]
708
709 =back
710
711 =head1 Known Problems
712
713 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
714 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
715 platform specific bugs also go here.
716
717 [ List each fix as a =item entry ]
718
719 =over 4
720
721 =item *
722
723 XXX
724
725 =back
726
727 =head1 Obituary
728
729 XXX If any significant core contributor has died, we've added a short obituary
730 here.
731
732 =head1 Acknowledgements
733
734 XXX Generate this with:
735
736   perl Porting/acknowledgements.pl v5.19.3..HEAD
737
738 =head1 Reporting Bugs
739
740 If you find what you think is a bug, you might check the articles recently
741 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
742 http://rt.perl.org/perlbug/ .  There may also be information at
743 http://www.perl.org/ , the Perl Home Page.
744
745 If you believe you have an unreported bug, please run the L<perlbug> program
746 included with your release.  Be sure to trim your bug down to a tiny but
747 sufficient test case.  Your bug report, along with the output of C<perl -V>,
748 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
749
750 If the bug you are reporting has security implications, which make it
751 inappropriate to send to a publicly archived mailing list, then please send it
752 to perl5-security-report@perl.org.  This points to a closed subscription
753 unarchived mailing list, which includes all the core committers, who will be
754 able to help assess the impact of issues, figure out a resolution, and help
755 co-ordinate the release of patches to mitigate or fix the problem across all
756 platforms on which Perl is supported.  Please only use this address for
757 security issues in the Perl core, not for modules independently distributed on
758 CPAN.
759
760 =head1 SEE ALSO
761
762 The F<Changes> file for an explanation of how to view exhaustive details on
763 what changed.
764
765 The F<INSTALL> file for how to build Perl.
766
767 The F<README> file for general stuff.
768
769 The F<Artistic> and F<Copying> files for copyright information.
770
771 =cut