This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta up to c60dbbc38
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to c60dbbc38, except for:
5 d9018cbe5b480ba29cc6151aba8f5102a7e009c4 (Eric Brine)
6     -- while I (use git blame to find out who) see how this change within
7        lex_read_unichar is correct, I cannot tell at a glance what visible
8        effects this bug has at the Perl level or through the lexer API.
9 a04eb69c733e84250299f12df200f10b76b0a45c (David Golden)
10 7a799f6bb3cac2e1bf9bede83579324cffa59c16 (David Golden)
11 be48bbe8d671b6841c3ec7cb734b98071afe3cd9 (Chip)
12 0bda3001dd6310abfca950134ed78f6192d3d8a7 (Karl Williamson)
13
14 =head1 NAME
15
16 [ this is a template for a new perldelta file. Any text flagged as
17 XXX needs to be processed before release. ]
18
19 perldelta - what is new for perl v5.15.4
20
21 =head1 DESCRIPTION
22
23 This document describes differences between the 5.15.3 release and
24 the 5.15.4 release.
25
26 If you are upgrading from an earlier release such as 5.15.3, first read
27 L<perl5153delta>, which describes differences between 5.15.3 and
28 5.15.4.
29
30 =head1 Notice
31
32 XXX Any important notices here
33
34 =head1 Core Enhancements
35
36 =head2 $^X converted to an absolute path on FreeBSD, OS X and Solaris
37
38 C<$^X> is now converted to an absolute path on OS X, FreeBSD (without
39 needing F</proc> mounted) and Solaris 10 and 11. This augments the
40 previous approach of using F</proc> on Linux, FreeBSD and NetBSD
41 (in all cases, where mounted).
42
43 This makes relocatable perl installations more useful on these platforms.
44 (See "Relocatable @INC" in F<INSTALL>)
45
46 =head2 Unicode Symbol Names
47
48 Perl now has proper support for Unicode in symbol names.  It used to be
49 that C<*{$foo}> would ignore the internal UTF8 flag and use the bytes of
50 the underlying representation to look up the symbol.  That meant that
51 C<*{"\x{100}"}> and C<*{"\xc4\x80"}> would return the same thing.  All
52 these parts of Perl have been fixed to account for Unicode:
53
54 =over
55
56 =item *
57
58 Method names (including those passed to C<use overload>)
59
60 =item *
61
62 Typeglob names (including names of variables, subroutines and filehandles)
63
64 =item *
65
66 Package names
67
68 =item *
69
70 Constant subroutine names (not nul-clean yet)
71
72 =item *
73
74 C<goto>
75
76 =item *
77
78 Symbolic dereferencing
79
80 =item *
81
82 Second argument to C<bless()> and C<tie()>
83
84 =item *
85
86 Return value of C<ref()>
87
88 =item *
89
90 Package names returned by C<caller()>
91
92 =item *
93
94 Subroutine prototypes
95
96 =item *
97
98 Attributes
99
100 =item *
101
102 Various warnings and error messages that mention variable names or values,
103 methods, etc.
104
105 =back
106
107 In addition, a parsing bug has been fixed that prevented C<*{é}> from
108 implicitly quoting the name, but instead interpreted it as C<*{+é}>, which
109 would cause a strict violation.
110
111 C<*{"*a::b"}> automatically strips off the * if it is followed by an ASCII
112 letter.  That has been extended to all Unicode identifier characters.
113
114 C<$é> is now subject to "Used only once" warnings.  It used to be exempt,
115 as it was treated as a punctuation variable.
116
117 =head2 Support for Embedded Nuls
118
119 Some parts of Perl did not work correctly with nuls (C<chr 0>) embedded in
120 strings.  That meant that, for instance, C<< $m = "a\0b"; foo->$m >> would
121 call the "a" method, instead of the actual method name contained in $m.
122 These parts of perl have been fixed to support nuls:
123
124 =over
125
126 =item *
127
128 Method names
129
130 =item *
131
132 Typeglob names (including filehandle names)
133
134 =item *
135
136 Package names
137
138 =item *
139
140 Autoloading
141
142 =item *
143
144 Return value of C<ref()>
145
146 =item *
147
148 Package names returned by C<caller()>
149
150 =item *
151
152 Filehandle warnings
153
154 =item *
155
156 Typeglob elements (C<*foo{"THING\0stuff"}>)
157
158 =item *
159
160 Signal names
161
162 =item *
163
164 Various warnings and error messages that mention variable names or values,
165 methods, etc.
166
167 =back
168
169 One side effect of these changes is that blessing into "\0" no longer
170 causes C<ref()> to return false.
171
172 =head1 Security
173
174 XXX Any security-related notices go here.  In particular, any security
175 vulnerabilities closed should be noted here rather than in the
176 L</Selected Bug Fixes> section.
177
178 [ List each security issue as a =head2 entry ]
179
180 =head1 Incompatible Changes
181
182 XXX For a release on a stable branch, this section aspires to be:
183
184     There are no changes intentionally incompatible with 5.XXX.XXX
185     If any exist, they are bugs and reports are welcome.
186
187 [ List each incompatible change as a =head2 entry ]
188
189 =head1 Deprecations
190
191 XXX Any deprecated features, syntax, modules etc. should be listed here.
192 In particular, deprecated modules should be listed here even if they are
193 listed as an updated module in the L</Modules and Pragmata> section.
194
195 [ List each deprecation as a =head2 entry ]
196
197 =head1 Performance Enhancements
198
199 XXX Changes which enhance performance without changing behaviour go here. There
200 may well be none in a stable release.
201
202 [ List each enhancement as a =item entry ]
203
204 =over 4
205
206 =item *
207
208 XXX
209
210 =back
211
212 =head1 Modules and Pragmata
213
214 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
215 go here.  If Module::CoreList is updated, generate an initial draft of the
216 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
217 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
218 below.  A paragraph summary for important changes should then be added by hand.
219 In an ideal world, dual-life modules would have a F<Changes> file that could be
220 cribbed.
221
222 [ Within each section, list entries as a =item entry ]
223
224 =head2 New Modules and Pragmata
225
226 =over 4
227
228 =item *
229
230 XXX
231
232 =back
233
234 =head2 Updated Modules and Pragmata
235
236 =over 4
237
238 =item *
239
240 L<perlfaq> has been upgraded from version 5.0150034 to version 5.0150035.
241
242 =item *
243
244 L<Digest> has been upgraded from version 1.16 to version 1.17.
245
246 =item *
247
248 L<DynaLoader> has been upgraded from version 1.13 to 1.14.
249
250 It stopped exporting its symbols with the ExtUtils::ParseXS changes in
251 5.15.2.  Now it exports them once more.  
252
253 =item *
254
255 L<ExtUtils::MakeMaker> has been upgraded from version 6.59 to version 6.61_01.
256
257 =item *
258
259 L<ExtUtils::ParseXS> has been upgraded from version 3.04_04 to version 3.05.
260
261 =item *
262
263 L<Module::Load> has been upgraded from version 0.20 to version 0.22.
264
265 Resolve possible security problem [http://goo.gl/YzHRU] where a '::' prefixed
266 module can 'jump' out of @INC
267
268 =item *
269
270 L<Unicode::Collate> has been upgraded from version 0.78 to version 0.79.
271
272 =back
273
274 =head2 Removed Modules and Pragmata
275
276 =over 4
277
278 =item *
279
280 XXX
281
282 =back
283
284 =head1 Documentation
285
286 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
287 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
288
289 =head2 New Documentation
290
291 XXX Changes which create B<new> files in F<pod/> go here.
292
293 =head3 L<XXX>
294
295 XXX Description of the purpose of the new file here
296
297 =head2 Changes to Existing Documentation
298
299 XXX Changes which significantly change existing files in F<pod/> go here.
300 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
301 section.
302
303 =head3 L<perlfunc>, L<open>
304
305 =over 4
306
307 =item *
308
309 As an accident of history, C<open $fh, "<:", ...> applies the default
310 layers for the platform (C<:raw> on Unix, C<:crlf> on Windows), ignoring
311 whatever is declared by L<open.pm|open>.  This seems such a useful feature
312 it has been documented in L<perlfunc|perlfunc/open> and L<open>.
313
314 =back
315
316 =head1 Diagnostics
317
318 The following additions or changes have been made to diagnostic output,
319 including warnings and fatal error messages.  For the complete list of
320 diagnostic messages, see L<perldiag>.
321
322 XXX New or changed warnings emitted by the core's C<C> code go here. Also
323 include any changes in L<perldiag> that reconcile it to the C<C> code.
324
325 [ Within each section, list entries as a =item entry that links to perldiag,
326   e.g.
327
328   =item *
329
330   L<Invalid version object|perldiag/"Invalid version object">
331 ]
332
333 =head2 New Diagnostics
334
335 XXX Newly added diagnostic messages go here
336
337 =head3 New Errors
338
339 =over 4
340
341 =item *
342
343 XXX L<message|perldiag/"message">
344
345 =back
346
347 =head3 New Warnings
348
349 =over 4
350
351 =item *
352
353 XXX L<message|perldiag/"message">
354
355 =back
356
357 =head2 Changes to Existing Diagnostics
358
359 XXX Changes (i.e. rewording) of diagnostic messages go here
360
361 =over 4
362
363 =item *
364
365 The message,
366 "Code point 0x%X is not Unicode, no properties match it; all inverse
367 prop erties do" has been changed to "Code point 0x%X is not Unicode, all
368 \p{} matches fail; all \P{} matches succeed"
369
370
371 =back
372
373 =head1 Utility Changes
374
375 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
376 here. Most of these are built within the directories F<utils> and F<x2p>.
377
378 [ List utility changes as a =head3 entry for each utility and =item
379 entries for each change
380 Use L<XXX> with program names to get proper documentation linking. ]
381
382 =head3 L<XXX>
383
384 =over 4
385
386 =item *
387
388 XXX
389
390 =back
391
392 =head1 Configuration and Compilation
393
394 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
395 go here.  Any other changes to the Perl build process should be listed here.
396 However, any platform-specific changes should be listed in the
397 L</Platform Support> section, instead.
398
399 [ List changes as a =item entry ].
400
401 =over 4
402
403 =item *
404
405 XXX
406
407 =back
408
409 =head1 Testing
410
411 XXX Any significant changes to the testing of a freshly built perl should be
412 listed here.  Changes which create B<new> files in F<t/> go here as do any
413 large changes to the testing harness (e.g. when parallel testing was added).
414 Changes to existing files in F<t/> aren't worth summarising, although the bugs
415 that they represent may be covered elsewhere.
416
417 [ List each test improvement as a =item entry ]
418
419 =over 4
420
421 =item *
422
423 F<t/porting/checkcfgvar.t> now tests that all config.sh-style files are
424 complete. These are used by the various non-*nix to generate their
425 F<config.h>, and an incomplete input file will generate invalid output.
426
427 =back
428
429 =head1 Platform Support
430
431 XXX Any changes to platform support should be listed in the sections below.
432
433 [ Within the sections, list each platform as a =item entry with specific
434 changes as paragraphs below it. ]
435
436 =head2 New Platforms
437
438 XXX List any platforms that this version of perl compiles on, that previous
439 versions did not. These will either be enabled by new files in the F<hints/>
440 directories, or new subdirectories and F<README> files at the top level of the
441 source tree.
442
443 =over 4
444
445 =item XXX-some-platform
446
447 XXX
448
449 =back
450
451 =head2 Discontinued Platforms
452
453 XXX List any platforms that this version of perl no longer compiles on.
454
455 =over 4
456
457 =item XXX-some-platform
458
459 XXX
460
461 =back
462
463 =head2 Platform-Specific Notes
464
465 XXX List any changes for specific platforms. This could include configuration
466 and compilation changes or changes in portability/compatibility.  However,
467 changes within modules for platforms should generally be listed in the
468 L</Modules and Pragmata> section.
469
470 =over 4
471
472 =item XXX-some-platform
473
474 XXX
475
476 =back
477
478 =head1 Internal Changes
479
480 XXX Changes which affect the interface available to C<XS> code go here.
481 Other significant internal changes for future core maintainers should
482 be noted as well.
483
484 [ List each change as a =item entry ]
485
486 =over 4
487
488 =item *
489
490 These new functions have been added as part of the work on Unicode symbols:
491
492     HvNAMELEN
493     HvNAMEUTF8
494     HvENAMELEN
495     HvENAMEUTF8
496     gv_init_pv
497     gv_init_pvn
498     gv_init_pvsv
499     gv_fetchmeth_pv
500     gv_fetchmeth_pvn
501     gv_fetchmeth_sv
502     gv_fetchmeth_pv_autoload
503     gv_fetchmeth_pvn_autoload
504     gv_fetchmeth_sv_autoload
505     gv_fetchmethod_pv_flags
506     gv_fetchmethod_pvn_flags
507     gv_fetchmethod_sv_flags
508     gv_autoload_pv
509     gv_autoload_pvn
510     gv_autoload_sv
511     newGVgen_flags
512     sv_derived_from_pv
513     sv_derived_from_pvn
514     sv_derived_from_sv
515     sv_does_pv
516     sv_does_pvn
517     sv_does_sv
518     whichsig_pv
519     whichsig_pvn
520     whichsig_sv
521
522 The gv_fetchmethod_*_flags functions, like gv_fetchmethod_flags, are
523 experimental and may change in a future release.
524
525 =item *
526
527 The following functions were added.  These are I<not> part of the API:
528
529     GvNAMEUTF8
530     GvENAMELEN
531     GvENAME_HEK
532     CopSTASH_flags
533     CopSTASH_flags_set
534     PmopSTASH_flags
535     PmopSTASH_flags_set
536     sv_sethek
537
538 =item *
539
540 C<sv_catpvn_flags> takes a couple of new internal-only flags,
541 C<SV_CATBYTES> and C<SV_CATUTF8>, which tell it whether the char array to
542 be concatenated is UTF8.  This allows for more efficient concatenation than
543 creating temporary SVs to pass to C<sv_catsv>.
544
545 =back
546
547 =head1 Selected Bug Fixes
548
549 XXX Important bug fixes in the core language are summarised here.
550 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
551 L</Modules and Pragmata>.
552
553 [ List each fix as a =item entry ]
554
555 =over 4
556
557 =item *
558
559 In Perl 5.14.0, C<$tainted ~~ @array> stopped working properly.  Sometimes
560 it would erroneously fail (when C<$tainted> contained a string that occurs
561 in the array I<after> the first element) or erroneously succeed (when
562 C<undef> occurred after the first element) [perl #93590].
563
564 =item *
565
566 Perl 5.15.0 introduced a minor regression, in that an object referenced by
567 a deleted hash element would be able to access the freed element from its
568 DESTROY method, causing panic errors [perl #99660].
569
570 =item *
571
572 Functions in the CORE package can now be called as methods.  That used to
573 work only when they had been called or referenced already.  So
574 C<< "foo"->CORE::ucfirst >> returns Foo.
575
576 =item *
577
578 C<use> and C<require> are no longer affected by the I/O layers active in
579 the caller's scope (enabled by L<open.pm|open>) [perl #96008].
580
581 =item *
582
583 Errors that occur when methods cannot be found during overloading now
584 mention the correct package name, as they did in 5.8.x, instead of
585 erroneously mentioning the "overload" package, as they have since 5.10.0.
586
587 =item *
588
589 Undefining C<%overload::> no longer causes a crash.
590
591 =item *
592
593 C<our $::é; $é> (which is invalid) no longer produces the "Compilation
594 error at lib/utf8_heavy.pl..." error message, which it started emitting in
595 5.10.0 [perl #99984].
596
597 =back
598
599 =head1 Known Problems
600
601 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
602 tests that had to be C<TODO>ed for the release would be noted here, unless
603 they were specific to a particular platform (see below).
604
605 This is a list of some significant unfixed bugs, which are regressions
606 from either 5.XXX.XXX or 5.XXX.XXX.
607
608 [ List each fix as a =item entry ]
609
610 =over 4
611
612 =item *
613
614 XXX A couple of modules were broken by stdbool.h changes, or was that in
615 5.15.3?
616
617 =back
618
619 =head1 Obituary
620
621 XXX If any significant core contributor has died, we've added a short obituary
622 here.
623
624 =head1 Acknowledgements
625
626 XXX Generate this with:
627
628   perl Porting/acknowledgements.pl v5.15.3..HEAD
629
630 =head1 Reporting Bugs
631
632 If you find what you think is a bug, you might check the articles
633 recently posted to the comp.lang.perl.misc newsgroup and the perl
634 bug database at http://rt.perl.org/perlbug/ .  There may also be
635 information at http://www.perl.org/ , the Perl Home Page.
636
637 If you believe you have an unreported bug, please run the L<perlbug>
638 program included with your release.  Be sure to trim your bug down
639 to a tiny but sufficient test case.  Your bug report, along with the
640 output of C<perl -V>, will be sent off to perlbug@perl.org to be
641 analysed by the Perl porting team.
642
643 If the bug you are reporting has security implications, which make it
644 inappropriate to send to a publicly archived mailing list, then please send
645 it to perl5-security-report@perl.org. This points to a closed subscription
646 unarchived mailing list, which includes
647 all the core committers, who will be able
648 to help assess the impact of issues, figure out a resolution, and help
649 co-ordinate the release of patches to mitigate or fix the problem across all
650 platforms on which Perl is supported. Please only use this address for
651 security issues in the Perl core, not for modules independently
652 distributed on CPAN.
653
654 =head1 SEE ALSO
655
656 The F<Changes> file for an explanation of how to view exhaustive details
657 on what changed.
658
659 The F<INSTALL> file for how to build Perl.
660
661 The F<README> file for general stuff.
662
663 The F<Artistic> and F<Copying> files for copyright information.
664
665 =cut