This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Move a pp_entereval comment where it belongs.
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
a3f52e2e
FC
3=for comment
4This has been completed up to 3ea0c5818 except for:
5a1da11a30dfa4f3543dcab00834ff535202f5085 (GNU/Hurd hints)
6
44691e6f
AB
7=head1 NAME
8
e3c71926
FR
9[ this is a template for a new perldelta file. Any text flagged as
10XXX needs to be processed before release. ]
11
12perldelta - what is new for perl v5.15.5
760696b8 13
5438d4b8 14=head1 DESCRIPTION
5cd408a2 15
e3c71926
FR
16This document describes differences between the 5.15.4 release and
17the 5.15.5 release.
5cd408a2 18
3432e5a1 19If you are upgrading from an earlier release such as 5.15.3, first read
e3c71926 20L<perl5154delta>, which describes differences between 5.15.3 and
3432e5a1 215.15.4.
062678b2 22
e3c71926 23=head1 Notice
d2006265 24
e3c71926 25XXX Any important notices here
3f728e2e 26
e3c71926 27=head1 Core Enhancements
6d110ad0 28
e3c71926
FR
29XXX New core language features go here. Summarise user-visible core language
30enhancements. Particularly prominent performance optimisations could go
31here, but most should go in the L</Performance Enhancements> section.
6d110ad0 32
a3f52e2e
FC
33=head2 C<$[> is back
34
35The C<$[> variable is back again, but is now implemented as a module, so
36programs that do not mention it (i.e., most of them), will not incur any
37run-time penalty. It is disabled in the scope of C<use v5.16>.
38
39XXX That last sentence is not true yet.
40
41The new implementation has some bug fixes. See L<arybase>.
6d110ad0 42
e3c71926 43=head1 Security
6d110ad0 44
e3c71926
FR
45XXX Any security-related notices go here. In particular, any security
46vulnerabilities closed should be noted here rather than in the
47L</Selected Bug Fixes> section.
6d110ad0 48
e3c71926 49[ List each security issue as a =head2 entry ]
6d110ad0 50
e3c71926 51=head1 Incompatible Changes
6d110ad0 52
e3c71926 53XXX For a release on a stable branch, this section aspires to be:
6d110ad0 54
e3c71926
FR
55 There are no changes intentionally incompatible with 5.XXX.XXX
56 If any exist, they are bugs and reports are welcome.
6d110ad0 57
e3c71926 58[ List each incompatible change as a =head2 entry ]
6d110ad0 59
e3c71926 60=head1 Deprecations
6d110ad0 61
e3c71926
FR
62XXX Any deprecated features, syntax, modules etc. should be listed here.
63In particular, deprecated modules should be listed here even if they are
64listed as an updated module in the L</Modules and Pragmata> section.
6d110ad0 65
e3c71926 66[ List each deprecation as a =head2 entry ]
6d110ad0 67
ae92a9ae
KW
68=head2 Don't read the Unicode data base files in F<lib/unicore>
69
70It is now deprecated to directly read the Unicode data base files.
71These are stored in the F<lib/unicore> directory. Instead, you should
72use the new functions in L<Unicode::UCD>. These provide a stable API,
73and give complete information. Perl may at some point in the future
74change or remove the files. The most likely of these files to be used
75is F<lib/unicore/ToDigit.pl>. L<Unicode::UCD/prop_invmap()> can be used
76to get at its data instead.
77
e3c71926 78=head1 Performance Enhancements
6d110ad0 79
e3c71926
FR
80XXX Changes which enhance performance without changing behaviour go here. There
81may well be none in a stable release.
6d110ad0 82
e3c71926 83[ List each enhancement as a =item entry ]
6d110ad0 84
e3c71926 85=over 4
6d110ad0
FC
86
87=item *
88
a3f52e2e
FC
89Due to changes in L<File::Glob>, Perl's C<glob> function and its
90C<< <...> >> equivalent are now much faster. The splitting of the pattern
91into words has been rewritten in C, resulting in speed-ups of 20% in some
92cases.
93
94This does not affect VMS, as it does not use File::Glob.
6d110ad0 95
e3c71926 96=back
6d110ad0 97
e3c71926 98=head1 Modules and Pragmata
6d110ad0 99
e3c71926
FR
100XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
101go here. If Module::CoreList is updated, generate an initial draft of the
102following sections using F<Porting/corelist-perldelta.pl>, which prints stub
103entries to STDOUT. Results can be pasted in place of the '=head2' entries
104below. A paragraph summary for important changes should then be added by hand.
105In an ideal world, dual-life modules would have a F<Changes> file that could be
106cribbed.
6d110ad0 107
e3c71926 108[ Within each section, list entries as a =item entry ]
6d110ad0 109
e3c71926 110=head2 New Modules and Pragmata
6d110ad0 111
e3c71926 112=over 4
6d110ad0
FC
113
114=item *
115
a3f52e2e 116L<arybase> -- this new module implements the C<$[> variable.
6d110ad0
FC
117
118=back
119
e3c71926 120=head2 Updated Modules and Pragmata
6d110ad0 121
e3c71926 122=over 4
6d110ad0
FC
123
124=item *
125
ac73ea1e
CBW
126L<Archive::Extract> has been upgraded from version 0.56 to version 0.58.
127
128=item *
129
a3f52e2e
FC
130L<B::Deparse> has been upgraded from version 1.08 to 1.08.
131
132It now correctly deparses C<CORE::do> and C<CORE::glob>.
133
134=item *
135
cc947deb 136L<CGI> has been upgraded from version 3.55 to version 3.58.
3e3c678a
CBW
137
138Use public and documented FCGI.pm API in CGI::Fast
139CGI::Fast was using an FCGI API that was deprecated and removed from
140documentation more than ten years ago. Usage of this deprecated API with
141FCGI >= 0.70 or FCGI <= 0.73 introduces a security issue.
142L<https://rt.cpan.org/Public/Bug/Display.html?id=68380>
143L<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-2766>
144
145=item *
146
00d0325c
CBW
147L<Compress::Raw::Bzip2> has been upgraded from version 2.037 to version 2.040.
148
149=item *
150
949ade47
CBW
151L<Compress::Raw::Zlib> has been upgraded from version 2.037 to version 2.040.
152
153=item *
154
ad4795e7
CBW
155L<Compress::Zlib> has been upgraded from version 2.037 to version 2.040.
156
157=item *
158
e6bd4dde
CBW
159L<CPANPLUS> has been upgraded from version 0.9111 to version 0.9112.
160
161=item *
162
aba0546e
CBW
163L<CPANPLUS::Dist::Build> has been upgraded from version 0.58 to version 0.60.
164
165=item *
166
a0780036
CBW
167L<Digest::SHA> has been upgraded from version 5.62 to version 5.63.
168
169Added code to allow very large data inputs all at once, which had previously been
170limited to several hundred megabytes at a time
171
172=item *
173
f3640611 174L<ExtUtils::MakeMaker> has been upgraded from version 6.61_01 to version 6.63_02.
00441cfa
CBW
175
176=item *
177
a3f52e2e
FC
178L<File::Glob> has been upgrade from version 1.13 to 1.14.
179
180It has a new C<:bsd_glob> export tag, intended to replace C<:glob>. Like
181C<:glob> it overrides C<glob> with a function that does not split the glob
182pattern into words, but, unlike C<:glob>, it iterates properly in scalar
183context, instead of returning the last file.
184
185There are other changes affecting Perl's own C<glob> operator (which uses
186File::Glob internally, except on VMS). See L</Performance Enhancements>
187and L</Selected Bug Fixes>.
188
189=item *
190
6ce52845 191L<HTTP::Tiny> has been upgraded from version 0.013 to version 0.016.
35265876
CBW
192
193Adds additional shorthand methods for all common HTTP verbs,
194a C<post_form()> method for POST-ing x-www-form-urlencoded data and
195a C<www_form_urlencode()> utility method.
6d110ad0 196
be539103
CBW
197=item *
198
199L<perlfaq> has been upgraded from version 5.0150035 to version 5.0150036.
200
a47fb3fe
CBW
201=item *
202
a3f52e2e
FC
203L<Socket> as been upgraded from version 1.94_01 to 1.94_02.
204
205It has new functions and constants for handling IPv6 sockets:
206
207 pack_ipv6_mreq
208 unpack_ipv6_mreq
209 IPV6_ADD_MEMBERSHIP
210 IPV6_DROP_MEMBERSHIP
211 IPV6_MTU
212 IPV6_MTU_DISCOVER
213 IPV6_MULTICAST_HOPS
214 IPV6_MULTICAST_IF
215 IPV6_MULTICAST_LOOP
216 IPV6_UNICAST_HOPS
217 IPV6_V6ONLY
218
219=item *
220
d88bd77a 221L<Unicode::Collate> has been upgraded from version 0.80 to version 0.84.
a47fb3fe 222
d88bd77a
CBW
223Locales updated to CLDR 2.0: mk, mt, nb, nn, ro, ru, sk, sr, sv, uk
224Newly supported locales: fa, ml, mr, or, pa, si, si__dictionary,
225sr_Latn, sv__reformed, ta, te, th, ur, wae.
a47fb3fe 226
7ef25837
KW
227=item *
228
229L<Unicode::UCD> has been upgraded from version 0.36 to version 0.37.
62b3b855 230This adds four new functions: C<prop_aliases()>, and
7ef25837 231C<prop_value_aliases()> which are used to find all the Unicode-approved
681d705c 232synonyms for property names, or to convert from one name to another;
62b3b855
KW
233C<prop_invlist> which returns all the code points matching a given
234Unicode binary property; and C<prop_invmap> which returns the complete
235specification of a given Unicode property.
7ef25837 236
e3c71926 237=back
6d110ad0 238
e3c71926 239=head2 Removed Modules and Pragmata
6d110ad0 240
e3c71926 241=over 4
6d110ad0
FC
242
243=item *
244
e3c71926 245XXX
6d110ad0 246
e3c71926 247=back
6d110ad0 248
e3c71926 249=head1 Documentation
6d110ad0 250
e3c71926
FR
251XXX Changes to files in F<pod/> go here. Consider grouping entries by
252file and be sure to link to the appropriate page, e.g. L<perlfunc>.
6d110ad0 253
e3c71926 254=head2 New Documentation
6d110ad0 255
e3c71926 256XXX Changes which create B<new> files in F<pod/> go here.
6d110ad0 257
e3c71926 258=head3 L<XXX>
6d110ad0 259
e3c71926 260XXX Description of the purpose of the new file here
6d110ad0 261
e3c71926 262=head2 Changes to Existing Documentation
6d110ad0 263
e3c71926
FR
264XXX Changes which significantly change existing files in F<pod/> go here.
265However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
266section.
6d110ad0 267
e3c71926
FR
268=head3 L<XXX>
269
270=over 4
6d110ad0
FC
271
272=item *
273
e3c71926 274XXX Description of the change here
6d110ad0
FC
275
276=back
277
e3c71926
FR
278=head1 Diagnostics
279
280The following additions or changes have been made to diagnostic output,
281including warnings and fatal error messages. For the complete list of
282diagnostic messages, see L<perldiag>.
6d110ad0 283
e3c71926
FR
284XXX New or changed warnings emitted by the core's C<C> code go here. Also
285include any changes in L<perldiag> that reconcile it to the C<C> code.
b53e16ae 286
e3c71926
FR
287[ Within each section, list entries as a =item entry that links to perldiag,
288 e.g.
b53e16ae 289
e3c71926 290 =item *
b53e16ae 291
e3c71926
FR
292 L<Invalid version object|perldiag/"Invalid version object">
293]
46dd4080 294
e3c71926 295=head2 New Diagnostics
46dd4080 296
e3c71926 297XXX Newly added diagnostic messages go here
46dd4080 298
e3c71926 299=head3 New Errors
d6cf2367 300
63ac71b9 301=over 4
e46d9735
CBW
302
303=item *
304
e3c71926 305XXX L<message|perldiag/"message">
828d6195 306
3432e5a1 307=back
83307084 308
e3c71926 309=head3 New Warnings
d39de893 310
3432e5a1 311=over 4
39afdc5a
CBW
312
313=item *
314
e3c71926 315XXX L<message|perldiag/"message">
666c7ca6 316
e3c71926 317=back
7b8e5ef0 318
e3c71926 319=head2 Changes to Existing Diagnostics
91710846 320
e3c71926 321XXX Changes (i.e. rewording) of diagnostic messages go here
91710846 322
e3c71926 323=over 4
91710846
DG
324
325=item *
326
e3c71926 327XXX Describe change here
a2fa999d 328
e3c71926 329=back
a2fa999d 330
e3c71926 331=head1 Utility Changes
19e72bbf 332
e3c71926
FR
333XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
334here. Most of these are built within the directories F<utils> and F<x2p>.
19e72bbf 335
e3c71926
FR
336[ List utility changes as a =head3 entry for each utility and =item
337entries for each change
338Use L<XXX> with program names to get proper documentation linking. ]
19e72bbf 339
e3c71926 340=head3 L<XXX>
bd65daab 341
e3c71926 342=over 4
bd65daab 343
3f2cb5bf
SM
344=item *
345
e3c71926 346XXX
f0381222 347
e3c71926 348=back
f0381222 349
e3c71926 350=head1 Configuration and Compilation
02e7ec6d 351
e3c71926
FR
352XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
353go here. Any other changes to the Perl build process should be listed here.
354However, any platform-specific changes should be listed in the
355L</Platform Support> section, instead.
02e7ec6d 356
e3c71926 357[ List changes as a =item entry ].
02e7ec6d 358
e3c71926 359=over 4
1e915955
CBW
360
361=item *
362
e3c71926 363XXX
3f2cb5bf 364
3432e5a1 365=back
666c7ca6 366
e3c71926 367=head1 Testing
8fe353ef 368
e3c71926
FR
369XXX Any significant changes to the testing of a freshly built perl should be
370listed here. Changes which create B<new> files in F<t/> go here as do any
371large changes to the testing harness (e.g. when parallel testing was added).
372Changes to existing files in F<t/> aren't worth summarising, although the bugs
373that they represent may be covered elsewhere.
7ac26854 374
e3c71926 375[ List each test improvement as a =item entry ]
daef35db 376
3432e5a1 377=over 4
83307084
SL
378
379=item *
380
e3c71926 381XXX
b420b12a 382
3432e5a1 383=back
b420b12a 384
e3c71926 385=head1 Platform Support
b53e16ae 386
e3c71926 387XXX Any changes to platform support should be listed in the sections below.
9eb1e3e2 388
e3c71926
FR
389[ Within the sections, list each platform as a =item entry with specific
390changes as paragraphs below it. ]
9eb1e3e2 391
e3c71926 392=head2 New Platforms
b53e16ae 393
e3c71926
FR
394XXX List any platforms that this version of perl compiles on, that previous
395versions did not. These will either be enabled by new files in the F<hints/>
396directories, or new subdirectories and F<README> files at the top level of the
397source tree.
b53e16ae
FC
398
399=over 4
400
e3c71926 401=item XXX-some-platform
b53e16ae 402
e3c71926 403XXX
b53e16ae
FC
404
405=back
406
e3c71926 407=head2 Discontinued Platforms
83307084 408
e3c71926 409XXX List any platforms that this version of perl no longer compiles on.
3432e5a1 410
d6cf2367
FC
411=over 4
412
e3c71926 413=item XXX-some-platform
d6cf2367 414
e3c71926 415XXX
c634fdd3 416
3432e5a1 417=back
9cfd094e 418
e3c71926
FR
419=head2 Platform-Specific Notes
420
421XXX List any changes for specific platforms. This could include configuration
422and compilation changes or changes in portability/compatibility. However,
423changes within modules for platforms should generally be listed in the
424L</Modules and Pragmata> section.
9cfd094e 425
3432e5a1 426=over 4
95f7e41f 427
e3c71926 428=item XXX-some-platform
95f7e41f 429
e3c71926 430XXX
df5b44bd 431
63ac71b9 432=back
310913d4 433
3432e5a1 434=head1 Internal Changes
d6cf2367 435
e3c71926
FR
436XXX Changes which affect the interface available to C<XS> code go here.
437Other significant internal changes for future core maintainers should
438be noted as well.
5d4ff231 439
e3c71926 440[ List each change as a =item entry ]
6d110ad0 441
e3c71926 442=over 4
b53e16ae
FC
443
444=item *
445
a3f52e2e 446C<PL_curstash> is now reference-counted.
b53e16ae 447
3432e5a1 448=back
60092ce4 449
3432e5a1 450=head1 Selected Bug Fixes
309aab3a 451
e3c71926
FR
452XXX Important bug fixes in the core language are summarised here.
453Bug fixes in files in F<ext/> and F<lib/> are best summarised in
454L</Modules and Pragmata>.
19e72bbf 455
e3c71926 456[ List each fix as a =item entry ]
19e72bbf 457
e3c71926 458=over 4
b53e16ae
FC
459
460=item *
461
a3f52e2e
FC
462Perl now holds an extra reference count on the package that code is
463currently compiling in. This means that the following code no longer crashes [perl #101486]:
464
465 package Foo;
466 BEGIN {*Foo:: = *Bar::}
467 sub foo;
468
469=item *
470
471F<dumpvar.pl>, and consequently the C<x> command in the debugger, have been
472fixed to handle objects blessed into classes whose names contain "=". The
473contents of such objects used not to be dumped [perl #101814].
474
475=item *
476
477The C<x> repetition operator no longer crashes on 64-bit builds with large
478repeate counts [perl #94560].
479
480=item *
481
482A fix to C<glob> under miniperl (used to configure modules when perl itself
483is built) in Perl 5.15.3 stopped C<< <~> >> from returning the home
484directory, because it cleared %ENV before calling csh. Now C<$ENV{HOME}>
485is preserved. This fix probably does not affect anything. If
486L<File::Glob> fails to load for some reason, Perl reverts to using csh.
487So it would apply in that case.
488
489=item *
490
491On OSes other than VMS, Perl's C<glob> operator (and the C<< <...> >> form)
492use L<File::Glob> underneath. L<File::Glob> splits the pattern into words,
493before feeding each word to its C<bsd_glob> function.
494
495There were several inconsistencies in the way the split was done. Now
496quotation marks (' and ") are always treated as shell-style word delimiters
497(that allow whitespace as part of a word) and backslashes are always
498preserved, unless they exist to escape quotation marks. Before, those
499would only sometimes be the case, depending on whether the pattern
500contained whitespace. Also, escaped whitespace at the end of the pattern
501is no longer stripped.
502
503=item *
504
505C<CORE::glob> now works as a way to call the default globbing function. It
506used to respect overrides, despite the C<CORE::> prefix.
507
508=item *
509
510In 5.14, C</[[:lower:]]/i> and C</[[:upper:]]/i> no longer matched the
511opposite case. This has been fixed [perl #101970].
512
513=item *
514
515A regular expression match with an overloaded object on the right-hand side
516would in some cases stringify the object too many times.
517
518=item *
519
520The C-level C<pregcomp> function could become confused as to whether the
521pattern was in UTF8 if the pattern was an overloaded, tied, or otherwise
522magical scalar [perl #101940].
ca955add 523
bbdd8bad
KW
524=item *
525
526A regression has been fixed that was introduced in 5.14, in C</i>
527regular expression matching, in which a match improperly fails if the
528pattern is in UTF-8, the target string is not, and a Latin-1 character
529precedes a character in the string that should match the pattern. [perl
530#101710]
531
e3c71926 532=back
ca955add 533
e3c71926 534=head1 Known Problems
b53e16ae 535
e3c71926
FR
536XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
537tests that had to be C<TODO>ed for the release would be noted here, unless
538they were specific to a particular platform (see below).
b53e16ae 539
e3c71926
FR
540This is a list of some significant unfixed bugs, which are regressions
541from either 5.XXX.XXX or 5.XXX.XXX.
b53e16ae 542
e3c71926 543[ List each fix as a =item entry ]
b53e16ae 544
e3c71926 545=over 4
b53e16ae
FC
546
547=item *
548
e3c71926 549XXX
b53e16ae 550
63ac71b9 551=back
bbc28bfc 552
e3c71926 553=head1 Obituary
a777c865 554
e3c71926
FR
555XXX If any significant core contributor has died, we've added a short obituary
556here.
a777c865 557
e3c71926 558=head1 Acknowledgements
a777c865 559
e3c71926 560XXX Generate this with:
a777c865 561
e3c71926 562 perl Porting/acknowledgements.pl v5.15.4..HEAD
29cf780c 563
44691e6f
AB
564=head1 Reporting Bugs
565
566If you find what you think is a bug, you might check the articles
34dc2ec0 567recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
568bug database at http://rt.perl.org/perlbug/ . There may also be
569information at http://www.perl.org/ , the Perl Home Page.
570
571If you believe you have an unreported bug, please run the L<perlbug>
572program included with your release. Be sure to trim your bug down
573to a tiny but sufficient test case. Your bug report, along with the
574output of C<perl -V>, will be sent off to perlbug@perl.org to be
575analysed by the Perl porting team.
576
577If the bug you are reporting has security implications, which make it
578inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 579it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
580unarchived mailing list, which includes
581all the core committers, who will be able
44691e6f
AB
582to help assess the impact of issues, figure out a resolution, and help
583co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
584platforms on which Perl is supported. Please only use this address for
585security issues in the Perl core, not for modules independently
44691e6f
AB
586distributed on CPAN.
587
588=head1 SEE ALSO
589
590The F<Changes> file for an explanation of how to view exhaustive details
591on what changed.
592
593The F<INSTALL> file for how to build Perl.
594
595The F<README> file for general stuff.
596
597The F<Artistic> and F<Copying> files for copyright information.
598
599=cut