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