This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
f57cc229bb8815d669f8014fdeda928677ad1da5
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to 7c5c3d9b except for:
5 a1da11a30dfa4f3543dcab00834ff535202f5085 (GNU/Hurd hints)
6 f0d0a205cc02c769ca48d6df00f3eea304ff91d8 (similar)
7 a058c51605ec2d38bf37f2e2c4f81926e3a90ea9 (Leon Timmermans; setresgid)
8 928b2f01177c40be013139c657d79c631790a916 (Reini Urban; Errno)
9
10 =head1 NAME
11
12 [ this is a template for a new perldelta file. Any text flagged as
13 XXX needs to be processed before release. ]
14
15 perldelta - what is new for perl v5.15.5
16
17 =head1 DESCRIPTION
18
19 This document describes differences between the 5.15.4 release and
20 the 5.15.5 release.
21
22 If you are upgrading from an earlier release such as 5.15.3, first read
23 L<perl5154delta>, which describes differences between 5.15.3 and
24 5.15.4.
25
26 =head1 Core Enhancements
27
28 XXX New core language features go here. Summarise user-visible core language
29 enhancements. Particularly prominent performance optimisations could go
30 here, but most should go in the L</Performance Enhancements> section.
31
32 =head2 More consistent C<eval>
33
34 The C<eval> operator sometimes treats a string argument as a sequence of
35 characters and sometimes as a sequence of bytes, depending on the internal
36 encoding.  The internal encoding is not supposed to make any difference,
37 but there is code that relies on this inconsistency.
38
39 Under C<use v5.15> and higher, the C<unicode_eval> and C<evalbytes>
40 features resolve this.  The C<unicode_eval> feature causes C<eval $string>
41 to treat the string always as Unicode.  The C<evalbytes> features provides
42 a function, itself called C<evalbytes>, which evaluates its argument always
43 as a string of bytes.
44
45 These features also fix oddities with source filters leaking to outer
46 dynamic scopes.
47
48 See L<feature> for more detail.
49
50 =head2 C<$[> is back
51
52 The C<$[> variable is back again, but is now implemented as a module, so
53 programs that do not mention it (i.e., most of them), will not incur any
54 run-time penalty.  In a later release in the 5.15 branch it might be
55 disabled in the scope of C<use v5.16>.
56
57 The new implementation has some bug fixes.  See L<arybase>.
58
59 =head1 Security
60
61 XXX Any security-related notices go here.  In particular, any security
62 vulnerabilities closed should be noted here rather than in the
63 L</Selected Bug Fixes> section.
64
65 [ List each security issue as a =head2 entry ]
66
67 =head1 Incompatible Changes
68
69 XXX For a release on a stable branch, this section aspires to be:
70
71     There are no changes intentionally incompatible with 5.XXX.XXX
72     If any exist, they are bugs and reports are welcome.
73
74 =head2 Certain deprecated Unicode properties are no longer supported by default
75
76 Perl should never have exposed certain Unicode properties that are used
77 by Unicode internally and not meant to be publicly available.  Use of
78 these has generated deprecated warning messages since Perl 5.12.  The
79 removed properties are Other_Alphabetic,
80 Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend,
81 Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, and
82 Other_Uppercase.
83
84 Perl may be recompiled to include any or all of them; instructions are
85 given in
86 L<perluniprops/Unicode character properties that are NOT accepted by Perl>.
87
88
89 =head2 Dereferencing IO thingies as typeglobs
90
91 The C<*{...}> operator, when passed a reference to an IO thingy (as in
92 C<*{*STDIN{IO}}>), creates a new typeglob containing just that IO object.
93
94 Previously, it would stringify as an empty string, but some operators would
95 treat it as undefined, producing an "uninitialized" warning.
96
97 Having a typeglob appear as an empty string is a side effect of the
98 implementation that has caused various bugs over the years.
99
100 The solution was to make it stringify like a normal anonymous typeglob,
101 like those produced by C<open($foo->{bar}, ...)> [perl #96326].
102
103 =head1 Deprecations
104
105 XXX Any deprecated features, syntax, modules etc. should be listed here.
106 In particular, deprecated modules should be listed here even if they are
107 listed as an updated module in the L</Modules and Pragmata> section.
108
109 [ List each deprecation as a =head2 entry ]
110
111 =head2 Don't read the Unicode data base files in F<lib/unicore>
112
113 It is now deprecated to directly read the Unicode data base files.
114 These are stored in the F<lib/unicore> directory.  Instead, you should
115 use the new functions in L<Unicode::UCD>.  These provide a stable API,
116 and give complete information.  (This API is, however, subject to change
117 somewhat during the 5.15 development cycle, as we gain experience and
118 get feedback from using it.)
119
120 Perl may at some point in the future change or remove the files.  The
121 file most likely for applications to have used is F<lib/unicore/ToDigit.pl>.
122 L<Unicode::UCD/prop_invmap()> can be used to get at its data instead.
123
124 =head1 Performance Enhancements
125
126 XXX Changes which enhance performance without changing behaviour go here. There
127 may well be none in a stable release.
128
129 [ List each enhancement as a =item entry ]
130
131 =over 4
132
133 =item *
134
135 Due to changes in L<File::Glob>, Perl's C<glob> function and its
136 C<< <...> >> equivalent are now much faster.  The splitting of the pattern
137 into words has been rewritten in C, resulting in speed-ups of 20% in some
138 cases.
139
140 This does not affect VMS, as it does not use File::Glob.
141
142 =back
143
144 =head1 Modules and Pragmata
145
146 =head2 New Modules and Pragmata
147
148 =over 4
149
150 =item *
151
152 L<arybase> -- this new module implements the C<$[> variable.
153
154 =back
155
156 =head2 Updated Modules and Pragmata
157
158 =over 4
159
160 =item *
161
162 L<Archive::Extract> has been upgraded from version 0.56 to version 0.58.
163
164 =item *
165
166 L<B::Concise> has been upgraded from version 0.86 to version 0.87.
167
168 =item *
169
170 L<B::Deparse> has been upgraded from version 1.08 to version 1.09.
171
172 It now correctly deparses C<CORE::do>, C<CORE::glob> and slices of empty
173 lists.
174
175 =item *
176
177 L<CGI> has been upgraded from version 3.55 to version 3.58.
178
179 Use public and documented FCGI.pm API in CGI::Fast
180 CGI::Fast was using an FCGI API that was deprecated and removed from
181 documentation more than ten years ago. Usage of this deprecated API with
182 FCGI >= 0.70 or FCGI <= 0.73 introduces a security issue.
183 L<https://rt.cpan.org/Public/Bug/Display.html?id=68380>
184 L<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-2766>
185
186 =item *
187
188 L<charnames> has been upgraded from version 1.23 to version 1.24.
189
190 =item *
191
192 L<Compress::Raw::Bzip2> has been upgraded from version 2.037 to version 2.042.
193
194 =item *
195
196 L<Compress::Raw::Zlib> has been upgraded from version 2.037 to version 2.042.
197
198 =item *
199
200 L<Compress::Zlib> has been upgraded from version 2.037 to version 2.042.
201
202 =item *
203
204 L<CPANPLUS> has been upgraded from version 0.9111 to version 0.9112.
205
206 =item *
207
208 L<CPANPLUS::Dist::Build> has been upgraded from version 0.58 to version 0.60.
209
210 =item *
211
212 L<Digest::SHA> has been upgraded from version 5.62 to version 5.63.
213
214 Added code to allow very large data inputs all at once, which had previously been
215 limited to several hundred megabytes at a time
216
217 =item *
218
219 L<Errno> has been upgraded from version 1.14 to version 1.15.
220
221 =item *
222
223 L<ExtUtils::MakeMaker> has been upgraded from version 6.61_01 to version 6.63_02.
224
225 =item *
226
227 L<feature> has been upgraded from version 1.22 to version 1.23.
228
229 =item *
230
231 L<File::DosGlob> has been upgraded from version 1.05 to version 1.06.
232
233 =item *
234
235 L<File::Glob> has been upgraded from version 1.13 to version 1.14.
236
237 It has a new C<:bsd_glob> export tag, intended to replace C<:glob>.  Like
238 C<:glob> it overrides C<glob> with a function that does not split the glob
239 pattern into words, but, unlike C<:glob>, it iterates properly in scalar
240 context, instead of returning the last file.
241
242 There are other changes affecting Perl's own C<glob> operator (which uses
243 File::Glob internally, except on VMS).  See L</Performance Enhancements>
244 and L</Selected Bug Fixes>.
245
246 =item *
247
248 L<HTTP::Tiny> has been upgraded from version 0.013 to version 0.016.
249
250 Adds additional shorthand methods for all common HTTP verbs,
251 a C<post_form()> method for POST-ing x-www-form-urlencoded data and
252 a C<www_form_urlencode()> utility method.
253
254 =item *
255
256 L<Opcode> has been upgraded from version 1.20 to version 1.21.
257
258 =item *
259
260 L<perlfaq> has been upgraded from version 5.0150035 to version 5.0150036.
261
262 =item *
263
264 L<Socket> as been upgraded from version 1.94_01 to 1.94_02.
265
266 It has new functions and constants for handling IPv6 sockets:
267
268     pack_ipv6_mreq
269     unpack_ipv6_mreq
270     IPV6_ADD_MEMBERSHIP
271     IPV6_DROP_MEMBERSHIP
272     IPV6_MTU
273     IPV6_MTU_DISCOVER
274     IPV6_MULTICAST_HOPS
275     IPV6_MULTICAST_IF
276     IPV6_MULTICAST_LOOP
277     IPV6_UNICAST_HOPS
278     IPV6_V6ONLY
279
280 =item *
281
282 L<Storable> has been upgraded from version 2.32 to 2.33.
283
284 The ability to add a fake entry to %INC to prevent Log::Agent from loading
285 has been restored.  In version 2.27 (included with perl 5.14.0), Storable
286 starting producing an error instead.
287
288 =item *
289
290 L<strict> has been upgraded from version 1.04 to version 1.05.
291
292 =item *
293
294 L<Unicode::Collate> has been upgraded from version 0.80 to version 0.85.
295
296 Locales updated to CLDR 2.0: mk, mt, nb, nn, ro, ru, sk, sr, sv, uk,
297 zh__pinyin, zh__stroke
298 Newly supported locales: bn, fa, ml, mr, or, pa, sa, si, si__dictionary,
299 sr_Latn, sv__reformed, ta, te, th, ur, wae.
300
301 =item *
302
303 L<Unicode::UCD> has been upgraded from version 0.36 to version 0.37.
304
305 This adds four new functions:  C<prop_aliases()>, and
306 C<prop_value_aliases()> which are used to find all the Unicode-approved
307 synonyms for property names, or to convert from one name to another;
308 C<prop_invlist> which returns all the code points matching a given
309 Unicode binary property; and C<prop_invmap> which returns the complete
310 specification of a given Unicode property.
311
312 =item *
313
314 L<UNIVERSAL> has been upgraded from version 1.09 to version 1.10.
315
316 =back
317
318 =head1 Diagnostics
319
320 The following additions or changes have been made to diagnostic output,
321 including warnings and fatal error messages.  For the complete list of
322 diagnostic messages, see L<perldiag>.
323
324 =head2 New Diagnostics
325
326 =head3 New Errors
327
328 =over 4
329
330 =item *
331
332 L<Source filters apply only to byte streams|perldiag/"Source filters apply only to byte streams">
333
334 This new error occurs when you try to activate a source filter (usually by
335 loading a source filter module) within a string passed to C<eval> under the
336 C<unicode_eval> feature.
337
338 =item *
339
340 L<That use of $[ is unsupported|perldiag/"That use of $[ is unsupported">
341
342 This previously removed error has been restored with the re-implementation
343 of C<$[> as a module.
344
345 =back
346
347 =head3 New Warnings
348
349 =over 4
350
351 =item *
352
353 L<length() used on %s|perldiag/length() used on %s>
354
355 This new warning occurs when C<length> is used on an array or hash, instead
356 of C<scalar(@array)> or C<scalar(keys %hash)>.
357
358 =item *
359
360 L<$[ used in %s (did you mean $] ?)|perldiag/"$[ used in %s (did you mean $] ?)">
361
362 This new warning exists to catch the mistaken use of C<$[> in version
363 checks.  C<$]>, not C<$[>, contains the version number.  C<$[> in a numeric
364 comparison is almost always wrong.
365
366 =item *
367
368 <Use of assignment to $[ is deprecated|perldiag/"Use of assignment to $[ is deprecated">
369
370 This previously removed warning has been restored with the re-implementation
371 of C<$[> as a module.
372
373 =back
374
375 =head2 Changes to Existing Diagnostics
376
377 =over 4
378
379 =item *
380
381 The uninitialized warning for C<y///r> when C<$_> is implicit and undefined
382 now mentions the variable name, just like the non-/r variation of the
383 operator.
384
385 =item *
386
387 The "Applying pattern match..." or similar warning produced when an array
388 or hash is on the left-hand side of the C<=~> operator now mentions the
389 name of the variable.
390
391 =back
392
393 =head1 Configuration and Compilation
394
395 =over 4
396
397 =item *
398
399 F<pod/buildtoc>, used by the build process to build L<perltoc>, has been
400 refactored and simplified. It now only contains code to build L<perltoc>;
401 the code to regenerate Makefiles has been moved to F<Porting/pod_rules.pl>.
402 It's a bug if this change has any material effect on the build process.
403
404 =back
405
406 =head1 Platform Support
407
408 XXX Any changes to platform support should be listed in the sections below.
409
410 [ Within the sections, list each platform as a =item entry with specific
411 changes as paragraphs below it. ]
412
413 =head2 New Platforms
414
415 XXX List any platforms that this version of perl compiles on, that previous
416 versions did not. These will either be enabled by new files in the F<hints/>
417 directories, or new subdirectories and F<README> files at the top level of the
418 source tree.
419
420 =over 4
421
422 =item XXX-some-platform
423
424 XXX
425
426 =back
427
428 =head2 Discontinued Platforms
429
430 XXX List any platforms that this version of perl no longer compiles on.
431
432 =over 4
433
434 =item XXX-some-platform
435
436 XXX
437
438 =back
439
440 =head2 Platform-Specific Notes
441
442 XXX List any changes for specific platforms. This could include configuration
443 and compilation changes or changes in portability/compatibility.  However,
444 changes within modules for platforms should generally be listed in the
445 L</Modules and Pragmata> section.
446
447 =over 4
448
449 =item XXX-some-platform
450
451 XXX
452
453 =back
454
455 =head1 Internal Changes
456
457 XXX Changes which affect the interface available to C<XS> code go here.
458 Other significant internal changes for future core maintainers should
459 be noted as well.
460
461 [ List each change as a =item entry ]
462
463 =over 4
464
465 =item *
466
467 C<PL_curstash> is now reference-counted.
468
469 =back
470
471 =head1 Selected Bug Fixes
472
473 XXX Important bug fixes in the core language are summarised here.
474 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
475 L</Modules and Pragmata>.
476
477 [ List each fix as a =item entry ]
478
479 =over 4
480
481 =item *
482
483 Perl now holds an extra reference count on the package that code is
484 currently compiling in.  This means that the following code no longer crashes [perl #101486]:
485
486     package Foo;
487     BEGIN {*Foo:: = *Bar::}
488     sub foo;
489
490 =item *
491
492 F<dumpvar.pl>, and consequently the C<x> command in the debugger, have been
493 fixed to handle objects blessed into classes whose names contain "=".  The
494 contents of such objects used not to be dumped [perl #101814].
495
496 =item *
497
498 The C<x> repetition operator no longer crashes on 64-bit builds with large
499 repeate counts [perl #94560].
500
501 =item *
502
503 A fix to C<glob> under miniperl (used to configure modules when perl itself
504 is built) in Perl 5.15.3 stopped C<< <~> >> from returning the home
505 directory, because it cleared %ENV before calling csh.  Now C<$ENV{HOME}>
506 is preserved.  This fix probably does not affect anything.  If
507 L<File::Glob> fails to load for some reason, Perl reverts to using csh.
508 So it would apply in that case.
509
510 =item *
511
512 On OSes other than VMS, Perl's C<glob> operator (and the C<< <...> >> form)
513 use L<File::Glob> underneath.  L<File::Glob> splits the pattern into words,
514 before feeding each word to its C<bsd_glob> function.
515
516 There were several inconsistencies in the way the split was done.  Now
517 quotation marks (' and ") are always treated as shell-style word delimiters
518 (that allow whitespace as part of a word) and backslashes are always
519 preserved, unless they exist to escape quotation marks.  Before, those
520 would only sometimes be the case, depending on whether the pattern
521 contained whitespace.  Also, escaped whitespace at the end of the pattern
522 is no longer stripped [perl #40470].
523
524 =item *
525
526 C<CORE::glob> now works as a way to call the default globbing function.  It
527 used to respect overrides, despite the C<CORE::> prefix.
528
529 =item *
530
531 In 5.14, C</[[:lower:]]/i> and C</[[:upper:]]/i> no longer matched the
532 opposite case.  This has been fixed [perl #101970].
533
534 =item *
535
536 A regular expression match with an overloaded object on the right-hand side
537 would in some cases stringify the object too many times.
538
539 =item *
540
541 The C-level C<pregcomp> function could become confused as to whether the
542 pattern was in UTF8 if the pattern was an overloaded, tied, or otherwise
543 magical scalar [perl #101940].
544
545 =item *
546
547 A regression has been fixed that was introduced in 5.14, in C</i>
548 regular expression matching, in which a match improperly fails if the
549 pattern is in UTF-8, the target string is not, and a Latin-1 character
550 precedes a character in the string that should match the pattern.  [perl
551 #101710]
552
553 =item *
554
555 C<@{"..."} = reverse ...> started crashing in 5.15.3.  This has been fixed.
556
557 =item *
558
559 C<ref> in a tainted expression started producing an "sv_upgrade" error in
560 5.15.4.  This has been fixed.
561
562 =item *
563
564 Weak references to lexical hashes going out of scope were not going stale
565 (becoming undefined), but continued to point to the hash.
566
567 =item *
568
569 Weak references to lexical variables going out of scope are now broken
570 before any magical methods (e.g., DESTROY on a tie object) are called.
571 This prevents such methods from modifying the variable that will be seen
572 the next time the scope is entered.
573
574 =item *
575
576 A C<keys> optimisation in Perl 5.12.0 to make it faster on empty hashes
577 caused C<each> not to reset the iterator if called after the last element
578 was deleted.  This has been fixed.
579
580 =item *
581
582 The C<#line 42 foo> directive used not to update the arrays of lines used
583 by the debugger if it occurred in a string eval.  This was partially fixed
584 in 5.14, but it only worked for a single C<#line 42 foo> in each eval.  Now
585 it works for multiple.
586
587 =item *
588
589 String eval used not to localise C<%^H> when compiling its argument if it
590 was empty at the time the C<eval> call itself was compiled.  This could
591 lead to scary side effects, like C<use re "/m"> enabling other flags that
592 the surrounding code was trying to enable for its caller [perl #68750].
593
594 =item *
595
596 Creating a BEGIN block from XS code (via C<newXS> or C<newATTRSUB>) would,
597 on completion, make the hints of the current compiling code the current
598 hints.  This could cause warnings to occur in a non-warning scope.
599
600 =item *
601
602 C<eval $string> and C<require> no longer localise hints (C<$^H> and C<%^H>)
603 at run time, but only during compilation of the $string or required file.
604 This makes C<BEGIN { $^H{foo}=7 }> equivalent to
605 C<BEGIN { eval '$^H{foo}=7' }> [perl #70151].
606
607 =item *
608
609 When subroutine calls are intercepted by the debugger, the name of the
610 subroutine or a reference to it is stored in C<$DB::sub>, for the debugger
611 to access.  In some cases (such as C<$foo = *bar; undef *bar; &$foo>)
612 C<$DB::sub> would be set to a name that could not be used to find the
613 subroutine, and so the debugger's attempt to call it would fail.  Now the
614 check to see whether a reference is needed is more robust, so those
615 problems should not happen anymore [rt.cpan.org #69862].
616
617 =item *
618
619 Localising a tied scalar that returns a typeglob no longer stops it from
620 being tied till the end of the scope.
621
622 =item *
623
624 When C<open> is called with three arguments, the third being a file handle
625 (as in C<< open $fh, ">&", $fh2 >>), if the third argument is tied or a
626 reference to a tied variable, FETCH is now called exactly once, instead of
627 0, 2, or 3 times (all of which could occur in various circumstances).
628
629 =item *
630
631 C<sort> no longer ignores FETCH when passed a reference to a tied glob for
632 the comparison routine.
633
634 =item *
635
636 Warnings emitted by C<sort> when a custom comparison routine returns a
637 non-numeric value now show the line number of the C<sort> operator, rather
638 than the last line of the comparison routine.  The warnings also occur now
639 only if warnings are enabled in the scope where C<sort> occurs.  Previously
640 the warnings would occur if enabled in the comparison routine's scope.
641
642 =back
643
644 =head1 Known Problems
645
646 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
647 tests that had to be C<TODO>ed for the release would be noted here, unless
648 they were specific to a particular platform (see below).
649
650 This is a list of some significant unfixed bugs, which are regressions
651 from either 5.XXX.XXX or 5.XXX.XXX.
652
653 [ List each fix as a =item entry ]
654
655 =over 4
656
657 =item *
658
659 XXX
660
661 =back
662
663 =head1 Acknowledgements
664
665 XXX Generate this with:
666
667   perl Porting/acknowledgements.pl v5.15.4..HEAD
668
669 =head1 Reporting Bugs
670
671 If you find what you think is a bug, you might check the articles
672 recently posted to the comp.lang.perl.misc newsgroup and the perl
673 bug database at http://rt.perl.org/perlbug/ .  There may also be
674 information at http://www.perl.org/ , the Perl Home Page.
675
676 If you believe you have an unreported bug, please run the L<perlbug>
677 program included with your release.  Be sure to trim your bug down
678 to a tiny but sufficient test case.  Your bug report, along with the
679 output of C<perl -V>, will be sent off to perlbug@perl.org to be
680 analysed by the Perl porting team.
681
682 If the bug you are reporting has security implications, which make it
683 inappropriate to send to a publicly archived mailing list, then please send
684 it to perl5-security-report@perl.org. This points to a closed subscription
685 unarchived mailing list, which includes
686 all the core committers, who will be able
687 to help assess the impact of issues, figure out a resolution, and help
688 co-ordinate the release of patches to mitigate or fix the problem across all
689 platforms on which Perl is supported. Please only use this address for
690 security issues in the Perl core, not for modules independently
691 distributed on CPAN.
692
693 =head1 SEE ALSO
694
695 The F<Changes> file for an explanation of how to view exhaustive details
696 on what changed.
697
698 The F<INSTALL> file for how to build Perl.
699
700 The F<README> file for general stuff.
701
702 The F<Artistic> and F<Copying> files for copyright information.
703
704 =cut