This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add Vernon Lyon to AUTHORS
[perl5.git] / pod / perldelta.pod
CommitLineData
4c793fe3
FR
1=encoding utf8
2
3=head1 NAME
4
ee0887a9
SH
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
4c793fe3 7
ee0887a9 8perldelta - what is new for perl v5.13.6
4c793fe3 9
ee0887a9 10=head1 DESCRIPTION
0c692eed 11
ee0887a9
SH
12This document describes differences between the 5.13.5 release and
13the 5.13.6 release.
0c692eed 14
ee0887a9
SH
15If you are upgrading from an earlier release such as 5.13.4, first read
16L<perl5135delta>, which describes differences between 5.13.4 and
175.13.5.
0c692eed 18
ee0887a9 19=head1 Notice
0c692eed 20
ee0887a9 21XXX Any important notices here
4c793fe3 22
ee0887a9 23=head1 Core Enhancements
85318b69 24
ee0887a9
SH
25XXX New core language features go here. Summarise user-visible core language
26enhancements. Particularly prominent performance optimisations could go
27here, but most should go in the L</Performance Enhancements> section.
85318b69 28
ee0887a9 29[ List each enhancement as a =head2 entry ]
85318b69 30
fb85c044
KW
31=head2 C<(?^...)> regex construct added to signify default modifiers
32
33A caret (also called a "cirumflex accent") C<"^"> immediately following
34a C<"(?"> in a regular expression now means that the subexpression is to
35not inherit the surrounding modifiers such as C</i>, but to revert to the
36Perl defaults. Any modifiers following the caret override the defaults.
37
38The stringification of regular expressions now uses this notation. The
39main purpose of this is to allow tests that rely on the stringification
40to not have to change when new modifiers are added. See
41L<perlre/Extended Patterns>.
42
9de15fec
KW
43=head2 C<"d">, C<"l">, and C<"u"> regex modifiers added
44
45These modifiers are currently only available within a C<(?...)> construct.
46
47The C<"l"> modifier says to compile the regular expression as if it were
48in the scope of C<use locale>, even if it is not.
49
50The C<"u"> modifier currently does nothing.
51
52The C<"d"> modifier is used in the scope of C<use locale> to compile the
53regular expression as if it were not in that scope.
54See L<perlre/(?dlupimsx-imsx)>.
55
fb121860
KW
56=head2 C<\N{...}> now handles Unicode named character sequences
57
58Unicode has a number of named character sequences, in which particular sequences
59of code points are given names. C<\N{...}> now recognizes these.
60See L<charnames>.
61
62=head2 New function C<charnames::string_vianame()>
63
64This function is a run-time version of C<\N{...}>, returning the string
65of characters whose Unicode name is its parameter. It can handle
66Unicode named character sequences, whereas the pre-existing
67C<charnames::vianame()> cannot, as the latter returns a single code
68point.
69See L<charnames>.
70
ee0887a9 71=head1 Security
85318b69 72
ee0887a9
SH
73XXX Any security-related notices go here. In particular, any security
74vulnerabilities closed should be noted here rather than in the
75L</Selected Bug Fixes> section.
85318b69 76
ee0887a9 77[ List each security issue as a =head2 entry ]
4c793fe3
FR
78
79=head1 Incompatible Changes
80
fb85c044
KW
81=head2 Stringification of regexes has changed
82
83Default regular expression modifiers are now notated by using
84C<(?^...)>. Code relying on the old stringification will fail. The
85purpose of this is so that when new modifiers are added, such code will
8477b9ba
KW
86not have to change (after this one time), as the stringification will
87automatically incorporate the new modifiers.
fb85c044
KW
88
89Code that needs to work properly with both old- and new-style regexes
e23837fb 90can avoid the whole issue by using (for Perls since 5.9.5):
8477b9ba
KW
91
92 use re qw(regexp_pattern);
93 my ($pat, $mods) = regexp_pattern($re_ref);
94
95where C<$re_ref> is a reference to a compiled regular expression. Upon
96return, C<$mods> will be a string containing all the non-default
97modifiers used when the regular expression was compiled, and C<$pattern>
98the actual pattern.
99
e23837fb
KW
100If the actual stringification is important, or older Perls need to be
101supported, you can use something like the following:
fb85c044
KW
102
103 # Accept both old and new-style stringification
104 my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? '^' : '-xism';
44428a46 105
fb85c044 106And then use C<$modifiers> instead of C<-xism>.
44428a46 107
9de15fec
KW
108=head2 Regular expressions retain their localeness when interpolated
109
110Regular expressions compiled under C<"use locale"> now retain this when
111interpolated into a new regular expression compiled outside a
112C<"use locale">, and vice-versa.
113
114Previously, a regular expression interpolated into another one inherited
115the localeness of the surrounding one, losing whatever state it
116originally had. This is considered a bug fix, but may trip up code that
117has come to rely on the incorrect behavior.
118
ee0887a9 119[ List each incompatible change as a =head2 entry ]
4c793fe3
FR
120
121=head1 Deprecations
122
ee0887a9
SH
123XXX Any deprecated features, syntax, modules etc. should be listed here.
124In particular, deprecated modules should be listed here even if they are
125listed as an updated module in the L</Modules and Pragmata> section.
85318b69 126
ee0887a9 127[ List each deprecation as a =head2 entry ]
4c793fe3
FR
128
129=head1 Performance Enhancements
130
ee0887a9
SH
131XXX Changes which enhance performance without changing behaviour go here. There
132may well be none in a stable release.
4c793fe3 133
ee0887a9 134[ List each enhancement as a =item entry ]
4c793fe3 135
ee0887a9 136=over 4
4c793fe3 137
e2babdfb
FR
138=item *
139
ee0887a9 140XXX
e2babdfb 141
4c793fe3
FR
142=back
143
144=head1 Modules and Pragmata
145
ee0887a9
SH
146XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
147go here. If Module::CoreList is updated, generate an initial draft of the
148following sections using F<Porting/corelist-perldelta.pl>, which prints stub
149entries to STDOUT. Results can be pasted in place of the '=head2' entries
150below. A paragraph summary for important changes should then be added by hand.
151In an ideal world, dual-life modules would have a F<Changes> file that could be
152cribbed.
fc1418b7 153
ee0887a9 154[ Within each section, list entries as a =item entry ]
df91fef1 155
ee0887a9 156=head2 New Modules and Pragmata
ccb45ef4 157
ee0887a9 158=over 4
df91fef1 159
ee0887a9 160=item *
df91fef1 161
ee0887a9 162XXX
e2babdfb 163
ee0887a9 164=back
e2babdfb 165
ee0887a9 166=head2 Updated Modules and Pragmata
fc1418b7 167
ee0887a9 168=over 4
fc1418b7 169
ee0887a9 170=item *
e2babdfb 171
62d37bf0
FR
172C<Digest::MD5> has been upgraded from version 2.40 to 2.50.
173
174It is now safe to use this module in combination with threads.
175
176=item *
177
f5b89942
FC
178C<File::DosGlob> has been upgraded from version 1.02 to 1.03.
179
180It allows patterns containing literal parentheses (they no longer need to
181be escaped). On Windows, it no longer adds an extra F<./> to the file names
182returned when the pattern is a relative glob with a drive specification,
6481ebaf
FC
183like F<c:*.pl>
184L<[perl #71712]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71712>.
f5b89942
FC
185
186=item *
187
4d1599c3
FC
188C<File::Find> has been upgraded from version 1.17 to 1.18.
189
190It improves handling of backslashes on Windows, so that paths such as
6481ebaf
FC
191F<c:\dir\/file> are no longer generated
192L<[perl #71710]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
4d1599c3
FC
193
194=item *
195
f1c82292
CBW
196C<if> has been upgraded from version 0.05 to 0.06
197
198=item *
199
9607a449
FC
200C<Locale::Maketext> has been upgraded from version 1.15 to 1.16.
201
202It fixes an infinite loop in C<Locale::Maketext::Guts::_compile()> when
203working with tainted values
204(L<CPAN RT #40727|https://rt.cpan.org/Public/Bug/Display.html?id=40727>).
205
206=item *
207
de0e3ce7
FR
208C<NEXT> has been upgraded from version 0.64 to 0.65.
209
210=item *
211
1c2dcb3e
CBW
212C<PathTools> has been upgraded from version 3.31_01 to 3.33.
213
214=item *
215
6481ebaf
FC
216C<sigtrap> has been upgraded from version 1.04 to 1.05.
217
218It no longer tries to modify read-only arguments when generating a
219backtrace
220L<[perl #72340]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72340>.
221
222=item *
223
1393fe00
CBW
224C<Unicode::Collate> has been upgraded from version 0.59 to 0.60
225
226=item *
227
1c2dcb3e 228C<Unicode::Normalize> has been upgraded from version 1.06 to 1.07
c9a84c8b 229
ee0887a9 230=back
c9a84c8b 231
ee0887a9 232=head2 Removed Modules and Pragmata
c9a84c8b 233
ee0887a9 234=over 4
4c793fe3 235
ee0887a9 236=item *
48c1efd2 237
ee0887a9 238XXX
4c793fe3
FR
239
240=back
241
242=head1 Documentation
243
ee0887a9
SH
244XXX Changes to files in F<pod/> go here. Consider grouping entries by
245file and be sure to link to the appropriate page, e.g. L<perlfunc>.
4c793fe3 246
ee0887a9 247=head2 New Documentation
4c793fe3 248
ee0887a9 249XXX Changes which create B<new> files in F<pod/> go here.
4c793fe3 250
ee0887a9 251=head3 L<XXX>
4c793fe3 252
ee0887a9 253XXX Description of the purpose of the new file here
4c793fe3 254
ee0887a9 255=head2 Changes to Existing Documentation
fc1418b7 256
ee0887a9
SH
257XXX Changes which significantly change existing files in F<pod/> go here.
258However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
259section.
fc1418b7 260
ee0887a9 261=head3 L<XXX>
e2babdfb 262
7bc3efda
SH
263=over 4
264
265=item *
266
a7e93501
FC
267The documentation for the C<SvTRUE> macro was simply wrong in stating that
268get-magic is not processed. It has been corrected.
7bc3efda
SH
269
270=back
e2babdfb 271
4c793fe3
FR
272=head1 Diagnostics
273
274The following additions or changes have been made to diagnostic output,
275including warnings and fatal error messages. For the complete list of
276diagnostic messages, see L<perldiag>.
277
ee0887a9
SH
278XXX New or changed warnings emitted by the core's C<C> code go here. Also
279include any changes in L<perldiag> that reconcile it to the C<C> code.
4c793fe3 280
ee0887a9 281[ Within each section, list entries as a =item entry ]
4c793fe3 282
ee0887a9 283=head2 New Diagnostics
4c793fe3 284
ee0887a9 285XXX Newly added diagnostic messages go here
fc1418b7 286
ee0887a9 287=over 4
fc1418b7
SH
288
289=item *
290
ee0887a9 291XXX
ebce6c40 292
4c793fe3
FR
293=back
294
ee0887a9 295=head2 Changes to Existing Diagnostics
4c793fe3 296
ee0887a9 297XXX Changes (i.e. rewording) of diagnostic messages go here
4c793fe3
FR
298
299=over 4
300
301=item *
302
ee0887a9 303XXX
4c793fe3
FR
304
305=back
306
ee0887a9 307=head1 Utility Changes
4c793fe3 308
ee0887a9
SH
309XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
310here. Most of these are built within the directories F<utils> and F<x2p>.
4c793fe3 311
ee0887a9
SH
312[ List utility changes as a =head3 entry for each utility and =item
313entries for each change
314Use L<XXX> with program names to get proper documentation linking. ]
fc1418b7 315
ee0887a9 316=head3 L<XXX>
fc1418b7 317
ee0887a9 318=over 4
4c793fe3 319
44428a46
FC
320=item *
321
ee0887a9 322XXX
44428a46 323
4c793fe3
FR
324=back
325
ee0887a9 326=head1 Configuration and Compilation
4c793fe3 327
ee0887a9
SH
328XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
329go here. Any other changes to the Perl build process should be listed here.
330However, any platform-specific changes should be listed in the
331L</Platform Support> section, instead.
4c793fe3 332
ee0887a9 333[ List changes as a =item entry ].
4c793fe3 334
0c692eed
FR
335=over 4
336
337=item *
338
ee0887a9 339XXX
0c692eed
FR
340
341=back
4c793fe3 342
ee0887a9 343=head1 Testing
0c692eed 344
ee0887a9
SH
345XXX Any significant changes to the testing of a freshly built perl should be
346listed here. Changes which create B<new> files in F<t/> go here as do any
347large changes to the testing harness (e.g. when parallel testing was added).
348Changes to existing files in F<t/> aren't worth summarising, although the bugs
349that they represent may be covered elsewhere.
0c692eed 350
ee0887a9 351[ List each test improvement as a =item entry ]
0c692eed 352
ee0887a9 353=over 4
0c692eed
FR
354
355=item *
356
ee0887a9 357XXX
4c793fe3
FR
358
359=back
360
ee0887a9 361=head1 Platform Support
4c793fe3 362
ee0887a9 363XXX Any changes to platform support should be listed in the sections below.
4c793fe3 364
ee0887a9
SH
365[ Within the sections, list each platform as a =item entry with specific
366changes as paragraphs below it. ]
4c793fe3 367
ee0887a9 368=head2 New Platforms
0c692eed 369
ee0887a9
SH
370XXX List any platforms that this version of perl compiles on, that previous
371versions did not. These will either be enabled by new files in the F<hints/>
372directories, or new subdirectories and F<README> files at the top level of the
373source tree.
0c692eed 374
ee0887a9 375=over 4
0c692eed 376
ee0887a9 377=item XXX-some-platform
0c692eed 378
ee0887a9 379XXX
0c692eed 380
ee0887a9 381=back
0c692eed 382
ee0887a9 383=head2 Discontinued Platforms
4c793fe3 384
ee0887a9 385XXX List any platforms that this version of perl no longer compiles on.
8ebb9810 386
ee0887a9 387=over 4
8ebb9810 388
ee0887a9 389=item XXX-some-platform
48c1efd2 390
ee0887a9 391XXX
48c1efd2 392
ee0887a9 393=back
44428a46 394
ee0887a9 395=head2 Platform-Specific Notes
44428a46 396
ee0887a9
SH
397XXX List any changes for specific platforms. This could include configuration
398and compilation changes or changes in portability/compatibility. However,
399changes within modules for platforms should generally be listed in the
400L</Modules and Pragmata> section.
f4beb78f 401
ee0887a9 402=over 4
f4beb78f 403
ee0887a9 404=item XXX-some-platform
ccb45ef4 405
ee0887a9 406XXX
ccb45ef4 407
ee0887a9 408=back
85318b69 409
ee0887a9 410=head1 Internal Changes
85318b69 411
ee0887a9
SH
412XXX Changes which affect the interface available to C<XS> code go here.
413Other significant internal changes for future core maintainers should
414be noted as well.
85318b69 415
ee0887a9 416[ List each test improvement as a =item entry ]
80b6a949 417
ee0887a9 418=over 4
80b6a949 419
e2babdfb
FR
420=item *
421
a5763045
FC
422See L</Regular expressions retain their localeness when interpolated>,
423above.
e2babdfb 424
a7e93501
FC
425=item *
426
427The C<sv_cmp_flags>, C<sv_cmp_locale_flags>, C<sv_eq_flags> and
428C<sv_collxfrm_flags> functions have been added. These are like their
429non-_flags counterparts, but allow one to specify whether get-magic is
430processed.
431
432The C<sv_cmp>, C<sv_cmp_locale>, C<sv_eq> and C<sv_collxfrm> functions have
433been replaced with wrappers around the new functions.
434
435=item *
436
437A new C<sv_2bool_flags> function has been added.
438
439This is like C<sv_2bool>, but it lets the calling code decide whether
440get-magic is handled. C<sv_2bool> is now a macro that calls the new
441function.
442
443=item *
444
445A new macro, C<SvTRUE_nomg>, has been added.
446
447This is like C<SvTRUE>, except that it does not process magic. It uses the
448new C<sv_2bool_flags> function.
449
450=item *
451
452C<sv_catsv_flags> no longer calls C<mg_get> on its second argument (the
453source string) if the flags passed to it do not include SV_GMAGIC. So it
454now matches what the documentation says it does.
455
ee0887a9 456=back
e2babdfb 457
ee0887a9 458=head1 Selected Bug Fixes
e2babdfb 459
ee0887a9
SH
460XXX Important bug fixes in the core language are summarised here.
461Bug fixes in files in F<ext/> and F<lib/> are best summarised in
462L</Modules and Pragmata>.
e2babdfb 463
ee0887a9 464[ List each fix as a =item entry ]
346e4e56 465
ee0887a9 466=over 4
346e4e56 467
78846812
FR
468=item *
469
4e9f151b
FC
470A regular expression match in the right-hand side of a global substitution
471(C<s///g>) that is in the same scope will no longer cause match variables
472to have the wrong values on subsequent iterations. This can happen when an
e54f3f30
FC
473array or hash subscript is interpolated in the right-hand side, as in
474C<s|(.)|@a{ print($1), /./ }|g>
475L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>.
476
477=item *
478
479Constant-folding used to cause
480
481 $text =~ ( 1 ? /phoo/ : /bear/)
482
483to turn into
484
485 $text =~ /phoo/
486
487at compile time. Now it correctly matches against C<$_>
488L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>.
78846812 489
a5763045
FC
490=item *
491
492Parsing Perl code (either with string C<eval> or by loading modules) from
493within a C<UNITCHECK> block no longer causes the interpreter to crash
494L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>.
495
5a9a79a4
FC
496=item *
497
498When C<-d> is used on the shebang (C<#!>) line, the debugger now has access
499to the lines of the main program. In the past, this sometimes worked and
500sometimes did not, depending on what order things happened to be arranged
b45e2413
FC
501in memory
502L<[perl #71806]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71806>.
5a9a79a4 503
a7e93501
FC
504=item *
505
506The C<y///> or C<tr///> operator now calls get-magic (e.g., the C<FETCH>
507method of a tie) on its left-hand side just once, not twice
508L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
509
510=item *
511
512String comparison (C<eq>, C<ne>, C<lt>, C<gt>, C<le>, C<ge> and
513C<cmp>) and logical not (C<not> and C<!>) operators no longer call magic
514(e.g., tie methods) twice on their operands
515L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
516
517This bug was introduced in an earlier 5.13 release, and does not affect
518perl 5.12.
519
520=item *
521
522When a tied (or other magic) variable is used as, or in, a regular
523expression, it no longer has its C<FETCH> method called twice
524L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
525
526This bug was introduced in an earlier 5.13 release, and does not affect
527perl 5.12.
528
4c793fe3
FR
529=back
530
962fbe1d
SH
531=head1 Known Problems
532
ee0887a9
SH
533XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
534tests that had to be C<TODO>ed for the release would be noted here, unless
535they were specific to a particular platform (see below).
962fbe1d 536
ee0887a9
SH
537This is a list of some significant unfixed bugs, which are regressions
538from either 5.XXX.XXX or 5.XXX.XXX.
962fbe1d 539
ee0887a9
SH
540[ List each fix as a =item entry ]
541
542=over 4
08d032c0
SH
543
544=item *
545
ee0887a9 546XXX
962fbe1d
SH
547
548=back
549
ee0887a9 550=head1 Obituary
4c793fe3 551
ee0887a9
SH
552XXX If any significant core contributor has died, we've added a short obituary
553here.
0195fb5f 554
405fd67e
DG
555=head1 Errata
556
557=over 4
558
559=item *
560
561Fixed a typo in L<perl5135delta> regarding array slices and smart matching
562
563=back
564
ee0887a9 565=head1 Acknowledgements
0195fb5f 566
ee0887a9 567XXX The list of people to thank goes here.
4c793fe3
FR
568
569=head1 Reporting Bugs
570
571If you find what you think is a bug, you might check the articles
572recently posted to the comp.lang.perl.misc newsgroup and the perl
573bug database at http://rt.perl.org/perlbug/ . There may also be
574information at http://www.perl.org/ , the Perl Home Page.
575
576If you believe you have an unreported bug, please run the B<perlbug>
577program included with your release. Be sure to trim your bug down
578to a tiny but sufficient test case. Your bug report, along with the
579output of C<perl -V>, will be sent off to perlbug@perl.org to be
580analysed by the Perl porting team.
581
582If the bug you are reporting has security implications, which make it
583inappropriate to send to a publicly archived mailing list, then please send
ee0887a9 584it to perl5-security-report@perl.org. This points to a closed subscription
4c793fe3
FR
585unarchived mailing list, which includes all the core committers, who be able
586to help assess the impact of issues, figure out a resolution, and help
587co-ordinate the release of patches to mitigate or fix the problem across all
ee0887a9 588platforms on which Perl is supported. Please only use this address for
4c793fe3
FR
589security issues in the Perl core, not for modules independently
590distributed on CPAN.
591
592=head1 SEE ALSO
593
594The F<Changes> file for an explanation of how to view exhaustive details
595on what changed.
596
597The F<INSTALL> file for how to build Perl.
598
599The F<README> file for general stuff.
600
601The F<Artistic> and F<Copying> files for copyright information.
602
603=cut