This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
b9b0c2d87a61b78903273f48e181b706a0aaaade
[perl5.git] / pod / perl5133delta.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.3
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.13.3 release and
13 the 5.13.2 release.
14
15 If you are upgrading from an earlier release such as 5.13.1, first read
16 L<perl5132delta>, which describes differences between 5.13.1 and
17 5.13.2.
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 \o{...}
32
33 The escape sequence C<"\o"> in double-quotish contexts is now defined.  It
34 must be followed by braces enclosing an octal number of at least one digit.  It
35 means the character whose ordinal value is that octal number.  This construct
36 allows large octal ordinals beyond the current max of 0777 to be represented.
37 It also allows you to specify a character in octal which can safely be
38 concatenated with other regex snippets without danger of changing its meaning,
39 and one which won't ever be confused with being a backreference to a regex
40 capture group.  See L<perlre/Capture groups>
41
42 =head2 C<\N{I<name>}> and C<charnames> enhancements
43
44 C<\N{}> and C<charnames::vianame> now know about the abbreviated character
45 names listed by Unicode, such as NBSP, SHY, LRO, ZWJ, etc., as well as all the
46 customary abbreviations for the C0 and C1 control characters (such as ACK, BEL,
47 CAN, etc.), as well as a few new variants in common usage of some C1 full
48 names.
49
50 In the past, it was ineffective to override one of Perl's abbreviations with
51 your own custom alias.  Now it works.
52
53 And you can create a custom alias directly to the ordinal of a character, known
54 by C<\N{...}>, C<charnames::vianame()>, and C<charnames::viacode()>.
55 Previously, an alias had to be to an official Unicode character name.  This
56 made it impossible to create an alias for a code point that had no name,
57 such as the ones reserved for private use.  So this change allows you to make
58 more effective use of private use characters.  Only if there is no official
59 name will C<charnames::viacode()> return your custom one.
60
61 See L<charnames> for details on all these changes.
62
63 =head2 Other enhancements
64
65 =over
66
67 =item *
68
69 Uppercase X/B allowed in hexadecimal/binary literals (RT#76296) (a674e8d)
70
71 =back
72
73 =head1 Security
74
75 XXX Any security-related notices go here.  In particular, any security
76 vulnerabilities closed should be noted here rather than in the
77 L</Selected Bug Fixes> section.
78
79 [ List each security issue as a =head2 entry ]
80
81 =head1 Incompatible Changes
82
83 XXX For a release on a stable branch, this section aspires to be:
84
85     There are no changes intentionally incompatible with 5.XXX.XXX. If any
86     exist, they are bugs and reports are welcome.
87
88 [ List each incompatible change as a =head2 entry ]
89
90 =head2 \400 - \777
91
92 Use of C<\400> - C<\777> in regexes in certain circumstances has given different,
93 anomalous behavior than their use in all other double-quotish contexts.   Since
94 5.10.1, a deprecated warning message has been raised when this happens.  Now,
95 all double-quotish contexts have the same behavior, namely to be equivalent to
96 C<\x{100}> - C<\x{1FF}>, with no deprecation warning. Use of these values in the
97 command line option C<"-0"> retains the current meaning to slurp input files
98 whole; previously, this was documented only for C<"-0777">.  It is recommended,
99 however, because of various ambiguities, to use the new L</\o{...}> construct
100 to represent characters in octal.
101
102 =head1 Deprecations
103
104 XXX Any deprecated features, syntax, modules etc. should be listed here.
105 In particular, deprecated modules should be listed here even if they are
106 listed as an updated module in the L</Modules and Pragmata> section.
107
108 [ List each deprecation as a =head2 entry ]
109
110 =head2 Omitting a space between regular expression and subsequent word
111
112 Omitting a space between a regex pattern or pattern modifiers and the
113 following word is deprecated. Deprecation for regular expression matches
114 was added in Perl 5.13.2.  In this release, the deprecation is extended
115 to regular expression substitutions. For example, 
116 C<< s/foo/bar/sand $bar >> will still be parsed as
117 C<< s/foo/bar/s and $bar >> but will issue a warning.  
118
119 =head2 Deprecation warning added for deprecated-in-core .pl libs
120
121 This is a mandatory warning, not obeying -X or lexical warning bits.
122 The warning is modelled on that supplied by deprecate.pm for
123 deprecated-in-core .pm libraries.  It points to the specific CPAN
124 distribution that contains the .pl libraries. The CPAN version, of
125 course, does not generate the warning. (0111154)
126
127 =head1 Performance Enhancements
128
129 XXX Changes which enhance performance without changing behaviour go here. There
130 may well be none in a stable release.
131
132 [ List each enhancement as a =item entry ]
133
134 =over 4
135
136 =item *
137
138 There are several small optimizations to improve CPU cache performance
139
140 =back
141
142 =head1 Modules and Pragmata
143
144 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
145 go here.  If Module::CoreList is updated, generate an initial draft of the
146 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
147 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
148 below.  A paragraph summary for important changes should then be added by hand.
149 In an ideal world, dual-life modules would have a F<Changes> file that could be
150 cribbed.
151
152 [ Within each section, list entries as a =item entry ]
153
154 =head2 New Modules and Pragmata
155
156 =over 4
157
158 =item *
159
160 XXX
161
162 =back
163
164 =head2 Updated Modules and Pragmata
165
166 XXX Make sure these get sorted, are phrased similarly and all version
167 numbers are correct
168
169 =over 4
170
171 =item *
172
173 autodie updated to CPAN version 2.10 (a009834)
174
175 =item *
176
177 charnames -- viacode() is now significantly faster (f3227b7)
178
179 =item *
180
181 version now prevents object methods from being called as class methods
182 (d808b68)
183
184 =item *
185
186 warnings updated to 1.10.  Calling C<use warnings> without
187 arguments is now significantly more efficient. (8452af9)
188
189 =item *
190
191 Archive-Extract updated to CPAN version 0.42 (d7f8799)
192
193 Updates since 0.38 include: a safe print method that Michael Schwern
194 contributed, that guards Archive::Extract from changes to $\; a
195 fix to the tests when run in core perl from Robin Barker; and
196 support for TZ files contributed by Paul Marquess, who also supplied a
197 modification for the lzma logic to favour IO::Uncompress::Unlzma
198
199 =item *
200
201 Archive-Tar updated to version 1.64 (afabe0e)
202
203 Important changes since 1.54 include: compatibility with busybox
204 implementations of tar which was added by Mark Swayne; a fix so
205 that write() and create_archive() close only handles
206 they opened by Darrell K.; and a bug was fixed regarding the exit code
207 of extract_archive which was spotted by and upstreamed from RedHat by
208 Martin Cermak.
209
210 =item *
211
212 Attribute-Handlers updated to CPAN version 0.88 (f2ea78b)
213
214 =item *
215
216 Compress-Raw-Bzip2 updated to CPAN version 2.027 (9e09409)
217
218 =item *
219
220 Compress-Raw-Zlib updated  to CPAN version 2.027 (f02c02e)
221
222 =item *
223
224 CPANPLUS updated to version 0.9007 (d4e225a)
225
226 Fix the shell test to skip if test is not being run under a
227 terminal; resolved the issue where a prereq on Config would not be
228 recognised as a core module
229
230 =item *
231
232 Digest-MD5 updated to CPAN version 2.40 (326fafa)
233
234 =item *
235
236 Digest-SHA updated to CPAN version 5.48 (dfe1edc)
237
238 =item *
239
240 Exporter no longer overrides C<$SIG{__WARN__}> (RT #74472) (9b86bb5)
241
242 =item *
243
244 ExtUtils-CBuilder updated to CPAN version 0.2703 (7b0eef9)
245
246 =item *
247
248 ExtUtils-Manifest updated to CPAN version 1.58 (49c6bc4)
249
250 =item *
251
252 ExtUtil-ParseXS updated to version 2.2206 (494e8c4)
253
254 =item *
255
256 File::Copy skips suid tests on a nosuid partition (cae9400)
257
258 =item *
259
260 IO-Compress upated to CPAN version 2.027 (e8796d6)
261
262 =item *
263
264 IPC-Cmd updated to CPAN version 0.60 (e667e1e)
265
266 =item *
267
268 IPC-SysV updated to CPAN version 2.03 (10613b6)
269
270 =item * 
271
272 Locale::Maketext guts have been merged back into the main module (87d86da)
273 and adds external cache support (ace47d6)
274
275 =item *
276
277 Module-Build updated to CPAN version 0.3607 (40c9afb)
278
279 =item *
280
281 Module-Load updated to CPAN version 0.18 (93eaa32)
282
283 =item *
284
285 Time-HiRes updated to CPAN version 1.9721 (68c5b4d)
286
287 =item *
288
289 Time-Piece updated to CPAN version 1.20 (90d55c2)
290
291 =item *
292
293 Unicode-Collate updated to CPAN version 0.53.  Includes Unicode Collation
294 Algorithm 18 (74b94a7)
295
296 =item *
297
298 Unicode-Normalize updated to CPAN release 1.06 (a96160d)
299
300 =back
301
302 =head2 Removed Modules and Pragmata
303
304 =over 4
305
306 =item *
307
308 XXX
309
310 =back
311
312 =head1 Documentation
313
314 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
315 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
316
317 [ Within each section, list entries as a =item entry ]
318
319 =head2 New Documentation
320
321 XXX Changes which create B<new> files in F<pod/> go here.
322
323 =head3 L<perl5121delta>
324
325 The Perl 5.12.1 perldelta file was added from the Perl maintenance branch
326
327 =head2 Changes to Existing Documentation
328
329 XXX Changes which significantly change existing files in F<pod/> go here.
330 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
331 section.
332
333 =head3 General changes
334
335 =over
336
337 =item *
338
339 Octal character escapes in documentation now prefer either the C<\gDIGIT>
340 escape or else a three-digit octal escape as they have less ambiguity than
341 other forms of octal escapes.  (ce7b6f0) (d8b950d)
342
343 =item *
344
345 Documentation now standardizes on the term 'capture group' over 'buffer'
346 in regular expression documentation(c27a5cf)
347
348 =back
349
350 =head3 L<perlfunc>
351
352 =over
353
354 =item *
355
356 Added cautionary note about "no VERSION" (e0de7c2)
357
358 =item *
359
360 Add additional notes regarding srand and forking (d460397)
361
362 =back
363
364 =head3 L<perlop>
365
366 =over 4
367
368 =item *
369
370 Improved documentation of unusual character escapes (bf82ca4)
371
372 =back
373
374 =head3 L<perlrun>
375
376 =over
377
378 =item *
379
380 Clarifies the behavior of the C<-0NNN> switch for C<-0400> or higher (7ba31cb)
381
382 =back
383
384 =head3 L<perlpolicy>
385
386 =over
387
388 =item *
389
390 Added the policy on compatibility and deprecation along with definitions of
391 terms like "deprecation" (70e4a83)
392
393 =back
394
395 =head3 L<perltie>
396
397 =over
398
399 =item *
400
401 Some examples updated for modern Perl style (67d00dd)
402
403 =back
404
405 =head1 Diagnostics
406
407 The following additions or changes have been made to diagnostic output,
408 including warnings and fatal error messages.  For the complete list of
409 diagnostic messages, see L<perldiag>.
410
411 XXX New or changed warnings emitted by the core's C<C> code go here. Also
412 include any changes in L<perldiag> that reconcile it to the C<C> code.
413
414 [ Within each section, list entries as a =item entry ]
415
416 =head2 New Diagnostics
417
418 XXX Newly added diagnostic messages go here
419
420 =over 4
421
422 =item *
423
424 XXX
425
426 =back
427
428 =head2 Changes to Existing Diagnostics
429
430 XXX Changes (i.e. rewording) of diagnostic messages go here
431
432 =over 4
433
434 =item *
435
436 XXX
437
438 =back
439
440 =head1 Utility Changes
441
442 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
443 here. Most of these are built within the directories F<utils> and F<x2p>.
444
445 =head3 L<perldb>
446
447 =over
448
449 =item *
450
451 The remote terminal works after forking and spawns new sessions - one
452 for each forked process.
453
454 =item * 
455
456 Uses the less pager path from Config instead of searching for it (bf320d6)
457
458 =back
459
460
461 =head1 Configuration and Compilation
462
463 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
464 go here.  Any other changes to the Perl build process should be listed here.
465 However, any platform-specific changes should be listed in the
466 L</Platform Support> section, instead.
467
468 [ List changes as a =item entry ].
469
470 =over 4
471
472 =item *
473
474 Adjusts 'make test.valgrind' to account for cpan/dist/ext separation. (e07ce2e)
475
476 =back
477
478 =head1 Testing
479
480 XXX Any significant changes to the testing of a freshly built perl should be
481 listed here.  Changes which create B<new> files in F<t/> go here as do any
482 large changes to the testing harness (e.g. when parallel testing was added).
483 Changes to existing files in F<t/> aren't worth summarising, although the bugs
484 that they represent may be covered elsewhere.
485
486 [ List each test improvement as a =item entry ]
487
488 =over 4
489
490 =item *
491
492 F<t/harness> clears PERL5LIB, PERLLIB, PERL5OPT as t/TEST does (a2d3de1)
493
494 =item *
495
496 Many common testing routines were refactored into t/lib/common.pl
497
498 =item *
499
500 Several test files have been modernized to use Test::More
501
502 =back
503
504 =head1 Platform Support
505
506 XXX Any changes to platform support should be listed in the sections below.
507
508 [ Within the sections, list each platform as a =item entry with specific
509 changes as paragraphs below it. ]
510
511 =head2 New Platforms
512
513 XXX List any platforms that this version of perl compiles on, that previous
514 versions did not. These will either be enabled by new files in the F<hints/>
515 directories, or new subdirectories and F<README> files at the top level of the
516 source tree.
517
518 =over 4
519
520 =item XXX-some-platform
521
522 XXX
523
524 =back
525
526 =head2 Discontinued Platforms
527
528 XXX List any platforms that this version of perl no longer compiles on.
529
530 =over 4
531
532 =item MacOS Classic
533
534 Support for MacOS Classic within ExtUtils::MakeMaker was removed from Perl in
535 December 2004.  Vestigial MacOS Classic specific code has now been removed
536 from other core modules as well.
537
538 =back
539
540 =head2 Platform-Specific Notes
541
542 XXX List any changes for specific platforms. This could include configuration
543 and compilation changes or changes in portability/compatibility.  However,
544 changes within modules for platforms should generally be listed in the
545 L</Modules and Pragmata> section.
546
547 =over 4
548
549 =item Win32
550
551 t/io/openpid.t now uses the alarm() watchdog strategy for more
552 robustness. (5732108)
553
554 =back
555
556 =head1 Internal Changes
557
558 XXX Changes which affect the interface available to C<XS> code go here.
559 Other significant internal changes for future core maintainers should
560 be noted as well.
561
562 [ List each improvement as a =item entry ]
563
564 =over 4
565
566 =item *
567
568 Under some circumstances, the C<CvGV()> field of a CV is now reference
569 counted. To ensure consistent behaviour, direct assignment to it, for
570 example C<CvGV(cv) = gv> is now a compile-time error. A new macro,
571 C<CvGV_set(cv,gv)> has been introduced to perform this operation safely.
572 Note that modification of this field is not part of of the public API,
573 regardless of this new macro.
574
575 =item *
576
577 It is now possible for XS code to hook into Perl's lexical scope
578 mechanism at compile time, using the new C<Perl_blockhook_register>
579 function. See L<perlguts/"Compile-time scope hooks">.
580
581 =item *
582
583 Added C<Perl_croak_no_modify()> to implement 
584 C<Perl_croak("%s", PL_no_modify)>. (6ad8f25)
585
586 =item *
587
588 Added prototypes for C<tie()> and C<untie()> to allow overloading. (RT#75902)
589 (1db4d19)
590
591 =item * 
592
593 Adds C<my_[l]stat_flags()> to replace C<my_[l]stat()>.  C<my_stat()> and
594 C<my_lstat()> call get magic on the stack arg, so create C<_flags()>
595 variants that allow us to control this. (0d7d409)
596
597 =back
598
599 =head1 Selected Bug Fixes
600
601 XXX Important bug fixes in the core language are summarised here.
602 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
603 L</Modules and Pragmata>.
604
605 [ List each fix as a =item entry ]
606
607 =over 4
608
609 =item *
610
611 Some work has been done on the internal pointers that link between symbol
612 tables (stashes), typeglobs and subroutines. This has the effect that
613 various edge cases related to deleting stashes or stash entries (e.g.
614 <%FOO:: = ()>), and complex typeglob or code reference aliasing, will no
615 longer crash the interpreter.
616
617 =item *
618
619 Fixed readline() when interrupted by signals so it no longer returns
620 the "same thing" as before or random memory.
621
622 =item *
623
624 Fixed a regression of kill() when a match variable is used for the
625 process ID to kill.  (RT#75812) (8af710e)
626
627 =item *
628
629 Fixed several subtle bugs in sort() when @_ is accessed within a subroutine
630 used for sorting. (RT#72334) (8f443ca)
631
632 =item *
633
634 Catch yyparse() exceptions in C<< (?{...}) >> (RT#2353) (634d691)
635
636 =item *
637
638 Avoid UTF-8 cache panics with offsets beyond a string (RT #75898) (3e2d381)
639
640 =item *
641
642 Fixed POSIX::strftime memory leak (RT#73520) (c4bc4aa)
643
644 =item *
645
646 Doesn't set strict with C<no VERSION> if C<VERSION> is greater than 5.12.
647 (da8fb5d)
648
649 =item *
650
651 Avoids multiple FETCH/stringify on filetest ops (40c852d)
652
653 =item *
654
655 Fixed issue with string C<eval> not detecting taint of overloaded/tied
656 arguments (RT #75716) (895b760)
657
658 =item *
659
660 Fix potential crashes of string C<eval> when evaluating a object with
661 overloaded stringification by creating a stringified copy when necessary
662 (3e5c018)
663
664 =item *
665
666 Fixed bug where overloaded stringification could remove tainting
667 (RT #75716) (a02ec77)
668
669 =item *
670
671 Plugs more memory leaks in vms.c. (9e2bec0)
672
673 =item *
674
675 Fix pthread include error for Time::Piece (e9f284c)
676
677 =back
678
679 =head1 Known Problems
680
681 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
682 tests that had to be C<TODO>ed for the release would be noted here, unless
683 they were specific to a particular platform (see below).
684
685 This is a list of some significant unfixed bugs, which are regressions
686 from either 5.XXX.XXX or 5.XXX.XXX.
687
688 [ List each fix as a =item entry ]
689
690 =over 4
691
692 =item *
693
694 readline() returns an empty string instead of undef when it is
695 interrupted by a signal.
696
697 =back
698
699 =head1 Errata
700
701 =over 4
702
703 =item *
704
705 Retroactively added the Acknowledgements list to L<perl5132delta>,
706 which was excluded in the original release (d1e2db0)
707
708 =back
709
710 =head1 Obituary
711
712 XXX If any significant core contributor has died, we've added a short obituary
713 here.
714
715 =head1 Acknowledgements
716
717 XXX The list of people to thank goes here.
718
719 =head1 Reporting Bugs
720
721 If you find what you think is a bug, you might check the articles
722 recently posted to the comp.lang.perl.misc newsgroup and the perl
723 bug database at http://rt.perl.org/perlbug/ .  There may also be
724 information at http://www.perl.org/ , the Perl Home Page.
725
726 If you believe you have an unreported bug, please run the B<perlbug>
727 program included with your release.  Be sure to trim your bug down
728 to a tiny but sufficient test case.  Your bug report, along with the
729 output of C<perl -V>, will be sent off to perlbug@perl.org to be
730 analysed by the Perl porting team.
731
732 If the bug you are reporting has security implications, which make it
733 inappropriate to send to a publicly archived mailing list, then please send
734 it to perl5-security-report@perl.org. This points to a closed subscription
735 unarchived mailing list, which includes all the core committers, who be able
736 to help assess the impact of issues, figure out a resolution, and help
737 co-ordinate the release of patches to mitigate or fix the problem across all
738 platforms on which Perl is supported. Please only use this address for
739 security issues in the Perl core, not for modules independently
740 distributed on CPAN.
741
742 =head1 SEE ALSO
743
744 The F<Changes> file for an explanation of how to view exhaustive details
745 on what changed.
746
747 The F<INSTALL> file for how to build Perl.
748
749 The F<README> file for general stuff.
750
751 The F<Artistic> and F<Copying> files for copyright information.
752
753 =cut