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