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