This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5133delta: Test-Harness to CPAN version 3.21 (6d31366)
[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
dd5f6923
AB
233Test-Harness to CPAN version 3.21 (6d31366)
234
235=item *
236
e8cfd41a
DG
237Time-HiRes updated to CPAN version 1.9721 (68c5b4d)
238
239=item *
240
241Time-Piece updated to CPAN version 1.20 (90d55c2)
242
243=item *
244
245Unicode-Collate updated to CPAN version 0.53. Includes Unicode Collation
246Algorithm 18 (74b94a7)
247
248=item *
249
250Unicode-Normalize updated to CPAN release 1.06 (a96160d)
7ea08b87
DG
251
252=back
253
7ea08b87
DG
254=head1 Documentation
255
7ea08b87 256=head2 New Documentation
855e1b21 257
a0316a43 258=head3 L<perl5121delta>
855e1b21 259
655d344e 260The Perl 5.12.1 perldelta file was added from the Perl maintenance branch
855e1b21 261
7ea08b87 262=head2 Changes to Existing Documentation
855e1b21 263
a0316a43 264=head3 General changes
655d344e 265
a0316a43 266=over
855e1b21 267
655d344e 268=item *
855e1b21 269
cdd0aa9c
DG
270Octal character escapes in documentation now prefer a three-digit octal
271escape or the new C<\o{}> escape as they have more consistent behavior
272in different contexts than other forms. (ce7b6f0) (d8b950d) (e1f120a)
a0316a43
DG
273
274=item *
275
276Documentation now standardizes on the term 'capture group' over 'buffer'
cdd0aa9c 277in regular expression documentation (c27a5cf)
655d344e
DG
278
279=back
280
281=head3 L<perlfunc>
282
283=over
284
285=item *
286
287Added cautionary note about "no VERSION" (e0de7c2)
288
289=item *
290
291Add additional notes regarding srand and forking (d460397)
7ea08b87
DG
292
293=back
294
a0316a43
DG
295=head3 L<perlop>
296
297=over 4
298
299=item *
300
301Improved documentation of unusual character escapes (bf82ca4)
302
cdd0aa9c
DG
303=item *
304
305Clarifies how hexadecimal escapes are interpreted, with particular
306attention to the treatment of invalid characters. (9644846)
307
a0316a43
DG
308=back
309
310=head3 L<perlrun>
311
312=over
313
314=item *
315
316Clarifies the behavior of the C<-0NNN> switch for C<-0400> or higher (7ba31cb)
317
318=back
319
320=head3 L<perlpolicy>
321
322=over
323
324=item *
325
326Added the policy on compatibility and deprecation along with definitions of
327terms like "deprecation" (70e4a83)
328
329=back
330
cdd0aa9c
DG
331=head3 L<perlre>
332
333=over
334
335=item *
336
337Added examples on the perils of not using \g{} when there are more
338than nine back-references (9d86067)
339
340=back
341
a0316a43
DG
342=head3 L<perltie>
343
344=over
345
346=item *
347
348Some examples updated for modern Perl style (67d00dd)
349
350=back
351
7ea08b87
DG
352=head1 Utility Changes
353
a0316a43 354=head3 L<perldb>
7ea08b87 355
a0316a43 356=over
7ea08b87 357
976a3bea
JJ
358=item *
359
360The remote terminal works after forking and spawns new sessions - one
361for each forked process.
362
a0316a43 363=item *
855e1b21 364
a0316a43 365Uses the less pager path from Config instead of searching for it (bf320d6)
855e1b21 366
7ea08b87
DG
367=back
368
369=head1 Configuration and Compilation
370
855e1b21
NC
371=over 4
372
7ea08b87 373=item *
855e1b21 374
a0316a43 375Adjusts 'make test.valgrind' to account for cpan/dist/ext separation. (e07ce2e)
855e1b21
NC
376
377=back
378
7ea08b87 379=head1 Testing
855e1b21 380
855e1b21
NC
381=over 4
382
383=item *
384
655d344e
DG
385F<t/harness> clears PERL5LIB, PERLLIB, PERL5OPT as t/TEST does (a2d3de1)
386
387=item *
388
389Many common testing routines were refactored into t/lib/common.pl
390
391=item *
392
393Several test files have been modernized to use Test::More
855e1b21
NC
394
395=back
396
7ea08b87
DG
397=head1 Platform Support
398
7ea08b87 399=head2 Discontinued Platforms
855e1b21 400
855e1b21
NC
401=over 4
402
e8cfd41a 403=item MacOS Classic
855e1b21 404
e8cfd41a
DG
405Support for MacOS Classic within ExtUtils::MakeMaker was removed from Perl in
406December 2004. Vestigial MacOS Classic specific code has now been removed
c1a0360b 407from other core modules as well (8f8c2a4..c457df0).
855e1b21
NC
408
409=back
410
7ea08b87 411=head2 Platform-Specific Notes
855e1b21 412
855e1b21
NC
413=over 4
414
a0316a43 415=item Win32
855e1b21 416
a0316a43
DG
417t/io/openpid.t now uses the alarm() watchdog strategy for more
418robustness. (5732108)
855e1b21
NC
419
420=back
421
7ea08b87 422=head1 Internal Changes
855e1b21 423
855e1b21
NC
424=over 4
425
426=item *
427
ce1e4fda
DG
428Under some circumstances, the C<CvGV()> field of a CV is now reference
429counted. To ensure consistent behaviour, direct assignment to it, for
430example C<CvGV(cv) = gv> is now a compile-time error. A new macro,
431C<CvGV_set(cv,gv)> has been introduced to perform this operation safely.
432Note that modification of this field is not part of of the public API,
4cd32ffe
AB
433regardless of this new macro. This change caused some
434L<issues|/"Known Problems"> in modules that used the private C<GvGV()>
435field.
ce1e4fda
DG
436
437=item *
438
6ea72ee3
BM
439It is now possible for XS code to hook into Perl's lexical scope
440mechanism at compile time, using the new C<Perl_blockhook_register>
441function. See L<perlguts/"Compile-time scope hooks">.
855e1b21 442
a0316a43 443=item *
855e1b21 444
a0316a43
DG
445Added C<Perl_croak_no_modify()> to implement
446C<Perl_croak("%s", PL_no_modify)>. (6ad8f25)
efdecbbd 447
655d344e
DG
448=item *
449
a0316a43
DG
450Added prototypes for C<tie()> and C<untie()> to allow overloading. (RT#75902)
451(1db4d19)
452
453=item *
454
455Adds C<my_[l]stat_flags()> to replace C<my_[l]stat()>. C<my_stat()> and
456C<my_lstat()> call get magic on the stack arg, so create C<_flags()>
457variants that allow us to control this. (0d7d409)
655d344e 458
efdecbbd
NC
459=back
460
7ea08b87 461=head1 Selected Bug Fixes
855e1b21 462
855e1b21
NC
463=over 4
464
465=item *
466
ce1e4fda
DG
467Some work has been done on the internal pointers that link between symbol
468tables (stashes), typeglobs and subroutines. This has the effect that
469various edge cases related to deleting stashes or stash entries (e.g.
470<%FOO:: = ()>), and complex typeglob or code reference aliasing, will no
471longer crash the interpreter.
472
473=item *
474
976a3bea
JJ
475Fixed readline() when interrupted by signals so it no longer returns
476the "same thing" as before or random memory.
477
478=item *
479
e8cfd41a 480Fixed a regression of kill() when a match variable is used for the
655d344e 481process ID to kill. (RT#75812) (8af710e)
e8cfd41a
DG
482
483=item *
484
485Fixed several subtle bugs in sort() when @_ is accessed within a subroutine
486used for sorting. (RT#72334) (8f443ca)
487
655d344e
DG
488=item *
489
490Catch yyparse() exceptions in C<< (?{...}) >> (RT#2353) (634d691)
491
492=item *
493
494Avoid UTF-8 cache panics with offsets beyond a string (RT #75898) (3e2d381)
495
496=item *
497
498Fixed POSIX::strftime memory leak (RT#73520) (c4bc4aa)
499
500=item *
501
502Doesn't set strict with C<no VERSION> if C<VERSION> is greater than 5.12.
503(da8fb5d)
504
a0316a43
DG
505=item *
506
507Avoids multiple FETCH/stringify on filetest ops (40c852d)
508
509=item *
510
511Fixed issue with string C<eval> not detecting taint of overloaded/tied
512arguments (RT #75716) (895b760)
513
514=item *
515
516Fix potential crashes of string C<eval> when evaluating a object with
517overloaded stringification by creating a stringified copy when necessary
518(3e5c018)
519
520=item *
521
522Fixed bug where overloaded stringification could remove tainting
523(RT #75716) (a02ec77)
524
525=item *
526
527Plugs more memory leaks in vms.c. (9e2bec0)
528
529=item *
530
531Fix pthread include error for Time::Piece (e9f284c)
855e1b21
NC
532
533=back
534
7ea08b87 535=head1 Known Problems
855e1b21 536
7ea08b87
DG
537=over 4
538
539=item *
540
cdd0aa9c
DG
541Bug fixes involving CvGV reference counting break L<Sub::Name>. A
542patch has been sent upstream to the maintainer.
543
544=item *
545
976a3bea
JJ
546readline() returns an empty string instead of undef when it is
547interrupted by a signal.
7ea08b87
DG
548
549=back
855e1b21 550
e8cfd41a
DG
551=head1 Errata
552
553=over 4
554
555=item *
556
557Retroactively added the Acknowledgements list to L<perl5132delta>,
558which was excluded in the original release (d1e2db0)
559
560=back
561
855e1b21
NC
562=head1 Acknowledgements
563
564XXX The list of people to thank goes here.
565
855e1b21
NC
566=head1 Reporting Bugs
567
568If you find what you think is a bug, you might check the articles
569recently posted to the comp.lang.perl.misc newsgroup and the perl
570bug database at http://rt.perl.org/perlbug/ . There may also be
571information at http://www.perl.org/ , the Perl Home Page.
572
573If you believe you have an unreported bug, please run the B<perlbug>
574program included with your release. Be sure to trim your bug down
575to a tiny but sufficient test case. Your bug report, along with the
576output of C<perl -V>, will be sent off to perlbug@perl.org to be
577analysed by the Perl porting team.
578
579If the bug you are reporting has security implications, which make it
580inappropriate to send to a publicly archived mailing list, then please send
581it to perl5-security-report@perl.org. This points to a closed subscription
582unarchived mailing list, which includes all the core committers, who be able
583to help assess the impact of issues, figure out a resolution, and help
584co-ordinate the release of patches to mitigate or fix the problem across all
585platforms on which Perl is supported. Please only use this address for
586security issues in the Perl core, not for modules independently
587distributed on CPAN.
588
589=head1 SEE ALSO
590
591The F<Changes> file for an explanation of how to view exhaustive details
592on what changed.
593
594The F<INSTALL> file for how to build Perl.
595
596The F<README> file for general stuff.
597
598The F<Artistic> and F<Copying> files for copyright information.
599
600=cut