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