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