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