This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5133delta.pod: Acknowledgements and code delta
[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 upper case C<0X...> or C<0B...> prefixes,
55 in addition to the already supported C<0x...> and C<0b...>
56 syntax. (RT#76296) (a674e8d, 333f87f)
57
58 C, Ruby, Python and PHP already supported this syntax, and it makes
59 Perl more internally consistent. A round-trip with C<eval sprintf
60 "%#X", 0x10> now returns C<16> in addition to C<eval sprintf "%#x",
61 0x10>, which worked before.
62
63 =head1 Incompatible Changes
64
65 =head2 \400 - \777
66
67 Use of C<\400> - C<\777> in regexes in certain circumstances has given different,
68 anomalous behavior than their use in all other double-quotish contexts.   Since
69 5.10.1, a deprecated warning message has been raised when this happens.  Now,
70 all double-quotish contexts have the same behavior, namely to be equivalent to
71 C<\x{100}> - C<\x{1FF}>, with no deprecation warning. Use of these values in the
72 command line option C<"-0"> retains the current meaning to slurp input files
73 whole; previously, this was documented only for C<"-0777">.  It is recommended,
74 however, because of various ambiguities, to use the new L</\o{...}> construct
75 to represent characters in octal (fa1639c..f6993e9).
76
77 =head1 Deprecations
78
79 =head2 Omitting a space between regular expression and subsequent word
80
81 Omitting a space between a regex pattern or pattern modifiers and the
82 following word is deprecated. Deprecation for regular expression matches
83 was added in Perl 5.13.2.  In this release, the deprecation is extended
84 to regular expression substitutions. For example, 
85 C<< s/foo/bar/sand $bar >> will still be parsed as
86 C<< s/foo/bar/s and $bar >> but will issue a warning.  
87
88 =head2 Deprecation warning added for deprecated-in-core .pl libs
89
90 This is a mandatory warning, not obeying -X or lexical warning bits.
91 The warning is modelled on that supplied by deprecate.pm for
92 deprecated-in-core .pm libraries.  It points to the specific CPAN
93 distribution that contains the .pl libraries. The CPAN version, of
94 course, does not generate the warning. (0111154)
95
96 =head1 Performance Enhancements
97
98 =over 4
99
100 =item *
101
102 There are several small optimizations to improve CPU cache performance
103
104 =back
105
106 =head1 Modules and Pragmata
107
108 =head2 Updated Modules and Pragmata
109
110 XXX Make sure these get sorted, are phrased similarly and all version
111 numbers are correct
112
113 =over 4
114
115 =item *
116
117 autodie updated to CPAN version 2.10 (a009834)
118
119 =item *
120
121 charnames -- viacode() is now significantly faster (f3227b7)
122
123 =item *
124
125 version now prevents object methods from being called as class methods
126 (d808b68)
127
128 =item *
129
130 warnings updated to 1.10.  Calling C<use warnings> without
131 arguments is now significantly more efficient. (8452af9)
132
133 =item *
134
135 Archive-Extract updated to CPAN version 0.42 (d7f8799)
136
137 Updates since 0.38 include: a safe print method that Michael Schwern
138 contributed, that guards Archive::Extract from changes to $\; a
139 fix to the tests when run in core perl from Robin Barker; and
140 support for TZ files contributed by Paul Marquess, who also supplied a
141 modification for the lzma logic to favour IO::Uncompress::Unlzma
142
143 =item *
144
145 Archive-Tar updated to version 1.64 (afabe0e)
146
147 Important changes since 1.54 include: compatibility with busybox
148 implementations of tar which was added by Mark Swayne; a fix so
149 that write() and create_archive() close only handles
150 they opened by Darrell K.; and a bug was fixed regarding the exit code
151 of extract_archive which was spotted by and upstreamed from RedHat by
152 Martin Cermak.
153
154 =item *
155
156 Attribute-Handlers updated to CPAN version 0.88 (f2ea78b)
157
158 =item *
159
160 Compress-Raw-Bzip2 updated to CPAN version 2.027 (9e09409)
161
162 =item *
163
164 Compress-Raw-Zlib updated  to CPAN version 2.027 (f02c02e)
165
166 =item *
167
168 CPANPLUS updated to version 0.9007 (d4e225a)
169
170 Fix the shell test to skip if test is not being run under a
171 terminal; resolved the issue where a prereq on Config would not be
172 recognised as a core module
173
174 =item *
175
176 Digest-MD5 updated to CPAN version 2.40 (326fafa)
177
178 =item *
179
180 Digest-SHA updated to CPAN version 5.48 (dfe1edc)
181
182 =item *
183
184 Exporter no longer overrides C<$SIG{__WARN__}> (RT #74472) (9b86bb5)
185
186 =item *
187
188 ExtUtils-CBuilder updated to CPAN version 0.2703 (7b0eef9)
189
190 =item *
191
192 ExtUtils-Manifest updated to CPAN version 1.58 (49c6bc4)
193
194 =item *
195
196 ExtUtil-ParseXS updated to version 2.2206 (494e8c4)
197
198 =item *
199
200 File::Copy skips suid tests on a nosuid partition (cae9400)
201
202 These tests were being skipped on OpenBSD, but nosuid partitions can
203 exist on other systems too. Now it just checks if it can create a suid
204 directory, if not the tests are skipped.
205
206 Perl builds without errors in a nosuid /tmp with this patch.
207
208 =item *
209
210 IO-Compress upated to CPAN version 2.027 (e8796d6)
211
212 =item *
213
214 IPC-Cmd updated to CPAN version 0.60 (e667e1e)
215
216 =item *
217
218 IPC-SysV updated to CPAN version 2.03 (10613b6)
219
220 =item * 
221
222 Locale::Maketext guts have been merged back into the main module (87d86da)
223 and adds external cache support (ace47d6)
224
225 =item *
226
227 Module-Build updated to CPAN version 0.3607 (40c9afb)
228
229 =item *
230
231 Module-Load updated to CPAN version 0.18 (93eaa32)
232
233 =item *
234
235 Term-ANSIColor to CPAN version 3.00 (2c33c76)
236
237 =item *
238
239 Test-Harness to CPAN version 3.21 (6d31366)
240
241 The core update from Test-Harness 3.17 to 3.21 fixed some things, but
242 also L<introduced a known problem|/"Known Problems">.
243
244 =item *
245
246 Time-HiRes updated to CPAN version 1.9721 (68c5b4d)
247
248 =item *
249
250 Time-Piece updated to CPAN version 1.20 (90d55c2)
251
252 =item *
253
254 Unicode-Collate updated to CPAN version 0.53.  Includes Unicode Collation
255 Algorithm 18 (74b94a7)
256
257 =item *
258
259 Unicode-Normalize updated to CPAN release 1.06 (a96160d)
260
261 =back
262
263 =head1 Documentation
264
265 =head2 New Documentation
266
267 =head3 L<perl5121delta>
268
269 The Perl 5.12.1 perldelta file was added from the Perl maintenance branch
270
271 =head2 Changes to Existing Documentation
272
273 =head3 General changes
274
275 =over
276
277 =item *
278
279 Octal character escapes in documentation now prefer a three-digit octal 
280 escape or the new C<\o{}> escape as they have more consistent behavior
281 in different contexts than other forms. (ce7b6f0) (d8b950d) (e1f120a)
282
283 =item *
284
285 Documentation now standardizes on the term 'capture group' over 'buffer'
286 in regular expression documentation (c27a5cf)
287
288 =back
289
290 =head3 L<perlfunc>
291
292 =over
293
294 =item *
295
296 Added cautionary note about "no VERSION" (e0de7c2)
297
298 =item *
299
300 Add additional notes regarding srand and forking (d460397)
301
302 =back
303
304 =head3 L<perlop>
305
306 =over 4
307
308 =item *
309
310 Improved documentation of unusual character escapes (4068718, 9644846)
311
312 =item *
313
314 Clarifies how hexadecimal escapes are interpreted, with particular
315 attention to the treatment of invalid characters. (9644846)
316
317 =back
318
319 =head3 L<perlrun>
320
321 =over
322
323 =item *
324
325 Clarifies the behavior of the C<-0NNN> switch for C<-0400> or higher (7ba31cb)
326
327 =back
328
329 =head3 L<perlpolicy>
330
331 =over
332
333 =item *
334
335 Added the policy on compatibility and deprecation along with definitions of
336 terms like "deprecation" (70e4a83)
337
338 =back
339
340 =head3 L<perlre>
341
342 =over
343
344 =item *
345
346 Added examples on the perils of not using \g{} when there are more
347 than nine back-references (9d86067)
348
349 =back
350
351 =head3 L<perltie>
352
353 =over
354
355 =item *
356
357 Some examples updated for modern Perl style (67d00dd)
358
359 =back
360
361 =head1 Utility Changes
362
363 =head3 L<perldb>
364
365 =over
366
367 =item *
368
369 The remote terminal works after forking and spawns new sessions - one
370 for each forked process.
371
372 =item * 
373
374 Uses the less pager path from Config instead of searching for it (bf320d6)
375
376 =back
377
378 =head1 Configuration and Compilation
379
380 =over 4
381
382 =item *
383
384 Adjusts 'make test.valgrind' to account for cpan/dist/ext separation. (e07ce2e)
385
386 =back
387
388 =head1 Testing
389
390 =over 4
391
392 =item *
393
394 F<t/harness> clears PERL5LIB, PERLLIB, PERL5OPT as t/TEST does (a2d3de1)
395
396 =item *
397
398 Many common testing routines were refactored into t/lib/common.pl
399
400 =item *
401
402 Several test files have been modernized to use Test::More
403
404 =back
405
406 =head1 Platform Support
407
408 =head2 Discontinued Platforms
409
410 =over 4
411
412 =item MacOS Classic
413
414 Support for MacOS Classic within ExtUtils::MakeMaker was removed from Perl in
415 December 2004.  Vestigial MacOS Classic specific code has now been removed
416 from other core modules as well (8f8c2a4..c457df0).
417
418 =back
419
420 =head2 Platform-Specific Notes
421
422 =over 4
423
424 =item Win32
425
426 t/io/openpid.t now uses the alarm() watchdog strategy for more
427 robustness. (5732108)
428
429 =back
430
431 =head1 Internal Changes
432
433 =over 4
434
435 =item *
436
437 Under some circumstances, the C<CvGV()> field of a CV is now reference
438 counted. To ensure consistent behaviour, direct assignment to it, for
439 example C<CvGV(cv) = gv> is now a compile-time error. A new macro,
440 C<CvGV_set(cv,gv)> has been introduced to perform this operation safely.
441 Note that modification of this field is not part of of the public API,
442 regardless of this new macro. This change caused some
443 L<issues|/"Known Problems"> in modules that used the private C<GvGV()>
444 field.
445
446 =item *
447
448 It is now possible for XS code to hook into Perl's lexical scope
449 mechanism at compile time, using the new C<Perl_blockhook_register>
450 function. See L<perlguts/"Compile-time scope hooks">.
451
452 =item *
453
454 Added C<Perl_croak_no_modify()> to implement 
455 C<Perl_croak("%s", PL_no_modify)>. (6ad8f25)
456
457 =item *
458
459 Added prototypes for C<tie()> and C<untie()> to allow overloading. (RT#75902)
460 (1db4d19)
461
462 =item * 
463
464 Adds C<my_[l]stat_flags()> to replace C<my_[l]stat()>.  C<my_stat()> and
465 C<my_lstat()> call get magic on the stack arg, so create C<_flags()>
466 variants that allow us to control this. (0d7d409)
467
468 =back
469
470 =head1 Selected Bug Fixes
471
472 =over 4
473
474 =item *
475
476 Some work has been done on the internal pointers that link between symbol
477 tables (stashes), typeglobs and subroutines. This has the effect that
478 various edge cases related to deleting stashes or stash entries (e.g.
479 <%FOO:: = ()>), and complex typeglob or code reference aliasing, will no
480 longer crash the interpreter.
481
482 =item *
483
484 Fixed readline() when interrupted by signals so it no longer returns
485 the "same thing" as before or random memory.
486
487 =item *
488
489 Fixed a regression of kill() when a match variable is used for the
490 process ID to kill.  (RT#75812) (8af710e)
491
492 =item *
493
494 Fixed several subtle bugs in sort() when @_ is accessed within a subroutine
495 used for sorting. (RT#72334) (8f443ca)
496
497 =item *
498
499 Catch yyparse() exceptions in C<< (?{...}) >> (RT#2353) (634d691)
500
501 =item *
502
503 Avoid UTF-8 cache panics with offsets beyond a string (RT #75898) (3e2d381)
504
505 =item *
506
507 Fixed POSIX::strftime memory leak (RT#73520) (c4bc4aa)
508
509 =item *
510
511 Doesn't set strict with C<no VERSION> if C<VERSION> is greater than 5.12.
512 (da8fb5d)
513
514 =item *
515
516 Avoids multiple FETCH/stringify on filetest ops (40c852d)
517
518 =item *
519
520 Fixed issue with string C<eval> not detecting taint of overloaded/tied
521 arguments (RT #75716) (895b760)
522
523 =item *
524
525 Fix potential crashes of string C<eval> when evaluating a object with
526 overloaded stringification by creating a stringified copy when necessary
527 (3e5c018)
528
529 =item *
530
531 Fixed bug where overloaded stringification could remove tainting
532 (RT #75716) (a02ec77)
533
534 =item *
535
536 Plugs more memory leaks in vms.c. (9e2bec0)
537
538 =item *
539
540 Fix pthread include error for Time::Piece (e9f284c)
541
542 =back
543
544 =head1 Known Problems
545
546 =over 4
547
548 =item *
549
550 Bug fixes involving CvGV reference counting break L<Sub::Name>.  A
551 patch has been sent upstream to the maintainer.
552
553 =item *
554
555 readline() returns an empty string instead of undef when it is
556 interrupted by a signal.
557
558 =item *
559
560 Test-Harness was updated from 3.17 to 3.21 for this release. A rewrite
561 in how it handles non-Perl tests (in 3.17_01) broke argument passing
562 to non-Perl tests with L<prove(1)> (RT #59186), and required that
563 non-Perl tests be run as C<prove ./test.sh> instead of C<prove
564 test.sh> (RT #59457).
565
566 These issues are being solved upstream, but didn't make it into this
567 release. They're expected to be fixed in time for perl v5.13.4.
568
569 =back
570
571 =head1 Errata
572
573 =over 4
574
575 =item *
576
577 Retroactively added the Acknowledgements list to L<perl5132delta>,
578 which was excluded in the original release (d1e2db0)
579
580 =back
581
582 =head1 Acknowledgements
583
584 Perl 5.13.3 represents approximately one month of development since Perl
585 5.13.2, and contains 12,184 lines of changes across 575 files from 104
586 authors and committers.
587
588 Thank you to the following for contributing to this release:
589
590 Abhijit Menon-Sen, Abigail, Alex Davies, Alex Vandiver, Alexandr
591 Ciornii, Andreas J. Koenig, Andrew Rodland, Andy Dougherty, Aristotle
592 Pagaltzis, Arkturuz, Ben Morrow, Bo Borgerson, Bo Lindbergh, Brad
593 Gilbert, Bram, Brian Phillips, Chas. Owens, Chip Salzenberg, Chris
594 Williams, Craig A. Berry, Curtis Jewell, Dan Dascalescu, Daniel
595 Frederick Crisman, Dave Rolsky, David Caldwell, David E. Wheeler, David
596 Golden, David Leadbeater, David Mitchell, Dennis Kaarsemaker, Eric
597 Brine, Father Chrysostomos, Florian Ragwitz, Frank Wiegand, Gene
598 Sullivan, George Greer, Gerard Goossen, Gisle Aas, Goro Fuji, Graham
599 Barr, H.Merijn Brand, Harmen, Hugo van der Sanden, James E Keenan, James
600 Mastros, Jan Dubois, Jerry D. Hedden, Jesse Vincent, Jim Cromie, John
601 Peacock, Jos Boumans, Josh ben Jore, Karl Williamson, Kevin Ryde, Leon
602 Brocard, Lubomir Rintel, Maik Hentsche, Marcus Holland-Moritz, Matt
603 Johnson, Matt S Trout, Max Maischein, Michael Breen, Michael G Schwern,
604 Moritz Lenz, Nga Tang Chan, Nicholas Clark, Nick Cleaton, Nick Johnston,
605 Niko Tyni, Offer Kaye, Paul Marquess, Philip Hazel, Philippe Bruhat,
606 Rafael Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes,
607 Richard Soderberg, Robin Barker, Ruslan Zakirov, Salvador Fandino,
608 Salvador Ortiz Garcia, Shlomi Fish, Sinan Unur, Sisyphus, Slaven Rezic,
609 Steffen Mueller, Stepan Kasal, Steve Hay, Steve Peters, Sullivan Beck,
610 Tim Bunce, Todd Rinaldo, Tom Christiansen, Tom Hukins, Tony Cook,
611 Vincent Pit, Yuval Kogman, Yves Orton, Zefram, brian d foy, chromatic,
612 kmx, Ævar Arnfjörð Bjarmason
613
614 =head1 Reporting Bugs
615
616 If you find what you think is a bug, you might check the articles
617 recently posted to the comp.lang.perl.misc newsgroup and the perl
618 bug database at http://rt.perl.org/perlbug/ .  There may also be
619 information at http://www.perl.org/ , the Perl Home Page.
620
621 If you believe you have an unreported bug, please run the B<perlbug>
622 program included with your release.  Be sure to trim your bug down
623 to a tiny but sufficient test case.  Your bug report, along with the
624 output of C<perl -V>, will be sent off to perlbug@perl.org to be
625 analysed by the Perl porting team.
626
627 If the bug you are reporting has security implications, which make it
628 inappropriate to send to a publicly archived mailing list, then please send
629 it to perl5-security-report@perl.org. This points to a closed subscription
630 unarchived mailing list, which includes all the core committers, who be able
631 to help assess the impact of issues, figure out a resolution, and help
632 co-ordinate the release of patches to mitigate or fix the problem across all
633 platforms on which Perl is supported. Please only use this address for
634 security issues in the Perl core, not for modules independently
635 distributed on CPAN.
636
637 =head1 SEE ALSO
638
639 The F<Changes> file for an explanation of how to view exhaustive details
640 on what changed.
641
642 The F<INSTALL> file for how to build Perl.
643
644 The F<README> file for general stuff.
645
646 The F<Artistic> and F<Copying> files for copyright information.
647
648 =cut