This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5133delta: Expand on "Uppercase X/B allowed.."
[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
399from other core modules as well.
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,
425regardless of this new macro.
426
427=item *
428
6ea72ee3
BM
429It is now possible for XS code to hook into Perl's lexical scope
430mechanism at compile time, using the new C<Perl_blockhook_register>
431function. See L<perlguts/"Compile-time scope hooks">.
855e1b21 432
a0316a43 433=item *
855e1b21 434
a0316a43
DG
435Added C<Perl_croak_no_modify()> to implement
436C<Perl_croak("%s", PL_no_modify)>. (6ad8f25)
efdecbbd 437
655d344e
DG
438=item *
439
a0316a43
DG
440Added prototypes for C<tie()> and C<untie()> to allow overloading. (RT#75902)
441(1db4d19)
442
443=item *
444
445Adds C<my_[l]stat_flags()> to replace C<my_[l]stat()>. C<my_stat()> and
446C<my_lstat()> call get magic on the stack arg, so create C<_flags()>
447variants that allow us to control this. (0d7d409)
655d344e 448
efdecbbd
NC
449=back
450
7ea08b87 451=head1 Selected Bug Fixes
855e1b21 452
855e1b21
NC
453=over 4
454
455=item *
456
ce1e4fda
DG
457Some work has been done on the internal pointers that link between symbol
458tables (stashes), typeglobs and subroutines. This has the effect that
459various edge cases related to deleting stashes or stash entries (e.g.
460<%FOO:: = ()>), and complex typeglob or code reference aliasing, will no
461longer crash the interpreter.
462
463=item *
464
976a3bea
JJ
465Fixed readline() when interrupted by signals so it no longer returns
466the "same thing" as before or random memory.
467
468=item *
469
e8cfd41a 470Fixed a regression of kill() when a match variable is used for the
655d344e 471process ID to kill. (RT#75812) (8af710e)
e8cfd41a
DG
472
473=item *
474
475Fixed several subtle bugs in sort() when @_ is accessed within a subroutine
476used for sorting. (RT#72334) (8f443ca)
477
655d344e
DG
478=item *
479
480Catch yyparse() exceptions in C<< (?{...}) >> (RT#2353) (634d691)
481
482=item *
483
484Avoid UTF-8 cache panics with offsets beyond a string (RT #75898) (3e2d381)
485
486=item *
487
488Fixed POSIX::strftime memory leak (RT#73520) (c4bc4aa)
489
490=item *
491
492Doesn't set strict with C<no VERSION> if C<VERSION> is greater than 5.12.
493(da8fb5d)
494
a0316a43
DG
495=item *
496
497Avoids multiple FETCH/stringify on filetest ops (40c852d)
498
499=item *
500
501Fixed issue with string C<eval> not detecting taint of overloaded/tied
502arguments (RT #75716) (895b760)
503
504=item *
505
506Fix potential crashes of string C<eval> when evaluating a object with
507overloaded stringification by creating a stringified copy when necessary
508(3e5c018)
509
510=item *
511
512Fixed bug where overloaded stringification could remove tainting
513(RT #75716) (a02ec77)
514
515=item *
516
517Plugs more memory leaks in vms.c. (9e2bec0)
518
519=item *
520
521Fix pthread include error for Time::Piece (e9f284c)
855e1b21
NC
522
523=back
524
7ea08b87 525=head1 Known Problems
855e1b21 526
7ea08b87
DG
527=over 4
528
529=item *
530
cdd0aa9c
DG
531Bug fixes involving CvGV reference counting break L<Sub::Name>. A
532patch has been sent upstream to the maintainer.
533
534=item *
535
976a3bea
JJ
536readline() returns an empty string instead of undef when it is
537interrupted by a signal.
7ea08b87
DG
538
539=back
855e1b21 540
e8cfd41a
DG
541=head1 Errata
542
543=over 4
544
545=item *
546
547Retroactively added the Acknowledgements list to L<perl5132delta>,
548which was excluded in the original release (d1e2db0)
549
550=back
551
855e1b21
NC
552=head1 Acknowledgements
553
554XXX The list of people to thank goes here.
555
855e1b21
NC
556=head1 Reporting Bugs
557
558If you find what you think is a bug, you might check the articles
559recently posted to the comp.lang.perl.misc newsgroup and the perl
560bug database at http://rt.perl.org/perlbug/ . There may also be
561information at http://www.perl.org/ , the Perl Home Page.
562
563If you believe you have an unreported bug, please run the B<perlbug>
564program included with your release. Be sure to trim your bug down
565to a tiny but sufficient test case. Your bug report, along with the
566output of C<perl -V>, will be sent off to perlbug@perl.org to be
567analysed by the Perl porting team.
568
569If the bug you are reporting has security implications, which make it
570inappropriate to send to a publicly archived mailing list, then please send
571it to perl5-security-report@perl.org. This points to a closed subscription
572unarchived mailing list, which includes all the core committers, who be able
573to help assess the impact of issues, figure out a resolution, and help
574co-ordinate the release of patches to mitigate or fix the problem across all
575platforms on which Perl is supported. Please only use this address for
576security issues in the Perl core, not for modules independently
577distributed on CPAN.
578
579=head1 SEE ALSO
580
581The F<Changes> file for an explanation of how to view exhaustive details
582on what changed.
583
584The F<INSTALL> file for how to build Perl.
585
586The F<README> file for general stuff.
587
588The F<Artistic> and F<Copying> files for copyright information.
589
590=cut