This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Make gv.t pass on systems that do not support -T $glob with stdio
[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
e2941eb0
FC
172C<Data::Dumper> has been upgraded from version 2.128 to 2.129.
173
174C<Dumpxs> no longer crashes with globs returned by C<*$io_ref>
175L<[perl #72332]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72332>.
176
177=item *
178
62d37bf0
FR
179C<Digest::MD5> has been upgraded from version 2.40 to 2.50.
180
181It is now safe to use this module in combination with threads.
182
183=item *
184
f5b89942
FC
185C<File::DosGlob> has been upgraded from version 1.02 to 1.03.
186
187It allows patterns containing literal parentheses (they no longer need to
188be escaped). On Windows, it no longer adds an extra F<./> to the file names
189returned when the pattern is a relative glob with a drive specification,
6481ebaf
FC
190like F<c:*.pl>
191L<[perl #71712]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71712>.
f5b89942
FC
192
193=item *
194
4d1599c3
FC
195C<File::Find> has been upgraded from version 1.17 to 1.18.
196
197It improves handling of backslashes on Windows, so that paths such as
6481ebaf
FC
198F<c:\dir\/file> are no longer generated
199L<[perl #71710]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
4d1599c3
FC
200
201=item *
202
f1c82292
CBW
203C<if> has been upgraded from version 0.05 to 0.06
204
205=item *
206
25e68b8b
FC
207C<IPC::Open3> has been upgraded from version 1.06 to 1.07.
208
209The internal C<xclose> routine now knows how to handle file descriptors, as
210documented, so duplicating STDIN in a child process using its file
211descriptor now works
212L<[perl #76474]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
213
214=item *
215
9607a449
FC
216C<Locale::Maketext> has been upgraded from version 1.15 to 1.16.
217
218It fixes an infinite loop in C<Locale::Maketext::Guts::_compile()> when
219working with tainted values
220(L<CPAN RT #40727|https://rt.cpan.org/Public/Bug/Display.html?id=40727>).
221
222=item *
223
de0e3ce7
FR
224C<NEXT> has been upgraded from version 0.64 to 0.65.
225
226=item *
227
1c2dcb3e
CBW
228C<PathTools> has been upgraded from version 3.31_01 to 3.33.
229
230=item *
231
6481ebaf
FC
232C<sigtrap> has been upgraded from version 1.04 to 1.05.
233
234It no longer tries to modify read-only arguments when generating a
235backtrace
236L<[perl #72340]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72340>.
237
238=item *
239
1393fe00
CBW
240C<Unicode::Collate> has been upgraded from version 0.59 to 0.60
241
242=item *
243
1c2dcb3e 244C<Unicode::Normalize> has been upgraded from version 1.06 to 1.07
c9a84c8b 245
ee0887a9 246=back
c9a84c8b 247
ee0887a9 248=head2 Removed Modules and Pragmata
c9a84c8b 249
ee0887a9 250=over 4
4c793fe3 251
ee0887a9 252=item *
48c1efd2 253
ee0887a9 254XXX
4c793fe3
FR
255
256=back
257
258=head1 Documentation
259
ee0887a9
SH
260XXX Changes to files in F<pod/> go here. Consider grouping entries by
261file and be sure to link to the appropriate page, e.g. L<perlfunc>.
4c793fe3 262
ee0887a9 263=head2 New Documentation
4c793fe3 264
ee0887a9 265XXX Changes which create B<new> files in F<pod/> go here.
4c793fe3 266
ee0887a9 267=head3 L<XXX>
4c793fe3 268
ee0887a9 269XXX Description of the purpose of the new file here
4c793fe3 270
ee0887a9 271=head2 Changes to Existing Documentation
fc1418b7 272
ee0887a9
SH
273XXX Changes which significantly change existing files in F<pod/> go here.
274However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
275section.
fc1418b7 276
ee0887a9 277=head3 L<XXX>
e2babdfb 278
7bc3efda
SH
279=over 4
280
281=item *
282
a7e93501
FC
283The documentation for the C<SvTRUE> macro was simply wrong in stating that
284get-magic is not processed. It has been corrected.
7bc3efda
SH
285
286=back
e2babdfb 287
4c793fe3
FR
288=head1 Diagnostics
289
290The following additions or changes have been made to diagnostic output,
291including warnings and fatal error messages. For the complete list of
292diagnostic messages, see L<perldiag>.
293
ee0887a9
SH
294XXX New or changed warnings emitted by the core's C<C> code go here. Also
295include any changes in L<perldiag> that reconcile it to the C<C> code.
4c793fe3 296
ee0887a9 297[ Within each section, list entries as a =item entry ]
4c793fe3 298
ee0887a9 299=head2 New Diagnostics
4c793fe3 300
ee0887a9 301XXX Newly added diagnostic messages go here
fc1418b7 302
ee0887a9 303=over 4
fc1418b7
SH
304
305=item *
306
ee0887a9 307XXX
ebce6c40 308
4c793fe3
FR
309=back
310
ee0887a9 311=head2 Changes to Existing Diagnostics
4c793fe3 312
ee0887a9 313XXX Changes (i.e. rewording) of diagnostic messages go here
4c793fe3
FR
314
315=over 4
316
317=item *
318
ee0887a9 319XXX
4c793fe3
FR
320
321=back
322
ee0887a9 323=head1 Utility Changes
4c793fe3 324
ee0887a9
SH
325XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
326here. Most of these are built within the directories F<utils> and F<x2p>.
4c793fe3 327
ee0887a9
SH
328[ List utility changes as a =head3 entry for each utility and =item
329entries for each change
330Use L<XXX> with program names to get proper documentation linking. ]
fc1418b7 331
ee0887a9 332=head3 L<XXX>
fc1418b7 333
ee0887a9 334=over 4
4c793fe3 335
44428a46
FC
336=item *
337
ee0887a9 338XXX
44428a46 339
4c793fe3
FR
340=back
341
ee0887a9 342=head1 Configuration and Compilation
4c793fe3 343
ee0887a9
SH
344XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
345go here. Any other changes to the Perl build process should be listed here.
346However, any platform-specific changes should be listed in the
347L</Platform Support> section, instead.
4c793fe3 348
ee0887a9 349[ List changes as a =item entry ].
4c793fe3 350
0c692eed
FR
351=over 4
352
353=item *
354
ee0887a9 355XXX
0c692eed
FR
356
357=back
4c793fe3 358
ee0887a9 359=head1 Testing
0c692eed 360
ee0887a9
SH
361XXX Any significant changes to the testing of a freshly built perl should be
362listed here. Changes which create B<new> files in F<t/> go here as do any
363large changes to the testing harness (e.g. when parallel testing was added).
364Changes to existing files in F<t/> aren't worth summarising, although the bugs
365that they represent may be covered elsewhere.
0c692eed 366
ee0887a9 367[ List each test improvement as a =item entry ]
0c692eed 368
ee0887a9 369=over 4
0c692eed
FR
370
371=item *
372
ee0887a9 373XXX
4c793fe3
FR
374
375=back
376
ee0887a9 377=head1 Platform Support
4c793fe3 378
ee0887a9 379XXX Any changes to platform support should be listed in the sections below.
4c793fe3 380
ee0887a9
SH
381[ Within the sections, list each platform as a =item entry with specific
382changes as paragraphs below it. ]
4c793fe3 383
ee0887a9 384=head2 New Platforms
0c692eed 385
ee0887a9
SH
386XXX List any platforms that this version of perl compiles on, that previous
387versions did not. These will either be enabled by new files in the F<hints/>
388directories, or new subdirectories and F<README> files at the top level of the
389source tree.
0c692eed 390
ee0887a9 391=over 4
0c692eed 392
ee0887a9 393=item XXX-some-platform
0c692eed 394
ee0887a9 395XXX
0c692eed 396
ee0887a9 397=back
0c692eed 398
ee0887a9 399=head2 Discontinued Platforms
4c793fe3 400
ee0887a9 401XXX List any platforms that this version of perl no longer compiles on.
8ebb9810 402
ee0887a9 403=over 4
8ebb9810 404
ee0887a9 405=item XXX-some-platform
48c1efd2 406
ee0887a9 407XXX
48c1efd2 408
ee0887a9 409=back
44428a46 410
ee0887a9 411=head2 Platform-Specific Notes
44428a46 412
ee0887a9
SH
413XXX List any changes for specific platforms. This could include configuration
414and compilation changes or changes in portability/compatibility. However,
415changes within modules for platforms should generally be listed in the
416L</Modules and Pragmata> section.
f4beb78f 417
ee0887a9 418=over 4
f4beb78f 419
ee0887a9 420=item XXX-some-platform
ccb45ef4 421
ee0887a9 422XXX
ccb45ef4 423
ee0887a9 424=back
85318b69 425
ee0887a9 426=head1 Internal Changes
85318b69 427
ee0887a9
SH
428XXX Changes which affect the interface available to C<XS> code go here.
429Other significant internal changes for future core maintainers should
430be noted as well.
85318b69 431
ee0887a9 432[ List each test improvement as a =item entry ]
80b6a949 433
ee0887a9 434=over 4
80b6a949 435
e2babdfb
FR
436=item *
437
a5763045
FC
438See L</Regular expressions retain their localeness when interpolated>,
439above.
e2babdfb 440
a7e93501
FC
441=item *
442
443The C<sv_cmp_flags>, C<sv_cmp_locale_flags>, C<sv_eq_flags> and
444C<sv_collxfrm_flags> functions have been added. These are like their
445non-_flags counterparts, but allow one to specify whether get-magic is
446processed.
447
448The C<sv_cmp>, C<sv_cmp_locale>, C<sv_eq> and C<sv_collxfrm> functions have
449been replaced with wrappers around the new functions.
450
451=item *
452
453A new C<sv_2bool_flags> function has been added.
454
455This is like C<sv_2bool>, but it lets the calling code decide whether
456get-magic is handled. C<sv_2bool> is now a macro that calls the new
457function.
458
459=item *
460
461A new macro, C<SvTRUE_nomg>, has been added.
462
463This is like C<SvTRUE>, except that it does not process magic. It uses the
464new C<sv_2bool_flags> function.
465
466=item *
467
468C<sv_catsv_flags> no longer calls C<mg_get> on its second argument (the
469source string) if the flags passed to it do not include SV_GMAGIC. So it
470now matches what the documentation says it does.
471
ee0887a9 472=back
e2babdfb 473
ee0887a9 474=head1 Selected Bug Fixes
e2babdfb 475
ee0887a9
SH
476XXX Important bug fixes in the core language are summarised here.
477Bug fixes in files in F<ext/> and F<lib/> are best summarised in
478L</Modules and Pragmata>.
e2babdfb 479
ee0887a9 480[ List each fix as a =item entry ]
346e4e56 481
ee0887a9 482=over 4
346e4e56 483
78846812
FR
484=item *
485
4e9f151b
FC
486A regular expression match in the right-hand side of a global substitution
487(C<s///g>) that is in the same scope will no longer cause match variables
488to have the wrong values on subsequent iterations. This can happen when an
e54f3f30
FC
489array or hash subscript is interpolated in the right-hand side, as in
490C<s|(.)|@a{ print($1), /./ }|g>
491L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>.
492
493=item *
494
495Constant-folding used to cause
496
497 $text =~ ( 1 ? /phoo/ : /bear/)
498
499to turn into
500
501 $text =~ /phoo/
502
503at compile time. Now it correctly matches against C<$_>
504L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>.
78846812 505
a5763045
FC
506=item *
507
508Parsing Perl code (either with string C<eval> or by loading modules) from
509within a C<UNITCHECK> block no longer causes the interpreter to crash
510L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>.
511
5a9a79a4
FC
512=item *
513
514When C<-d> is used on the shebang (C<#!>) line, the debugger now has access
515to the lines of the main program. In the past, this sometimes worked and
516sometimes did not, depending on what order things happened to be arranged
b45e2413
FC
517in memory
518L<[perl #71806]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71806>.
5a9a79a4 519
a7e93501
FC
520=item *
521
522The C<y///> or C<tr///> operator now calls get-magic (e.g., the C<FETCH>
523method of a tie) on its left-hand side just once, not twice
524L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
525
526=item *
527
528String comparison (C<eq>, C<ne>, C<lt>, C<gt>, C<le>, C<ge> and
529C<cmp>) and logical not (C<not> and C<!>) operators no longer call magic
530(e.g., tie methods) twice on their operands
531L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
532
533This bug was introduced in an earlier 5.13 release, and does not affect
534perl 5.12.
535
536=item *
537
538When a tied (or other magic) variable is used as, or in, a regular
539expression, it no longer has its C<FETCH> method called twice
540L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
541
542This bug was introduced in an earlier 5.13 release, and does not affect
543perl 5.12.
544
d4a59e54
FC
545=item *
546
547The C<-C> option can now be followed by other options
548L<[perl #72434]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72434>.
549
4c793fe3
FR
550=back
551
962fbe1d
SH
552=head1 Known Problems
553
ee0887a9
SH
554XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
555tests that had to be C<TODO>ed for the release would be noted here, unless
556they were specific to a particular platform (see below).
962fbe1d 557
ee0887a9
SH
558This is a list of some significant unfixed bugs, which are regressions
559from either 5.XXX.XXX or 5.XXX.XXX.
962fbe1d 560
ee0887a9
SH
561[ List each fix as a =item entry ]
562
563=over 4
08d032c0
SH
564
565=item *
566
ee0887a9 567XXX
962fbe1d
SH
568
569=back
570
ee0887a9 571=head1 Obituary
4c793fe3 572
ee0887a9
SH
573XXX If any significant core contributor has died, we've added a short obituary
574here.
0195fb5f 575
405fd67e
DG
576=head1 Errata
577
578=over 4
579
580=item *
581
582Fixed a typo in L<perl5135delta> regarding array slices and smart matching
583
584=back
585
ee0887a9 586=head1 Acknowledgements
0195fb5f 587
ee0887a9 588XXX The list of people to thank goes here.
4c793fe3
FR
589
590=head1 Reporting Bugs
591
592If you find what you think is a bug, you might check the articles
593recently posted to the comp.lang.perl.misc newsgroup and the perl
594bug database at http://rt.perl.org/perlbug/ . There may also be
595information at http://www.perl.org/ , the Perl Home Page.
596
597If you believe you have an unreported bug, please run the B<perlbug>
598program included with your release. Be sure to trim your bug down
599to a tiny but sufficient test case. Your bug report, along with the
600output of C<perl -V>, will be sent off to perlbug@perl.org to be
601analysed by the Perl porting team.
602
603If the bug you are reporting has security implications, which make it
604inappropriate to send to a publicly archived mailing list, then please send
ee0887a9 605it to perl5-security-report@perl.org. This points to a closed subscription
4c793fe3
FR
606unarchived mailing list, which includes all the core committers, who be able
607to help assess the impact of issues, figure out a resolution, and help
608co-ordinate the release of patches to mitigate or fix the problem across all
ee0887a9 609platforms on which Perl is supported. Please only use this address for
4c793fe3
FR
610security issues in the Perl core, not for modules independently
611distributed on CPAN.
612
613=head1 SEE ALSO
614
615The F<Changes> file for an explanation of how to view exhaustive details
616on what changed.
617
618The F<INSTALL> file for how to build Perl.
619
620The F<README> file for general stuff.
621
622The F<Artistic> and F<Copying> files for copyright information.
623
624=cut