1345581fa3273c34ff1209d58cb71243b671b90e
[perl.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to 0aae26c14, except for:
5 803e389 rurban  CYG17 utf8 paths
6 d9298c1 rurban  mymalloc isn't thread safe
7
8 =head1 NAME
9
10 [ this is a template for a new perldelta file. Any text flagged as
11 XXX needs to be processed before release. ]
12
13 perldelta - what is new for perl v5.15.8
14
15 =head1 DESCRIPTION
16
17 This document describes differences between the 5.15.7 release and
18 the 5.15.8 release.
19
20 If you are upgrading from an earlier release such as 5.15.6, first read
21 L<perl5157delta>, which describes differences between 5.15.6 and
22 5.15.7.
23
24 =head1 Notice
25
26 XXX Any important notices here
27
28 =head1 Core Enhancements
29
30 XXX New core language features go here. Summarise user-visible core language
31 enhancements. Particularly prominent performance optimisations could go
32 here, but most should go in the L</Performance Enhancements> section.
33
34 [ List each enhancement as a =head2 entry ]
35
36 =head2 Improved ability to mix locales and Unicode, including UTF-8 locales
37
38 An optional parameter has been added to C<use locale>
39
40  use locale ':not_characters';
41
42 which tells Perl to use all but the C<LC_CTYPE> and C<LC_COLLATE>
43 portions of the current locale.  Instead, the character set is assumed
44 to be Unicode.  This allows locales and Unicode to be seamlessly mixed,
45 including the increasingly frequent UTF-8 locales.  When using this
46 hybrid form of locales, the C<:locale> layer to the L<open> pragma can
47 be used to interface with the file system, and there are CPAN modules
48 available for ARGV and environment variable conversions.
49
50 Full details are in L<perllocale>.
51
52 =head2 New function C<fc> and corresponding escape sequence C<\F> for Unicode foldcase
53
54 Unicode foldcase is an extension to lowercase that gives better results
55 when comparing two strings case-insensitively.  It has long been used
56 internally in regular expression C</i> matching.  Now it is available
57 explicitly through the new C<fc> function call (enabled by
58 S<C<"use feature 'fc'">>, or C<use v5.16>, or explicitly callable via
59 C<CORE::fc>) or through the new C<\F> sequence in double-quotish
60 strings.
61
62 Full details are in L<perlfunc/fc>.
63
64 =head2 C<_> in subroutine prototypes
65
66 The C<_> character in subroutine prototypes is now allowed before C<@> or
67 C<%>.
68
69 =head1 Supports (I<almost>) Unicode 6.1
70
71 Besides the addition of whole new scripts, and new characters in
72 existing scripts, this new version of Unicode, as always, makes some
73 changes to existing characters.  One change that may trip up some
74 applications is that the General Category of two characters in the
75 Latin-1 range, PILCROW SIGN and SECTION SIGN, has been changed from
76 Other_Symbol to Other_Punctuation.  The same change has been made for
77 a character in each of Tibetan, Ethiopic, and Aegean.
78 The code points U+3248..U+324F (CIRCLED NUMBER TEN ON BLACK SQUARE
79 through CIRCLED NUMBER EIGHTY ON BLACK SQUARE) have had their General
80 Category changed from Other_Symbol to Other_Numeric.  The Line Break
81 property has changes for Hebrew and Japanese; and as a consequence of
82 other changes in 6.1, the Perl regular expression construct C<\X> now
83 works differently for some characters in Thai and Lao.
84
85 New aliases (synonyms) have been defined for many property values;
86 these, along with the previously existing ones, are all cross indexed in
87 L<perluniprops>.
88
89 The return value of C<charnames::viacode> is affected by other changes.
90 One of these is that the preferred name (which is what C<viacode>
91 returns) for the character at U+2118 has been changed from SCRIPT CAPITAL P
92 to WEIERSTRASS ELLIPTIC FUNCTION.  But most of these changes are the
93 fallout of the mistake Unicode 6.0 made in naming a character used in
94 Japanese cell phones to be "BELL", which conflicts with the long
95 standing industry use of (and Unicode's recommendation to use) that name
96 to mean the ASCII control character at U+0007.  As a result, that name
97 has been deprecated in Perl since v5.14; and any use of it will raise a
98 warning message (unless turned off).  The name "ALERT" is now the
99 preferred name for this code point, with "BEL" being an acceptable short
100 form.  The name for the new cell phone character, at code point U+1F514,
101 remains undefined in this version of Perl (hence we don't quite
102 implement all of Unicode 6.1), but starting in v5.18, BELL will mean
103 this character, and not U+0007.
104
105 Unicode has taken steps to make sure that this sort of mistake does not
106 happen again.  The Standard now includes all the generally accepted
107 names and abbreviations for control characters, whereas previously it
108 didn't.  This means that all the names that Perl had previously
109 deprecated (except BELL) are no longer deprecated, such as FILE
110 SEPARATOR.  Also, the names for four rarely used characters are subtly
111 different (a hyphen instead of a space) than before:
112
113  Code point    Old Name         New Name
114    U+008E    SINGLE-SHIFT 2   SINGLE-SHIFT-2
115    U+008F    SINGLE-SHIFT 3   SINGLE-SHIFT-3
116    U+0091    PRIVATE USE 1    PRIVATE USE-1
117    U+0092    PRIVATE USE 2    PRIVATE USE-2
118
119 Perl will accept either name as input, but C<charnames::viacode> now
120 returns the new name.
121
122 Additional name abbreviations are accepted:
123 SP for SPACE;
124 TAB for CHARACTER TABULATION;
125 NEW LINE, END OF LINE, NL, and EOL for LINE FEED;
126 LOCKING-SHIFT ONE for SHIFT OUT;
127 LOCKING-SHIFT ZERO for SHIFT IN;
128 and ZWNBSP for ZERO WIDTH NO-BREAK SPACE.
129
130 More details on this version of Unicode are provided in
131 L<http://www.unicode.org/versions/Unicode6.1.0/>.
132
133 =head1 Security
134
135 XXX Any security-related notices go here.  In particular, any security
136 vulnerabilities closed should be noted here rather than in the
137 L</Selected Bug Fixes> section.
138
139 [ List each security issue as a =head2 entry ]
140
141 =head1 Incompatible Changes
142
143 XXX For a release on a stable branch, this section aspires to be:
144
145     There are no changes intentionally incompatible with 5.XXX.XXX
146     If any exist, they are bugs, and we request that you submit a
147     report.  See L</Reporting Bugs> below.
148
149 [ List each incompatible change as a =head2 entry ]
150
151 =head2 Special blocks called in void context
152
153 Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now
154 called in void context.  This avoids wasteful copying of the result of the
155 last statement [perl #108794].
156
157 =head2 The C<overloading> pragma and regexp objects
158
159 With C<no overloading>, regular expression objects returned by C<qr//> are
160 now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
161 expression itself [perl #108780].
162
163 =head2 Two XS typemap Entries removed
164
165 Two presumably unused XS typemap entries have been removed from the
166 core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds,
167 a user of these, please see the instructions on how to regain them
168 in L<perlxstypemap>.
169
170 =head2 Unicode 6.1 has incompatibilities with Unicode 6.0
171
172 These are detailed in L</Supports (almost) Unicode 6.1> above.
173
174 =head2 Changed returns for some properties in C<Unicode::UCD::prop_invmap()>
175
176 The return values for C<prop_invmap> have been changed for some
177 properties to make the returned lists significantly smaller.  This
178 allows those lists to be searched faster.
179
180 This function was introduced earlier in the v5.15 series of releases,
181 and the API will not be considered stable until v5.16.
182
183 See L<Unicode::UCD/prop_invmap()> for details on the new interface.
184
185 =head1 Deprecations
186
187 XXX Any deprecated features, syntax, modules etc. should be listed here.
188 In particular, deprecated modules should be listed here even if they are
189 listed as an updated module in the L</Modules and Pragmata> section.
190
191 [ List each deprecation as a =head2 entry ]
192
193 =head1 Performance Enhancements
194
195 XXX Changes which enhance performance without changing behaviour go here. There
196 may well be none in a stable release.
197
198 [ List each enhancement as a =item entry ]
199
200 =over 4
201
202 =item *
203
204 XXX
205
206 =back
207
208 =head1 Modules and Pragmata
209
210 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
211 go here.  If Module::CoreList is updated, generate an initial draft of the
212 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
213 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
214 below.  A paragraph summary for important changes should then be added by hand.
215 In an ideal world, dual-life modules would have a F<Changes> file that could be
216 cribbed.
217
218 [ Within each section, list entries as a =item entry ]
219
220 =head2 New Modules and Pragmata
221
222 =over 4
223
224 =item *
225
226 The C<mmap> PerlIO layer is no longer implemented by perl itself, but has
227 been moved out into the new L<PerlIO::mmap> module.
228
229 =back
230
231 =head2 Updated Modules and Pragmata
232
233 =over 4
234
235 =item *
236
237 L<arybase> has been upgraded from version 0.03 to version 0.04.
238
239 List slices no longer modify items on the stack belonging to outer lists
240 [perl #109570].
241
242 =item *
243
244 L<B> has been upgraded from version 1.33 to version 1.34.
245
246 C<B::COP> now has a C<stashflags> method, corresponding to a new internal
247 field added in 5.15.4 [perl #108860].
248
249 =item *
250
251 L<Carp> has been upgraded from version 1.24 to version 1.25.
252
253 It now puts a dot after the file and line number, just like errors from
254 C<die> [perl #106538].
255
256 =item *
257
258 L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048.
259
260 =item *
261
262 L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.048.
263
264 =item *
265
266 L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048.
267
268 =item *
269
270 L<CPAN::Meta> has been upgraded from version 2.113640 to version 2.120351.
271
272 Work around a memory leak bug involving version objects in boolean context.
273
274 =item *
275
276 L<CPAN::Meta::YAML> has been upgraded from version 0.005 to version 0.007.
277
278 =item *
279
280 L<DB_File> has been upgraded from version 1.824 to version 1.826.
281
282 =item *
283
284 L<diagnostics> has been upgraded from version 1.27 to version 1.28.
285
286 When searching for F<perldiag.pod>, it no longer uses paths that were only
287 relevant on Perl 5.004 and earlier.
288
289 =item *
290
291 L<ExtUtils::ParseXS> has been upgraded from version 3.12 to version 3.15.
292
293 The new version comes with important tools for sharing typemaps between
294 different CPAN distributions.
295
296 =item *
297
298 L<File::Copy> has been upgraded from version 2.21 to version 2.23.
299
300 It no longer emits warnings when copying files with newlines in their names
301 [perl #109104].
302
303 =item *
304
305 L<IPC::Cmd> has been upgraded from version 0.72 to version 0.76.
306
307 =item *
308
309 L<Math::Complex> has been upgraded from version 1.58 to version 1.59.
310
311 This avoids a new core warning.
312
313 =item *
314
315 L<Module::Metadata> has been upgraded from version 1.000007 to version 1.000009.
316
317 Adds C<provides> method to generate a CPAN META provides data structure
318 correctly; use of C<package_versions_from_directory> is discouraged.
319
320 =item *
321
322 L<Parse::CPAN::Meta> has been upgraded from version 1.4401 to version 1.4402.
323
324 =item *
325
326 L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
327
328 =item *
329
330 L<Term::ReadLine> has been upgraded from version 1.07 to version 1.08.
331
332 Its C<tkRunning> method now supports L<AnyEvent> event loops, and not just
333 L<Tk>.  A more general mechanism has been proposed, so this may be reverted
334 before Perl 5.16 [perl #108470].
335
336 =item *
337
338 L<Time::HiRes>  has been upgraded from version 1.9724 to version 1.9725.
339
340 C<Time::HiRes::stat()> no longer corrupts the Perl stack.
341
342 =item *
343
344 L<Unicode::UCD> has been upgraded from version 0.39 to 0.40.
345
346 The only change is to fix a formatting error in the Pod.
347
348 =item *
349
350 L<Version::Requirements> has been upgraded from version 0.101021 to version 0.101022.
351
352 =back
353
354 =head2 Removed Modules and Pragmata
355
356 =over 4
357
358 =item *
359
360 XXX
361
362 =back
363
364 =head1 Documentation
365
366 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
367 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
368
369 =head2 New Documentation
370
371 XXX Changes which create B<new> files in F<pod/> go here.
372
373 =head3 L<perlxstypemap>
374
375 The new manual describes the XS typemapping mechanism in unprecedented
376 detail and combines new documentation with information extracted from
377 L<perlxs> and the previously unofficial list of all core typemaps.
378
379 =head3 L<XXX>
380
381 XXX Description of the purpose of the new file here
382
383 =head2 Changes to Existing Documentation
384
385 XXX Changes which significantly change existing files in F<pod/> go here.
386 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
387 section.
388
389 =head3 L<XXX>
390
391 =over 4
392
393 =item *
394
395 XXX Description of the change here
396
397 =back
398
399 =head1 Diagnostics
400
401 The following additions or changes have been made to diagnostic output,
402 including warnings and fatal error messages.  For the complete list of
403 diagnostic messages, see L<perldiag>.
404
405 XXX New or changed warnings emitted by the core's C<C> code go here. Also
406 include any changes in L<perldiag> that reconcile it to the C<C> code.
407
408 [ Within each section, list entries as a =item entry that links to perldiag,
409   e.g.
410
411   =item *
412
413   L<Invalid version object|perldiag/"Invalid version object">
414 ]
415
416 =head2 New Diagnostics
417
418 XXX Newly added diagnostic messages go here
419
420 =head3 New Errors
421
422 =over 4
423
424 =item *
425
426 XXX L<message|perldiag/"message">
427
428 =back
429
430 =head3 New Warnings
431
432 =over 4
433
434 =item *
435
436 XXX L<message|perldiag/"message">
437
438 =back
439
440 =head2 Changes to Existing Diagnostics
441
442 XXX Changes (i.e. rewording) of diagnostic messages go here
443
444 =over 4
445
446 =item *
447
448 XXX Describe change here
449
450 =back
451
452 =head1 Utility Changes
453
454 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
455 here. Most of these are built within the directories F<utils> and F<x2p>.
456
457 [ List utility changes as a =head3 entry for each utility and =item
458 entries for each change
459 Use L<XXX> with program names to get proper documentation linking. ]
460
461 =head3 L<XXX>
462
463 =over 4
464
465 =item *
466
467 XXX
468
469 =back
470
471 =head1 Configuration and Compilation
472
473 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
474 go here.  Any other changes to the Perl build process should be listed here.
475 However, any platform-specific changes should be listed in the
476 L</Platform Support> section, instead.
477
478 [ List changes as a =item entry ].
479
480 =over 4
481
482 =item *
483
484 XXX
485
486 =back
487
488 =head1 Testing
489
490 XXX Any significant changes to the testing of a freshly built perl should be
491 listed here.  Changes which create B<new> files in F<t/> go here as do any
492 large changes to the testing harness (e.g. when parallel testing was added).
493 Changes to existing files in F<t/> aren't worth summarising, although the bugs
494 that they represent may be covered elsewhere.
495
496 [ List each test improvement as a =item entry ]
497
498 =over 4
499
500 =item *
501
502 XXX
503
504 =item *
505
506 The test suite for typemaps has been extended to cover a larger fraction of
507 the core typemaps.
508
509 =back
510
511 =head1 Platform Support
512
513 XXX Any changes to platform support should be listed in the sections below.
514
515 [ Within the sections, list each platform as a =item entry with specific
516 changes as paragraphs below it. ]
517
518 =head2 New Platforms
519
520 XXX List any platforms that this version of perl compiles on, that previous
521 versions did not. These will either be enabled by new files in the F<hints/>
522 directories, or new subdirectories and F<README> files at the top level of the
523 source tree.
524
525 =over 4
526
527 =item XXX-some-platform
528
529 XXX
530
531 =back
532
533 =head2 Discontinued Platforms
534
535 XXX List any platforms that this version of perl no longer compiles on.
536
537 =over 4
538
539 =item XXX-some-platform
540
541 XXX
542
543 =back
544
545 =head2 Platform-Specific Notes
546
547 XXX List any changes for specific platforms. This could include configuration
548 and compilation changes or changes in portability/compatibility.  However,
549 changes within modules for platforms should generally be listed in the
550 L</Modules and Pragmata> section.
551
552 =over 4
553
554 =item XXX-some-platform
555
556 XXX
557
558 =back
559
560 =head1 Internal Changes
561
562 XXX Changes which affect the interface available to C<XS> code go here.
563 Other significant internal changes for future core maintainers should
564 be noted as well.
565
566 [ List each change as a =item entry ]
567
568 =over 4
569
570 =item *
571
572 XXX
573
574 =back
575
576 =head1 Selected Bug Fixes
577
578 XXX Important bug fixes in the core language are summarised here.
579 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
580 L</Modules and Pragmata>.
581
582 [ List each fix as a =item entry ]
583
584 =over 4
585
586 =item *
587
588 C<~~> now correctly handles the precedence of Any~~Object, and is not tricked
589 by an overloaded object on the left-hand side.
590
591 =item *
592
593 C<stat _> no longer warns about unopened filehandles [perl #71002].
594
595 =item *
596
597 C<stat> on an unopened filehandle now warns consistently, instead of
598 skipping the warning at times.
599
600 =item *
601
602 A change in an earlier 5.15 release caused warning hints to propagate into
603 C<do $file>.  This has been fixed [rt.cpan.org #72767].
604
605 =item *
606
607 Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up
608 after assigning C<${ qr// }> to a hash element and locking it with
609 L<Hash::Util>.  This could result in double frees, crashes or erratic
610 behaviour.
611
612 =item *
613
614 In 5.15.7, some typeglobs in the CORE namespace were made read-only by
615 mistake.  This has been fixed [rt.cpan.org #74289].
616
617 =item *
618
619 C<-t> now works when stacked with other filetest operators [perl #77388].
620
621 =item *
622
623 Stacked filetest operators now only call FETCH once on a tied argument.
624
625 =item *
626
627 C</.*/g> would sometimes refuse to match at the end of a string that ends
628 with "\n".  This has been fixed [perl #109206].
629
630 =item *
631
632 C<m/[[:ascii:]]/i> and C</\p{ASCII}/i> now match identically (when not
633 under a differing locale).  This fixes a regression introduced in 5.14
634 in which the first expression could match characters outside of ASCII,
635 such as the KELVIN SIGN.
636
637 =item *
638
639 Method calls whose arguments were all surrounded with C<my()> or C<our()>
640 (as in C<<$object->method(my($a,$b)) >>) used to force lvalue context on
641 the subroutine.  This would prevent lvalue methods from returning certain
642 values.  Due to lvalue fixes earlier in the 5.15.x series, it would also
643 prevent non-lvalue methods from being called [perl #109264].
644
645 =for comment
646 This bug I<did> affect earlier stable releases.  It is just the last
647 sentence that does not apply to 5.14.
648
649 =item *
650
651 The C<SvPVutf8> C function no longer tries to modify its argument,
652 resulting in errors [perl #108994].
653
654 =item *
655
656 C<SvPVutf8> now works properly with magical variables.
657
658 =item *
659
660 C<SvPVbyte> now works properly non-PVs.
661
662 =back
663
664 =head1 Known Problems
665
666 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
667 tests that had to be C<TODO>ed for the release would be noted here, unless
668 they were specific to a particular platform (see below).
669
670 This is a list of some significant unfixed bugs, which are regressions
671 from either 5.XXX.XXX or 5.XXX.XXX.
672
673 [ List each fix as a =item entry ]
674
675 =over 4
676
677 =item *
678
679 XXX
680
681 =back
682
683 =head1 Obituary
684
685 XXX If any significant core contributor has died, we've added a short obituary
686 here.
687
688 =head1 Acknowledgements
689
690 XXX Generate this with:
691
692   perl Porting/acknowledgements.pl v5.15.7..HEAD
693
694 =head1 Reporting Bugs
695
696 If you find what you think is a bug, you might check the articles
697 recently posted to the comp.lang.perl.misc newsgroup and the perl
698 bug database at http://rt.perl.org/perlbug/ .  There may also be
699 information at http://www.perl.org/ , the Perl Home Page.
700
701 If you believe you have an unreported bug, please run the L<perlbug>
702 program included with your release.  Be sure to trim your bug down
703 to a tiny but sufficient test case.  Your bug report, along with the
704 output of C<perl -V>, will be sent off to perlbug@perl.org to be
705 analysed by the Perl porting team.
706
707 If the bug you are reporting has security implications, which make it
708 inappropriate to send to a publicly archived mailing list, then please send
709 it to perl5-security-report@perl.org. This points to a closed subscription
710 unarchived mailing list, which includes
711 all the core committers, who will be able
712 to help assess the impact of issues, figure out a resolution, and help
713 co-ordinate the release of patches to mitigate or fix the problem across all
714 platforms on which Perl is supported. Please only use this address for
715 security issues in the Perl core, not for modules independently
716 distributed on CPAN.
717
718 =head1 SEE ALSO
719
720 The F<Changes> file for an explanation of how to view exhaustive details
721 on what changed.
722
723 The F<INSTALL> file for how to build Perl.
724
725 The F<README> file for general stuff.
726
727 The F<Artistic> and F<Copying> files for copyright information.
728
729 =cut