This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5133delta: Term-ANSIColor was bumped to CPAN version 3.00 (2c33c76)
[perl5.git] / pod / perl5133delta.pod
CommitLineData
855e1b21
NC
1=encoding utf8
2
3=head1 NAME
4
855e1b21
NC
5perldelta - what is new for perl v5.13.3
6
15d6324c
DG
7XXX Add links around modules throughout
8
855e1b21
NC
9=head1 DESCRIPTION
10
11This document describes differences between the 5.13.3 release and
12the 5.13.2 release.
13
7ea08b87
DG
14If you are upgrading from an earlier release such as 5.13.1, first read
15L<perl5132delta>, which describes differences between 5.13.1 and
165.13.2.
855e1b21 17
7ea08b87
DG
18=head1 Core Enhancements
19
f0a2b745
KW
20=head2 \o{...}
21
22The escape sequence C<"\o"> in double-quotish contexts is now defined. It
23must be followed by braces enclosing an octal number of at least one digit. It
24means the character whose ordinal value is that octal number. This construct
25allows large octal ordinals beyond the current max of 0777 to be represented.
26It also allows you to specify a character in octal which can safely be
27concatenated with other regex snippets without danger of changing its meaning,
28and one which won't ever be confused with being a backreference to a regex
29capture group. See L<perlre/Capture groups>
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
cdd0aa9c 52=head2 Uppercase X/B allowed in hexadecimal/binary literals
655d344e 53
2b32d74c
AB
54Literals may now use either upper case C<0X...> or C<0B...> prefixes,
55in addition to the already supported C<0x...> and C<0b...>
56syntax. (RT#76296) (a674e8d)
57
58C, Ruby, Python and PHP already supported this syntax, and it makes
59Perl more internally consistent. A round-trip with C<eval sprintf
60"%#X", 0x10> now returns C<16> in addition to C<eval sprintf "%#x",
610x10>, which worked before.
efdecbbd 62
855e1b21
NC
63=head1 Incompatible Changes
64
fa1639c5
KW
65=head2 \400 - \777
66
67Use of C<\400> - C<\777> in regexes in certain circumstances has given different,
68anomalous behavior than their use in all other double-quotish contexts. Since
695.10.1, a deprecated warning message has been raised when this happens. Now,
70all double-quotish contexts have the same behavior, namely to be equivalent to
71C<\x{100}> - C<\x{1FF}>, with no deprecation warning. Use of these values in the
72command line option C<"-0"> retains the current meaning to slurp input files
f0a2b745
KW
73whole; previously, this was documented only for C<"-0777">. It is recommended,
74however, because of various ambiguities, to use the new L</\o{...}> construct
75to represent characters in octal.
fa1639c5 76
7ea08b87 77=head1 Deprecations
855e1b21 78
a0316a43
DG
79=head2 Omitting a space between regular expression and subsequent word
80
81Omitting a space between a regex pattern or pattern modifiers and the
82following word is deprecated. Deprecation for regular expression matches
83was added in Perl 5.13.2. In this release, the deprecation is extended
84to regular expression substitutions. For example,
85C<< s/foo/bar/sand $bar >> will still be parsed as
86C<< s/foo/bar/s and $bar >> but will issue a warning.
87
88=head2 Deprecation warning added for deprecated-in-core .pl libs
89
90This is a mandatory warning, not obeying -X or lexical warning bits.
91The warning is modelled on that supplied by deprecate.pm for
92deprecated-in-core .pm libraries. It points to the specific CPAN
93distribution that contains the .pl libraries. The CPAN version, of
94course, does not generate the warning. (0111154)
95
7ea08b87
DG
96=head1 Performance Enhancements
97
7ea08b87
DG
98=over 4
99
100=item *
101
655d344e 102There are several small optimizations to improve CPU cache performance
7ea08b87
DG
103
104=back
855e1b21
NC
105
106=head1 Modules and Pragmata
107
7ea08b87 108=head2 Updated Modules and Pragmata
855e1b21 109
a0316a43
DG
110XXX Make sure these get sorted, are phrased similarly and all version
111numbers are correct
112
855e1b21
NC
113=over 4
114
7ea08b87
DG
115=item *
116
e8cfd41a
DG
117autodie updated to CPAN version 2.10 (a009834)
118
119=item *
120
655d344e
DG
121charnames -- viacode() is now significantly faster (f3227b7)
122
123=item *
124
a0316a43
DG
125version now prevents object methods from being called as class methods
126(d808b68)
127
128=item *
129
e8cfd41a
DG
130warnings updated to 1.10. Calling C<use warnings> without
131arguments is now significantly more efficient. (8452af9)
132
133=item *
134
ca68faa2
CBW
135Archive-Extract updated to CPAN version 0.42 (d7f8799)
136
137Updates since 0.38 include: a safe print method that Michael Schwern
138contributed, that guards Archive::Extract from changes to $\; a
139fix to the tests when run in core perl from Robin Barker; and
140support for TZ files contributed by Paul Marquess, who also supplied a
141modification for the lzma logic to favour IO::Uncompress::Unlzma
142
143=item *
144
a0316a43
DG
145Archive-Tar updated to version 1.64 (afabe0e)
146
827ada3b
CBW
147Important changes since 1.54 include: compatibility with busybox
148implementations of tar which was added by Mark Swayne; a fix so
149that write() and create_archive() close only handles
150they opened by Darrell K.; and a bug was fixed regarding the exit code
151of extract_archive which was spotted by and upstreamed from RedHat by
152Martin Cermak.
153
154=item *
155
e8cfd41a
DG
156Attribute-Handlers updated to CPAN version 0.88 (f2ea78b)
157
158=item *
159
655d344e
DG
160Compress-Raw-Bzip2 updated to CPAN version 2.027 (9e09409)
161
162=item *
163
164Compress-Raw-Zlib updated to CPAN version 2.027 (f02c02e)
165
166=item *
167
a0316a43
DG
168CPANPLUS updated to version 0.9007 (d4e225a)
169
170Fix the shell test to skip if test is not being run under a
171terminal; resolved the issue where a prereq on Config would not be
172recognised as a core module
173
174=item *
175
176Digest-MD5 updated to CPAN version 2.40 (326fafa)
177
178=item *
179
2c1a561b
CBW
180Digest-SHA updated to CPAN version 5.48 (dfe1edc)
181
182=item *
183
a0316a43
DG
184Exporter no longer overrides C<$SIG{__WARN__}> (RT #74472) (9b86bb5)
185
186=item *
187
e8cfd41a
DG
188ExtUtils-CBuilder updated to CPAN version 0.2703 (7b0eef9)
189
190=item *
191
192ExtUtils-Manifest updated to CPAN version 1.58 (49c6bc4)
193
194=item *
195
a0316a43
DG
196ExtUtil-ParseXS updated to version 2.2206 (494e8c4)
197
198=item *
199
200File::Copy skips suid tests on a nosuid partition (cae9400)
201
202=item *
203
655d344e
DG
204IO-Compress upated to CPAN version 2.027 (e8796d6)
205
206=item *
207
a0316a43
DG
208IPC-Cmd updated to CPAN version 0.60 (e667e1e)
209
210=item *
211
2d635dbf
CBW
212IPC-SysV updated to CPAN version 2.03 (10613b6)
213
a0316a43
DG
214=item *
215
216Locale::Maketext guts have been merged back into the main module (87d86da)
217and adds external cache support (ace47d6)
218
2d635dbf
CBW
219=item *
220
a0316a43 221Module-Build updated to CPAN version 0.3607 (40c9afb)
655d344e
DG
222
223=item *
224
ee10537b
CBW
225Module-Load updated to CPAN version 0.18 (93eaa32)
226
227=item *
228
e417c914
AB
229Term-ANSIColor to CPAN version 3.00 (2c33c76)
230
231=item *
232
e8cfd41a
DG
233Time-HiRes updated to CPAN version 1.9721 (68c5b4d)
234
235=item *
236
237Time-Piece updated to CPAN version 1.20 (90d55c2)
238
239=item *
240
241Unicode-Collate updated to CPAN version 0.53. Includes Unicode Collation
242Algorithm 18 (74b94a7)
243
244=item *
245
246Unicode-Normalize updated to CPAN release 1.06 (a96160d)
7ea08b87
DG
247
248=back
249
7ea08b87
DG
250=head1 Documentation
251
7ea08b87 252=head2 New Documentation
855e1b21 253
a0316a43 254=head3 L<perl5121delta>
855e1b21 255
655d344e 256The Perl 5.12.1 perldelta file was added from the Perl maintenance branch
855e1b21 257
7ea08b87 258=head2 Changes to Existing Documentation
855e1b21 259
a0316a43 260=head3 General changes
655d344e 261
a0316a43 262=over
855e1b21 263
655d344e 264=item *
855e1b21 265
cdd0aa9c
DG
266Octal character escapes in documentation now prefer a three-digit octal
267escape or the new C<\o{}> escape as they have more consistent behavior
268in different contexts than other forms. (ce7b6f0) (d8b950d) (e1f120a)
a0316a43
DG
269
270=item *
271
272Documentation now standardizes on the term 'capture group' over 'buffer'
cdd0aa9c 273in regular expression documentation (c27a5cf)
655d344e
DG
274
275=back
276
277=head3 L<perlfunc>
278
279=over
280
281=item *
282
283Added cautionary note about "no VERSION" (e0de7c2)
284
285=item *
286
287Add additional notes regarding srand and forking (d460397)
7ea08b87
DG
288
289=back
290
a0316a43
DG
291=head3 L<perlop>
292
293=over 4
294
295=item *
296
297Improved documentation of unusual character escapes (bf82ca4)
298
cdd0aa9c
DG
299=item *
300
301Clarifies how hexadecimal escapes are interpreted, with particular
302attention to the treatment of invalid characters. (9644846)
303
a0316a43
DG
304=back
305
306=head3 L<perlrun>
307
308=over
309
310=item *
311
312Clarifies the behavior of the C<-0NNN> switch for C<-0400> or higher (7ba31cb)
313
314=back
315
316=head3 L<perlpolicy>
317
318=over
319
320=item *
321
322Added the policy on compatibility and deprecation along with definitions of
323terms like "deprecation" (70e4a83)
324
325=back
326
cdd0aa9c
DG
327=head3 L<perlre>
328
329=over
330
331=item *
332
333Added examples on the perils of not using \g{} when there are more
334than nine back-references (9d86067)
335
336=back
337
a0316a43
DG
338=head3 L<perltie>
339
340=over
341
342=item *
343
344Some examples updated for modern Perl style (67d00dd)
345
346=back
347
7ea08b87
DG
348=head1 Utility Changes
349
a0316a43 350=head3 L<perldb>
7ea08b87 351
a0316a43 352=over
7ea08b87 353
976a3bea
JJ
354=item *
355
356The remote terminal works after forking and spawns new sessions - one
357for each forked process.
358
a0316a43 359=item *
855e1b21 360
a0316a43 361Uses the less pager path from Config instead of searching for it (bf320d6)
855e1b21 362
7ea08b87
DG
363=back
364
365=head1 Configuration and Compilation
366
855e1b21
NC
367=over 4
368
7ea08b87 369=item *
855e1b21 370
a0316a43 371Adjusts 'make test.valgrind' to account for cpan/dist/ext separation. (e07ce2e)
855e1b21
NC
372
373=back
374
7ea08b87 375=head1 Testing
855e1b21 376
855e1b21
NC
377=over 4
378
379=item *
380
655d344e
DG
381F<t/harness> clears PERL5LIB, PERLLIB, PERL5OPT as t/TEST does (a2d3de1)
382
383=item *
384
385Many common testing routines were refactored into t/lib/common.pl
386
387=item *
388
389Several test files have been modernized to use Test::More
855e1b21
NC
390
391=back
392
7ea08b87
DG
393=head1 Platform Support
394
7ea08b87 395=head2 Discontinued Platforms
855e1b21 396
855e1b21
NC
397=over 4
398
e8cfd41a 399=item MacOS Classic
855e1b21 400
e8cfd41a
DG
401Support for MacOS Classic within ExtUtils::MakeMaker was removed from Perl in
402December 2004. Vestigial MacOS Classic specific code has now been removed
c1a0360b 403from other core modules as well (8f8c2a4..c457df0).
855e1b21
NC
404
405=back
406
7ea08b87 407=head2 Platform-Specific Notes
855e1b21 408
855e1b21
NC
409=over 4
410
a0316a43 411=item Win32
855e1b21 412
a0316a43
DG
413t/io/openpid.t now uses the alarm() watchdog strategy for more
414robustness. (5732108)
855e1b21
NC
415
416=back
417
7ea08b87 418=head1 Internal Changes
855e1b21 419
855e1b21
NC
420=over 4
421
422=item *
423
ce1e4fda
DG
424Under some circumstances, the C<CvGV()> field of a CV is now reference
425counted. To ensure consistent behaviour, direct assignment to it, for
426example C<CvGV(cv) = gv> is now a compile-time error. A new macro,
427C<CvGV_set(cv,gv)> has been introduced to perform this operation safely.
428Note that modification of this field is not part of of the public API,
4cd32ffe
AB
429regardless of this new macro. This change caused some
430L<issues|/"Known Problems"> in modules that used the private C<GvGV()>
431field.
ce1e4fda
DG
432
433=item *
434
6ea72ee3
BM
435It is now possible for XS code to hook into Perl's lexical scope
436mechanism at compile time, using the new C<Perl_blockhook_register>
437function. See L<perlguts/"Compile-time scope hooks">.
855e1b21 438
a0316a43 439=item *
855e1b21 440
a0316a43
DG
441Added C<Perl_croak_no_modify()> to implement
442C<Perl_croak("%s", PL_no_modify)>. (6ad8f25)
efdecbbd 443
655d344e
DG
444=item *
445
a0316a43
DG
446Added prototypes for C<tie()> and C<untie()> to allow overloading. (RT#75902)
447(1db4d19)
448
449=item *
450
451Adds C<my_[l]stat_flags()> to replace C<my_[l]stat()>. C<my_stat()> and
452C<my_lstat()> call get magic on the stack arg, so create C<_flags()>
453variants that allow us to control this. (0d7d409)
655d344e 454
efdecbbd
NC
455=back
456
7ea08b87 457=head1 Selected Bug Fixes
855e1b21 458
855e1b21
NC
459=over 4
460
461=item *
462
ce1e4fda
DG
463Some work has been done on the internal pointers that link between symbol
464tables (stashes), typeglobs and subroutines. This has the effect that
465various edge cases related to deleting stashes or stash entries (e.g.
466<%FOO:: = ()>), and complex typeglob or code reference aliasing, will no
467longer crash the interpreter.
468
469=item *
470
976a3bea
JJ
471Fixed readline() when interrupted by signals so it no longer returns
472the "same thing" as before or random memory.
473
474=item *
475
e8cfd41a 476Fixed a regression of kill() when a match variable is used for the
655d344e 477process ID to kill. (RT#75812) (8af710e)
e8cfd41a
DG
478
479=item *
480
481Fixed several subtle bugs in sort() when @_ is accessed within a subroutine
482used for sorting. (RT#72334) (8f443ca)
483
655d344e
DG
484=item *
485
486Catch yyparse() exceptions in C<< (?{...}) >> (RT#2353) (634d691)
487
488=item *
489
490Avoid UTF-8 cache panics with offsets beyond a string (RT #75898) (3e2d381)
491
492=item *
493
494Fixed POSIX::strftime memory leak (RT#73520) (c4bc4aa)
495
496=item *
497
498Doesn't set strict with C<no VERSION> if C<VERSION> is greater than 5.12.
499(da8fb5d)
500
a0316a43
DG
501=item *
502
503Avoids multiple FETCH/stringify on filetest ops (40c852d)
504
505=item *
506
507Fixed issue with string C<eval> not detecting taint of overloaded/tied
508arguments (RT #75716) (895b760)
509
510=item *
511
512Fix potential crashes of string C<eval> when evaluating a object with
513overloaded stringification by creating a stringified copy when necessary
514(3e5c018)
515
516=item *
517
518Fixed bug where overloaded stringification could remove tainting
519(RT #75716) (a02ec77)
520
521=item *
522
523Plugs more memory leaks in vms.c. (9e2bec0)
524
525=item *
526
527Fix pthread include error for Time::Piece (e9f284c)
855e1b21
NC
528
529=back
530
7ea08b87 531=head1 Known Problems
855e1b21 532
7ea08b87
DG
533=over 4
534
535=item *
536
cdd0aa9c
DG
537Bug fixes involving CvGV reference counting break L<Sub::Name>. A
538patch has been sent upstream to the maintainer.
539
540=item *
541
976a3bea
JJ
542readline() returns an empty string instead of undef when it is
543interrupted by a signal.
7ea08b87
DG
544
545=back
855e1b21 546
e8cfd41a
DG
547=head1 Errata
548
549=over 4
550
551=item *
552
553Retroactively added the Acknowledgements list to L<perl5132delta>,
554which was excluded in the original release (d1e2db0)
555
556=back
557
855e1b21
NC
558=head1 Acknowledgements
559
560XXX The list of people to thank goes here.
561
855e1b21
NC
562=head1 Reporting Bugs
563
564If you find what you think is a bug, you might check the articles
565recently posted to the comp.lang.perl.misc newsgroup and the perl
566bug database at http://rt.perl.org/perlbug/ . There may also be
567information at http://www.perl.org/ , the Perl Home Page.
568
569If you believe you have an unreported bug, please run the B<perlbug>
570program included with your release. Be sure to trim your bug down
571to a tiny but sufficient test case. Your bug report, along with the
572output of C<perl -V>, will be sent off to perlbug@perl.org to be
573analysed by the Perl porting team.
574
575If the bug you are reporting has security implications, which make it
576inappropriate to send to a publicly archived mailing list, then please send
577it to perl5-security-report@perl.org. This points to a closed subscription
578unarchived mailing list, which includes all the core committers, who be able
579to help assess the impact of issues, figure out a resolution, and help
580co-ordinate the release of patches to mitigate or fix the problem across all
581platforms on which Perl is supported. Please only use this address for
582security issues in the Perl core, not for modules independently
583distributed on CPAN.
584
585=head1 SEE ALSO
586
587The F<Changes> file for an explanation of how to view exhaustive details
588on what changed.
589
590The F<INSTALL> file for how to build Perl.
591
592The F<README> file for general stuff.
593
594The F<Artistic> and F<Copying> files for copyright information.
595
596=cut