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