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