This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Module::CoreList for v5.15.8
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to 0aae26c14, except for:
5 d9298c1 rurban  mymalloc isn't thread safe
6
7 =head1 NAME
8
9 perldelta - what is new for perl v5.15.8
10
11 =head1 DESCRIPTION
12
13 This document describes differences between the 5.15.7 release and
14 the 5.15.8 release.
15
16 If you are upgrading from an earlier release such as 5.15.6, first read
17 L<perl5157delta>, which describes differences between 5.15.6 and
18 5.15.7.
19
20 =head1 Notice
21
22 This space intentionally left blank.
23
24 =head1 Core Enhancements
25
26 =head2 Improved ability to mix locales and Unicode, including UTF-8 locales
27
28 An optional parameter has been added to C<use locale>
29
30  use locale ':not_characters';
31
32 which tells Perl to use all but the C<LC_CTYPE> and C<LC_COLLATE>
33 portions of the current locale.  Instead, the character set is assumed
34 to be Unicode.  This allows locales and Unicode to be seamlessly mixed,
35 including the increasingly frequent UTF-8 locales.  When using this
36 hybrid form of locales, the C<:locale> layer to the L<open> pragma can
37 be used to interface with the file system, and there are CPAN modules
38 available for ARGV and environment variable conversions.
39
40 Full details are in L<perllocale>.
41
42 =head2 New function C<fc> and corresponding escape sequence C<\F> for Unicode foldcase
43
44 Unicode foldcase is an extension to lowercase that gives better results
45 when comparing two strings case-insensitively.  It has long been used
46 internally in regular expression C</i> matching.  Now it is available
47 explicitly through the new C<fc> function call (enabled by
48 S<C<"use feature 'fc'">>, or C<use v5.16>, or explicitly callable via
49 C<CORE::fc>) or through the new C<\F> sequence in double-quotish
50 strings.
51
52 Full details are in L<perlfunc/fc>.
53
54 =head2 C<_> in subroutine prototypes
55
56 The C<_> character in subroutine prototypes is now allowed before C<@> or
57 C<%>.
58
59 =head2 Supports (I<almost>) Unicode 6.1
60
61 Besides the addition of whole new scripts, and new characters in
62 existing scripts, this new version of Unicode, as always, makes some
63 changes to existing characters.  One change that may trip up some
64 applications is that the General Category of two characters in the
65 Latin-1 range, PILCROW SIGN and SECTION SIGN, has been changed from
66 Other_Symbol to Other_Punctuation.  The same change has been made for
67 a character in each of Tibetan, Ethiopic, and Aegean.
68 The code points U+3248..U+324F (CIRCLED NUMBER TEN ON BLACK SQUARE
69 through CIRCLED NUMBER EIGHTY ON BLACK SQUARE) have had their General
70 Category changed from Other_Symbol to Other_Numeric.  The Line Break
71 property has changes for Hebrew and Japanese; and as a consequence of
72 other changes in 6.1, the Perl regular expression construct C<\X> now
73 works differently for some characters in Thai and Lao.
74
75 New aliases (synonyms) have been defined for many property values;
76 these, along with the previously existing ones, are all cross indexed in
77 L<perluniprops>.
78
79 The return value of C<charnames::viacode()> is affected by other
80 changes:
81
82  Code point      Old Name             New Name
83    U+000A    LINE FEED (LF)        LINE FEED
84    U+000C    FORM FEED (FF)        FORM FEED
85    U+000D    CARRIAGE RETURN (CR)  CARRIAGE RETURN
86    U+0085    NEXT LINE (NEL)       NEXT LINE
87    U+008E    SINGLE-SHIFT 2        SINGLE-SHIFT-2
88    U+008F    SINGLE-SHIFT 3        SINGLE-SHIFT-3
89    U+0091    PRIVATE USE 1         PRIVATE USE-1
90    U+0092    PRIVATE USE 2         PRIVATE USE-2
91    U+2118    SCRIPT CAPITAL P      WEIERSTRASS ELLIPTIC FUNCTION
92
93 Perl will accept any of these names as input, but
94 C<charnames::viacode()> now returns the new name of each pair.  The
95 change for U+2118 is considered by Unicode to be a correction, that is
96 the original name was a mistake (but again, it will remain forever valid
97 to use it to refer to U+2118).  But most of these changes are the
98 fallout of the mistake Unicode 6.0 made in naming a character used in
99 Japanese cell phones to be "BELL", which conflicts with the long
100 standing industry use of (and Unicode's recommendation to use) that name
101 to mean the ASCII control character at U+0007.  As a result, that name
102 has been deprecated in Perl since v5.14; and any use of it will raise a
103 warning message (unless turned off).  The name "ALERT" is now the
104 preferred name for this code point, with "BEL" being an acceptable short
105 form.  The name for the new cell phone character, at code point U+1F514,
106 remains undefined in this version of Perl (hence we don't quite
107 implement all of Unicode 6.1), but starting in v5.18, BELL will mean
108 this character, and not U+0007.
109
110 Unicode has taken steps to make sure that this sort of mistake does not
111 happen again.  The Standard now includes all the generally accepted
112 names and abbreviations for control characters, whereas previously it
113 didn't (though there were recommended names for most of them, which Perl
114 used).  This means that most of those recommended names are now
115 officially in the Standard.  Unicode did not recommend names for the
116 four code points listed above between U+008E and U+008F, and in
117 standardizing them Unicode subtly changed the names that Perl had
118 previously given them, by replacing the final blank in each name by a
119 hyphen.  Unicode also officially accepts names that Perl had deprecated,
120 such as FILE SEPARATOR.  Now the only deprecated name is BELL.
121 Finally, Perl now uses the new official names instead of the old
122 (now considered obsolete) names for the first four code points in the
123 list above (the ones which have the parentheses in them).
124
125 Now that the names have been placed in the Unicode standard, these kinds
126 of changes should not happen again, though corrections, such as to
127 U+2118, are still possible.
128
129 Unicode also added some name abbreviations, which Perl now accepts:
130 SP for SPACE;
131 TAB for CHARACTER TABULATION;
132 NEW LINE, END OF LINE, NL, and EOL for LINE FEED;
133 LOCKING-SHIFT ONE for SHIFT OUT;
134 LOCKING-SHIFT ZERO for SHIFT IN;
135 and ZWNBSP for ZERO WIDTH NO-BREAK SPACE.
136
137 More details on this version of Unicode are provided in
138 L<http://www.unicode.org/versions/Unicode6.1.0/>.
139
140 =head2 Added C<is_utf8_char_buf()>
141
142 This function is designed to replace the deprecated L</is_utf8_char()>
143 function.  It includes an extra parameter to make sure it doesn't read
144 past the end of the input buffer.
145
146 =head1 Security
147
148 =head2 Use C<is_utf8_char_buf()> and not C<is_utf8_char()>
149
150 The latter function is now deprecated because its API is insufficient to
151 guarantee that it doesn't read (up to 12 bytes in the worst case) beyond
152 the end of its input string.  See
153 L<is_utf8_char_buf()|/Added is_utf8_char_buf()>.
154
155 =head1 Incompatible Changes
156
157 [ List each incompatible change as a =head2 entry ]
158
159 =head2 Special blocks called in void context
160
161 Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now
162 called in void context.  This avoids wasteful copying of the result of the
163 last statement [perl #108794].
164
165 =head2 The C<overloading> pragma and regexp objects
166
167 With C<no overloading>, regular expression objects returned by C<qr//> are
168 now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
169 expression itself [perl #108780].
170
171 =head2 Two XS typemap Entries removed
172
173 Two presumably unused XS typemap entries have been removed from the
174 core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds,
175 a user of these, please see the instructions on how to regain them
176 in L<perlxstypemap>.
177
178 =head2 Unicode 6.1 has incompatibilities with Unicode 6.0
179
180 These are detailed in L</Supports (almost) Unicode 6.1> above.
181
182 =head2 Changed returns for some properties in C<Unicode::UCD::prop_invmap()>
183
184 The return values for C<prop_invmap> have been changed for some
185 properties to make the returned lists significantly smaller.  This
186 allows those lists to be searched faster.
187
188 This function was introduced earlier in the v5.15 series of releases,
189 and the API will not be considered stable until v5.16.
190
191 See L<Unicode::UCD/prop_invmap()> for details on the new interface.
192
193 =head2 C<$$> and C<getppid()> no longer emulate POSIX semantics under LinuxThreads
194
195 The POSIX emulation of C<$$> and C<getppid()> under the obsolete
196 LinuxThreads implementation has been removed (the C<$$> emulation was
197 actually removed in v5.15.0). This only impacts users of Linux 2.4 and
198 users of Debian GNU/kFreeBSD up to and including 6.0, not the vast
199 majority of Linux installations that use NPTL threads.
200
201 This means that C<getppid()> like C<$$> is now always guaranteed to
202 return the OS's idea of the current state of the process, not perl's
203 cached version of it.
204
205 See the documentation for L<$$|perlvar/$$> for details.
206
207 =head2 C<< $< >>, C<< $> >>, C<$(> and C<$)> are no longer cached
208
209 Similarly to the changes to C<$$> and C<getppid()> the internal
210 caching of C<< $< >>, C<< $> >>, C<$(> and C<$)> has been removed.
211
212 When we cached these values our idea of what they were would drift out
213 of sync with reality if someone (e.g. someone embedding perl) called
214 sete?[ug]id() without updating C<PL_e?[ug]id>. Having to deal with
215 this complexity wasn't worth it given how cheap the C<gete?[ug]id()>
216 system call is.
217
218 This change will break a handful of CPAN modules that use the XS-level
219 C<PL_uid>, C<PL_gid>, C<PL_euid> or C<PL_egid> variables.
220
221 The fix for those breakages is to use C<PerlProc_gete?[ug]id()> to
222 retrieve them (e.g. C<PerlProc_getuid()>), and not to assign to
223 C<PL_e?[ug]id> if you change the UID/GID/EUID/EGID. There is no longer
224 any need to do so since perl will always retrieve the up-to-date
225 version of those values from the OS.
226
227 =head2 Which Non-ASCII characters get quoted by C<quotemeta> and C<\Q> has changed
228
229 This is unlikely to result in a real problem, as Perl does not attach
230 special meaning to any non-ASCII character, so it is currently
231 irrelevant which are quoted or not.  This change fixes bug [perl #77654] and
232 bring Perl's behavior more into line with Unicode's recommendations.
233 See L<perlfunc/quotemeta>.
234
235 =head1 Deprecations
236
237 =head2 C<is_utf8_char()>
238
239 This function is deprecated because it could read beyond the end of the
240 input string.  Use the new L<is_utf8_char_buf()|/Added is_utf8_char_buf()>
241 instead.
242
243 =head1 Modules and Pragmata
244
245 =head2 New Modules and Pragmata
246
247 =over 4
248
249 =item *
250
251 The C<mmap> PerlIO layer is no longer implemented by perl itself, but has
252 been moved out into the new L<PerlIO::mmap> module.
253
254 =back
255
256 =head2 Updated Modules and Pragmata
257
258 =over 4
259
260 =item *
261
262 L<arybase> has been upgraded from version 0.03 to version 0.04.
263
264 List slices no longer modify items on the stack belonging to outer lists
265 [perl #109570].
266
267 =item *
268
269 L<B> has been upgraded from version 1.33 to version 1.34.
270
271 C<B::COP> now has a C<stashflags> method, corresponding to a new internal
272 field added in 5.15.4 [perl #108860].
273
274 =item *
275
276 L<Carp> has been upgraded from version 1.24 to version 1.25.
277
278 It now puts a dot after the file and line number, just like errors from
279 C<die> [perl #106538].
280
281 =item *
282
283 L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048.
284
285 =item *
286
287 L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.048.
288
289 =item *
290
291 L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048.
292
293 =item *
294
295 L<CPAN::Meta> has been upgraded from version 2.113640 to version 2.120351.
296
297 Work around a memory leak bug involving version objects in boolean context.
298
299 =item *
300
301 L<CPAN::Meta::YAML> has been upgraded from version 0.005 to version 0.007.
302
303 =item *
304
305 L<CPANPLUS> has been upgraded from version 0.9116 to version 0.9118.
306
307 =item *
308
309 L<CPANPLUS::Dist::Build> has been upgraded from version 0.60 to version 0.62.
310
311 =item *
312
313 L<Data::Dumper> has been upgraded from version 2.135_04 to version 2.135_05.
314
315 =item *
316
317 L<DB_File> has been upgraded from version 1.824 to version 1.826.
318
319 =item *
320
321 L<diagnostics> has been upgraded from version 1.27 to version 1.28.
322
323 When searching for F<perldiag.pod>, it no longer uses paths that were only
324 relevant on Perl 5.004 and earlier.
325
326 =item *
327
328 L<ExtUtils::ParseXS> has been upgraded from version 3.12 to version 3.15.
329
330 The new version comes with important tools for sharing typemaps between
331 different CPAN distributions.
332
333 =item *
334
335 L<File::Copy> has been upgraded from version 2.21 to version 2.23.
336
337 It no longer emits warnings when copying files with newlines in their names
338 [perl #109104].
339
340 =item *
341
342 L<IPC::Cmd> has been upgraded from version 0.72 to version 0.76.
343
344 =item *
345
346 L<Math::Complex> has been upgraded from version 1.58 to version 1.59.
347
348 This avoids a new core warning.
349
350 =item *
351
352 L<Module::CoreList> has been upgraded from version 2.60 to version 2.61.
353
354 =item *
355
356 L<Module::Metadata> has been upgraded from version 1.000007 to version 1.000009.
357
358 Adds C<provides> method to generate a CPAN META provides data structure
359 correctly; use of C<package_versions_from_directory> is discouraged.
360
361 =item *
362
363 L<Parse::CPAN::Meta> has been upgraded from version 1.4401 to version 1.4402.
364
365 =item *
366
367 L<perlfaq> has been upgraded from version 5.0150038 to version 5.0150039.
368
369 =item *
370
371 L<Pod::Functions> has been upgraded from version 1.04 to version 1.05.
372
373 F<Functions.pm> is now generated at perl build time from annotations in
374 F<perlfunc.pod>. This will ensure that L<Pod::Functions> and L<perlfunc>
375 remain in synchronisation.
376
377 =item *
378
379 L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
380
381 =item *
382
383 L<Term::ReadLine> has been upgraded from version 1.07 to version 1.08.
384
385 Term::ReadLine now supports any event loop, including unpublished ones and
386 simple L<IO::Select> loops without the need to rewrite existing code for
387 any particular framework [perl #108470].
388
389 =item *
390
391 L<Socket> has been upgraded from version 1.97 to version 1.98.
392
393 =item *
394
395 L<Time::HiRes>  has been upgraded from version 1.9724 to version 1.9725.
396
397 C<Time::HiRes::stat()> no longer corrupts the Perl stack.
398
399 =item *
400
401 L<Unicode::UCD> has been upgraded from version 0.39 to 0.40.
402
403 The only change is to fix a formatting error in the Pod.
404
405 =item *
406
407 L<Version::Requirements> has been upgraded from version 0.101021 to version 0.101022.
408
409 =back
410
411 =head2 Removed Modules and Pragmata
412
413 =over 4
414
415 =item *
416
417 XXX
418
419 =back
420
421 =head1 Documentation
422
423 =head2 New Documentation
424
425 =head3 L<perlxstypemap>
426
427 The new manual describes the XS typemapping mechanism in unprecedented
428 detail and combines new documentation with information extracted from
429 L<perlxs> and the previously unofficial list of all core typemaps.
430
431 =head1 Testing
432
433 =over 4
434
435 =item *
436
437 F<t/porting/pending-author.t> has been added, to avoid the problem of
438 C<make test> passing 100%, but the subsequent git commit causing
439 F<t/porting/authors.t> to fail, because it uses a "new" e-mail address.
440
441 This test is only run if one is building inside a git checkout, B<and> one
442 has made local changes. Otherwise it's skipped.
443
444 =item *
445
446 F<t/porting/perlfunc.t> has been added, to test that changes to
447 F<pod/perlfunc.pod> do not inadvertently break the build of L<Pod::Functions>.
448
449 =item *
450
451 The test suite for typemaps has been extended to cover a larger fraction of
452 the core typemaps.
453
454 =back
455
456 =head1 Platform Support
457
458 =head2 Platform-Specific Notes
459
460 =over 4
461
462 =item Cygwin
463
464 Since version 1.7, Cygwin supports native UTF-8 paths. If Perl is built
465 under that environment, directory and filenames will be UTF-8 encoded.
466
467 Cygwin does not initialize all original Win32 environment variables. See
468 F<README.cygwin> for a discussion of C<Cygwin::sync_winenv()> and
469 further links.
470
471 =item VMS
472
473 The build on VMS now allows names of the resulting
474 symbols in C code for Perl longer than 31 characters.
475 Symbols like C<Perl__it_was_the_best_of_times_it_was_the_worst_of_times>
476 can now be created freely without causing the VMS linker to seize up.
477
478 =back
479
480 =head1 Selected Bug Fixes
481
482 =over 4
483
484 =item *
485
486 C<~~> now correctly handles the precedence of Any~~Object, and is not tricked
487 by an overloaded object on the left-hand side.
488
489 =item *
490
491 C<stat _> no longer warns about unopened filehandles [perl #71002].
492
493 =item *
494
495 C<stat> on an unopened filehandle now warns consistently, instead of
496 skipping the warning at times.
497
498 =item *
499
500 A change in an earlier 5.15 release caused warning hints to propagate into
501 C<do $file>.  This has been fixed [rt.cpan.org #72767].
502
503 =item *
504
505 Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up
506 after assigning C<${ qr// }> to a hash element and locking it with
507 L<Hash::Util>.  This could result in double frees, crashes or erratic
508 behaviour.
509
510 =item *
511
512 In 5.15.7, some typeglobs in the CORE namespace were made read-only by
513 mistake.  This has been fixed [rt.cpan.org #74289].
514
515 =item *
516
517 C<-t> now works when stacked with other filetest operators [perl #77388].
518
519 =item *
520
521 Stacked filetest operators now only call FETCH once on a tied argument.
522
523 =item *
524
525 C</.*/g> would sometimes refuse to match at the end of a string that ends
526 with "\n".  This has been fixed [perl #109206].
527
528 =item *
529
530 C<m/[[:ascii:]]/i> and C</\p{ASCII}/i> now match identically (when not
531 under a differing locale).  This fixes a regression introduced in 5.14
532 in which the first expression could match characters outside of ASCII,
533 such as the KELVIN SIGN.
534
535 =item *
536
537 Method calls whose arguments were all surrounded with C<my()> or C<our()>
538 (as in C<< $object->method(my($a,$b)) >>) used to force lvalue context on
539 the subroutine.  This would prevent lvalue methods from returning certain
540 values.  Due to lvalue fixes earlier in the 5.15.x series, it would also
541 prevent non-lvalue methods from being called [perl #109264].
542
543 =for comment
544 This bug I<did> affect earlier stable releases.  It is just the last
545 sentence that does not apply to 5.14.
546
547 =item *
548
549 The C<SvPVutf8> C function no longer tries to modify its argument,
550 resulting in errors [perl #108994].
551
552 =item *
553
554 C<SvPVutf8> now works properly with magical variables.
555
556 =item *
557
558 C<SvPVbyte> now works properly non-PVs.
559
560 =item *
561
562 C</[[:ascii:]]/> and C</[[:blank:]]/> now use locale rules under
563 C<use locale> when the platform supports that.  Previously, they used
564 the platform's native character set.
565
566 =item *
567
568 A regression introduced in 5.13.6 was fixed.  This involved an inverted
569 bracketed character class in a regular expression that consisted solely
570 of a Unicode property, that property wasn't getting inverted outside the
571 Latin1 range.
572
573 =item *
574
575 C<quotemeta> now quotes consistently the same non-ASCII characters under
576 C<use feature 'unicode_strings'>, regardless of whether the string is
577 encoded in UTF-8 or not, hence fixing the last vestiges (we hope) of the
578 infamous L<perlunicode/The "Unicode Bug">.  [perl #77654].
579
580 Which of these code points is quoted has changed, based on Unicode's
581 recommendations.  See L<perlfunc/quotemeta> for details.
582
583 =back
584
585 =head1 Known Problems
586
587 This is a list of some significant unfixed bugs, which are regressions
588 from either 5.14.0 or 5.15.7.
589
590 =over 4
591
592 =item * C<eval { 'fork()' }> is broken on Windows [perl #109718]
593
594 This is a known test failure to be fixed before 5.16.0.
595
596 =back
597
598 =head1 Obituary
599
600 XXX If any significant core contributor has died, we've added a short obituary
601 here.
602
603 =head1 Acknowledgements
604
605 Perl 5.15.8 represents approximately 4 weeks of development since Perl 5.15.7
606 and contains approximately 61,000 lines of changes across 480 files from 36
607 authors.
608
609 Perl continues to flourish into its third decade thanks to a vibrant community
610 of users and developers. The following people are known to have contributed the
611 improvements that became Perl 5.15.8:
612
613 Abhijit Menon-Sen, Alan Haggai Alavi, Alexandr Ciornii, Andy Dougherty, Brian
614 Fraser, Chris 'BinGOs' Williams, Craig A. Berry, Darin McBride, Dave Rolsky,
615 David Golden, David Leadbeater, David Mitchell, Dominic Hargreaves, Eric Brine,
616 Father Chrysostomos, Florian Ragwitz, H.Merijn Brand, Juerd Waalboer, Karl
617 Williamson, Leon Timmermans, Marc Green, Max Maischein, Nicholas Clark, Paul
618 Evans, Rafael Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes, Robin
619 Barker, Shlomi Fish, Steffen Müller, Todd Rinaldo, Tony Cook, Yves Orton,
620 Zefram, Ævar Arnfjörð Bjarmason.
621
622 The list above is almost certainly incomplete as it is automatically generated
623 from version control history. In particular, it does not include the names of
624 the (very much appreciated) contributors who reported issues to the Perl bug
625 tracker.
626
627 Many of the changes included in this version originated in the CPAN modules
628 included in Perl's core. We're grateful to the entire CPAN community for
629 helping Perl to flourish.
630
631 For a more complete list of all of Perl's historical contributors, please see
632 the F<AUTHORS> file in the Perl source distribution.
633
634 =head1 Reporting Bugs
635
636 If you find what you think is a bug, you might check the articles
637 recently posted to the comp.lang.perl.misc newsgroup and the perl
638 bug database at http://rt.perl.org/perlbug/ .  There may also be
639 information at http://www.perl.org/ , the Perl Home Page.
640
641 If you believe you have an unreported bug, please run the L<perlbug>
642 program included with your release.  Be sure to trim your bug down
643 to a tiny but sufficient test case.  Your bug report, along with the
644 output of C<perl -V>, will be sent off to perlbug@perl.org to be
645 analysed by the Perl porting team.
646
647 If the bug you are reporting has security implications, which make it
648 inappropriate to send to a publicly archived mailing list, then please send
649 it to perl5-security-report@perl.org. This points to a closed subscription
650 unarchived mailing list, which includes
651 all the core committers, who will be able
652 to help assess the impact of issues, figure out a resolution, and help
653 co-ordinate the release of patches to mitigate or fix the problem across all
654 platforms on which Perl is supported. Please only use this address for
655 security issues in the Perl core, not for modules independently
656 distributed on CPAN.
657
658 =head1 SEE ALSO
659
660 The F<Changes> file for an explanation of how to view exhaustive details
661 on what changed.
662
663 The F<INSTALL> file for how to build Perl.
664
665 The F<README> file for general stuff.
666
667 The F<Artistic> and F<Copying> files for copyright information.
668
669 =cut