This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Archive-Extract to CPAN version 0.44
[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 =head2 Directory handles not copied to threads
122
123 On systems that do not have a C<fchdir> function, newly-created threads no
124 longer inherit directory handles from their parent threads. Such programs
125 would probably have crashed anyway
126 L<[perl #75154]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75154>.
127
128 =head1 Deprecations
129
130 XXX Any deprecated features, syntax, modules etc. should be listed here.
131 In particular, deprecated modules should be listed here even if they are
132 listed as an updated module in the L</Modules and Pragmata> section.
133
134 [ List each deprecation as a =head2 entry ]
135
136 =head1 Performance Enhancements
137
138 XXX Changes which enhance performance without changing behaviour go here. There
139 may well be none in a stable release.
140
141 [ List each enhancement as a =item entry ]
142
143 =over 4
144
145 =item *
146
147 XXX
148
149 =back
150
151 =head1 Modules and Pragmata
152
153 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
154 go here.  If Module::CoreList is updated, generate an initial draft of the
155 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
156 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
157 below.  A paragraph summary for important changes should then be added by hand.
158 In an ideal world, dual-life modules would have a F<Changes> file that could be
159 cribbed.
160
161 [ Within each section, list entries as a =item entry ]
162
163 =head2 New Modules and Pragmata
164
165 =over 4
166
167 =item *
168
169 XXX
170
171 =back
172
173 =head2 Updated Modules and Pragmata
174
175 =over 4
176
177 =item *
178
179 C<Archive::Extract> has been upgraded from version 0.42 to 0.44
180
181 =item *
182
183 C<Carp> has been upgraded from version 1.18 to 1.19.
184
185 It no longer autovivifies the C<*CORE::GLOBAL::caller> glob, something it
186 started doing in 1.18, which was released with perl 5.13.4
187 L<[perl #78082]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=78082>
188
189 =item *
190
191 C<Data::Dumper> has been upgraded from version 2.128 to 2.129.
192
193 C<Dumpxs> no longer crashes with globs returned by C<*$io_ref>
194 L<[perl #72332]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72332>.
195
196 =item *
197
198 C<Digest::MD5> has been upgraded from version 2.40 to 2.50.
199
200 It is now safe to use this module in combination with threads.
201
202 =item *
203
204 C<File::DosGlob> has been upgraded from version 1.02 to 1.03.
205
206 It allows patterns containing literal parentheses (they no longer need to
207 be escaped). On Windows, it no longer adds an extra F<./> to the file names
208 returned when the pattern is a relative glob with a drive specification,
209 like F<c:*.pl>
210 L<[perl #71712]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71712>.
211
212 =item *
213
214 C<File::Find> has been upgraded from version 1.17 to 1.18.
215
216 It improves handling of backslashes on Windows, so that paths such as
217 F<c:\dir\/file> are no longer generated
218 L<[perl #71710]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
219
220 =item *
221
222 C<if> has been upgraded from version 0.05 to 0.06
223
224 =item *
225
226 C<IPC::Open3> has been upgraded from version 1.06 to 1.07.
227
228 The internal C<xclose> routine now knows how to handle file descriptors, as
229 documented, so duplicating STDIN in a child process using its file
230 descriptor now works
231 L<[perl #76474]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
232
233 =item *
234
235 C<Locale::Maketext> has been upgraded from version 1.15 to 1.16.
236
237 It fixes an infinite loop in C<Locale::Maketext::Guts::_compile()> when
238 working with tainted values
239 (L<CPAN RT #40727|https://rt.cpan.org/Public/Bug/Display.html?id=40727>).
240
241 =item *
242
243 C<Math::BigInt> has been upgraded from version 1.95 to 1.96.
244
245 =item *
246
247 C<NEXT> has been upgraded from version 0.64 to 0.65.
248
249 =item *
250
251 C<overload> has been upgraded from version 1.10 to 1.11.
252
253 C<overload::Method> can now handle subroutines that are themselves blessed
254 into overloaded classes
255 L<[perl #71998]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71998>.
256
257 =item *
258
259 C<PathTools> has been upgraded from version 3.31_01 to 3.33.
260
261 =item *
262
263 C<sigtrap> has been upgraded from version 1.04 to 1.05.
264
265 It no longer tries to modify read-only arguments when generating a
266 backtrace
267 L<[perl #72340]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72340>.
268
269 =item *
270
271 C<threads> has been upgrade from version 1.77_03 to 1.81
272
273 =item *
274
275 C<Unicode::Collate> has been upgraded from version 0.59 to 0.60
276
277 =item *
278
279 C<Unicode::Normalize> has been upgraded from version 1.06 to 1.07
280
281 =back
282
283 =head2 Removed Modules and Pragmata
284
285 =over 4
286
287 =item *
288
289 XXX
290
291 =back
292
293 =head1 Documentation
294
295 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
296 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
297
298 =head2 New Documentation
299
300 XXX Changes which create B<new> files in F<pod/> go here.
301
302 =head3 L<XXX>
303
304 XXX Description of the purpose of the new file here
305
306 =head2 Changes to Existing Documentation
307
308 XXX Changes which significantly change existing files in F<pod/> go here.
309 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
310 section.
311
312 =head3 L<XXX>
313
314 =over 4
315
316 =item *
317
318 The documentation for the C<SvTRUE> macro was simply wrong in stating that
319 get-magic is not processed. It has been corrected.
320
321 =back
322
323 =head1 Diagnostics
324
325 The following additions or changes have been made to diagnostic output,
326 including warnings and fatal error messages.  For the complete list of
327 diagnostic messages, see L<perldiag>.
328
329 XXX New or changed warnings emitted by the core's C<C> code go here. Also
330 include any changes in L<perldiag> that reconcile it to the C<C> code.
331
332 [ Within each section, list entries as a =item entry ]
333
334 =head2 New Diagnostics
335
336 XXX Newly added diagnostic messages go here
337
338 =over 4
339
340 =item *
341
342 XXX
343
344 =back
345
346 =head2 Changes to Existing Diagnostics
347
348 XXX Changes (i.e. rewording) of diagnostic messages go here
349
350 =over 4
351
352 =item *
353
354 The 'Layer does not match this perl' error message has been replaced with
355 these more helpful messages:
356
357 =over 4
358
359 =item *
360
361 PerlIO layer function table size (%d) does not match size expected by this
362 perl (%d)
363
364 =item *
365
366 PerlIO layer instance size (%d) does not match size expected by this perl
367 (%d)
368
369 =back
370
371 L<[perl #73754]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73754>
372
373 =back
374
375 =head1 Utility Changes
376
377 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
378 here. Most of these are built within the directories F<utils> and F<x2p>.
379
380 [ List utility changes as a =head3 entry for each utility and =item
381 entries for each change
382 Use L<XXX> with program names to get proper documentation linking. ]
383
384 =head3 L<XXX>
385
386 =over 4
387
388 =item *
389
390 XXX
391
392 =back
393
394 =head1 Configuration and Compilation
395
396 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
397 go here.  Any other changes to the Perl build process should be listed here.
398 However, any platform-specific changes should be listed in the
399 L</Platform Support> section, instead.
400
401 [ List changes as a =item entry ].
402
403 =over 4
404
405 =item *
406
407 XXX
408
409 =back
410
411 =head1 Testing
412
413 XXX Any significant changes to the testing of a freshly built perl should be
414 listed here.  Changes which create B<new> files in F<t/> go here as do any
415 large changes to the testing harness (e.g. when parallel testing was added).
416 Changes to existing files in F<t/> aren't worth summarising, although the bugs
417 that they represent may be covered elsewhere.
418
419 [ List each test improvement as a =item entry ]
420
421 =over 4
422
423 =item *
424
425 The script F<t/op/threads-dirh.t> has been added, which tests interaction
426 of threads and directory handles.
427
428 =back
429
430 =head1 Platform Support
431
432 XXX Any changes to platform support should be listed in the sections below.
433
434 [ Within the sections, list each platform as a =item entry with specific
435 changes as paragraphs below it. ]
436
437 =head2 New Platforms
438
439 XXX List any platforms that this version of perl compiles on, that previous
440 versions did not. These will either be enabled by new files in the F<hints/>
441 directories, or new subdirectories and F<README> files at the top level of the
442 source tree.
443
444 =over 4
445
446 =item XXX-some-platform
447
448 XXX
449
450 =back
451
452 =head2 Discontinued Platforms
453
454 XXX List any platforms that this version of perl no longer compiles on.
455
456 =over 4
457
458 =item XXX-some-platform
459
460 XXX
461
462 =back
463
464 =head2 Platform-Specific Notes
465
466 XXX List any changes for specific platforms. This could include configuration
467 and compilation changes or changes in portability/compatibility.  However,
468 changes within modules for platforms should generally be listed in the
469 L</Modules and Pragmata> section.
470
471 =over 4
472
473 =item Mac OS X
474
475 Early versions of Mac OS X (Darwin) had buggy implementations of the
476 C<setregid>, C<setreuid>, C<setrgid> and C<setruid> functions, so perl
477 would pretend they did not exist.
478
479 These functions are now recognised on Mac OS 10.5 (Leopard; Darwin 9) and
480 higher, as they have been fixed
481 L<[perl #72990]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72990>.
482
483 =item Windows
484
485 C<$Config{gccversion}> is now set correctly when perl is built using the
486 mingw64 compiler from L<http://mingw64.org>
487 L<[perl #73754]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73754>.
488
489 =back
490
491 =head1 Internal Changes
492
493 XXX Changes which affect the interface available to C<XS> code go here.
494 Other significant internal changes for future core maintainers should
495 be noted as well.
496
497 [ List each test improvement as a =item entry ]
498
499 =over 4
500
501 =item *
502
503 See L</Regular expressions retain their localeness when interpolated>,
504 above.
505
506 =item *
507
508 The C<sv_cmp_flags>, C<sv_cmp_locale_flags>, C<sv_eq_flags> and
509 C<sv_collxfrm_flags> functions have been added. These are like their
510 non-_flags counterparts, but allow one to specify whether get-magic is
511 processed.
512
513 The C<sv_cmp>, C<sv_cmp_locale>, C<sv_eq> and C<sv_collxfrm> functions have
514 been replaced with wrappers around the new functions. 
515
516 =item *
517
518 A new C<sv_2bool_flags> function has been added.
519
520 This is like C<sv_2bool>, but it lets the calling code decide whether
521 get-magic is handled. C<sv_2bool> is now a macro that calls the new
522 function.
523
524 =item *
525
526 A new macro, C<SvTRUE_nomg>, has been added.
527
528 This is like C<SvTRUE>, except that it does not process magic. It uses the
529 new C<sv_2bool_flags> function.
530
531 =item *
532
533 C<sv_catsv_flags> no longer calls C<mg_get> on its second argument (the
534 source string) if the flags passed to it do not include SV_GMAGIC. So it
535 now matches what the documentation says it does.
536
537 =back
538
539 =head1 Selected Bug Fixes
540
541 XXX Important bug fixes in the core language are summarised here.
542 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
543 L</Modules and Pragmata>.
544
545 [ List each fix as a =item entry ]
546
547 =over 4
548
549 =item *
550
551 A regular expression match in the right-hand side of a global substitution
552 (C<s///g>) that is in the same scope will no longer cause match variables
553 to have the wrong values on subsequent iterations. This can happen when an
554 array or hash subscript is interpolated in the right-hand side, as in
555 C<s|(.)|@a{ print($1), /./ }|g>
556 L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>.
557
558 =item *
559
560 Constant-folding used to cause
561
562   $text =~ ( 1 ? /phoo/ : /bear/)
563
564 to turn into
565
566   $text =~ /phoo/
567
568 at compile time. Now it correctly matches against C<$_>
569 L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>.
570
571 =item *
572
573 Parsing Perl code (either with string C<eval> or by loading modules) from
574 within a C<UNITCHECK> block no longer causes the interpreter to crash
575 L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>.
576
577 =item *
578
579 When C<-d> is used on the shebang (C<#!>) line, the debugger now has access
580 to the lines of the main program. In the past, this sometimes worked and
581 sometimes did not, depending on what order things happened to be arranged
582 in memory
583 L<[perl #71806]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71806>.
584
585 =item *
586
587 The C<y///> or C<tr///> operator now calls get-magic (e.g., the C<FETCH>
588 method of a tie) on its left-hand side just once, not twice
589 L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
590
591 =item *
592
593 String comparison (C<eq>, C<ne>, C<lt>, C<gt>, C<le>, C<ge> and
594 C<cmp>) and logical not (C<not> and C<!>) operators no longer call magic
595 (e.g., tie methods) twice on their operands
596 L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
597
598 This bug was introduced in an earlier 5.13 release, and does not affect
599 perl 5.12.
600
601 =item *
602
603 When a tied (or other magic) variable is used as, or in, a regular
604 expression, it no longer has its C<FETCH> method called twice
605 L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
606
607 This bug was introduced in an earlier 5.13 release, and does not affect
608 perl 5.12.
609
610 =item *
611
612 The C<-C> command line option can now be followed by other options
613 L<[perl #72434]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72434>.
614
615 =item *
616
617 Assigning a glob to a PVLV used to convert it to a plain string. Now it
618 works correctly, and a PVLV can hold a glob. This would happen when a
619 nonexistent hash or array element was passed to a subroutine:
620
621   sub { $_[0] = *foo }->($hash{key});
622   # $_[0] would have been the string "*main::foo"
623
624 It also happened when a glob was assigned to, or returned from, an element
625 of a tied array or hash
626 L<[perl #36051]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=36051>.
627
628 =item *
629
630 Creating a new thread when directory handles were open used to cause a
631 crash, because the handles were not cloned, but simply passed to the new
632 thread, resulting in a double free.
633
634 Now directory handles are properly, on systems that have a C<fchdir>
635 function. On other systems, new threads simply do not inherit directory
636 handles from their parent threads
637 L<[perl #75154]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75154>.
638
639 =item *
640
641 The regular expression parser no longer hangs when parsing C<\18> and
642 C<\88>.
643
644 This bug was introduced in version 5.13.5 and did not affect earlier
645 versions
646 L<[perl #78058]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78058>.
647
648 =back
649
650 =head1 Known Problems
651
652 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
653 tests that had to be C<TODO>ed for the release would be noted here, unless
654 they were specific to a particular platform (see below).
655
656 This is a list of some significant unfixed bugs, which are regressions
657 from either 5.XXX.XXX or 5.XXX.XXX.
658
659 [ List each fix as a =item entry ]
660
661 =over 4
662
663 =item *
664
665 XXX
666
667 =back
668
669 =head1 Obituary
670
671 XXX If any significant core contributor has died, we've added a short obituary
672 here.
673
674 =head1 Errata
675
676 =over 4
677
678 =item *
679
680 Fixed a typo in L<perl5135delta> regarding array slices and smart matching
681
682 =back
683
684 =head1 Acknowledgements
685
686 XXX The list of people to thank goes here.
687
688 =head1 Reporting Bugs
689
690 If you find what you think is a bug, you might check the articles
691 recently posted to the comp.lang.perl.misc newsgroup and the perl
692 bug database at http://rt.perl.org/perlbug/ .  There may also be
693 information at http://www.perl.org/ , the Perl Home Page.
694
695 If you believe you have an unreported bug, please run the B<perlbug>
696 program included with your release.  Be sure to trim your bug down
697 to a tiny but sufficient test case.  Your bug report, along with the
698 output of C<perl -V>, will be sent off to perlbug@perl.org to be
699 analysed by the Perl porting team.
700
701 If the bug you are reporting has security implications, which make it
702 inappropriate to send to a publicly archived mailing list, then please send
703 it to perl5-security-report@perl.org. This points to a closed subscription
704 unarchived mailing list, which includes all the core committers, who be able
705 to help assess the impact of issues, figure out a resolution, and help
706 co-ordinate the release of patches to mitigate or fix the problem across all
707 platforms on which Perl is supported. Please only use this address for
708 security issues in the Perl core, not for modules independently
709 distributed on CPAN.
710
711 =head1 SEE ALSO
712
713 The F<Changes> file for an explanation of how to view exhaustive details
714 on what changed.
715
716 The F<INSTALL> file for how to build Perl.
717
718 The F<README> file for general stuff.
719
720 The F<Artistic> and F<Copying> files for copyright information.
721
722 =cut