This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regexec.c: Fix "\x{FB01}\x{FB00}" =~ /ff/i
[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
1e915955 239L<Archive::Tar> has been upgraded from version 1.78 to version 1.80.
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
1e915955 2505.15.2. Now it exports them once more.
19e72bbf
FC
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
SM
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
1e915955
CBW
269L<perlfaq> has been upgraded from version 5.0150034 to version 5.0150035.
270
271=item *
272
b2ef759e
CBW
273L<Unicode::Collate> has been upgraded from version 0.78 to version 0.80.
274
275Locales updated to CLDR 2.0: ar, be, bg, ha, hr, kk, lt.
276Newly supported locales: as, fi__phonebook, gu, hi, kn, kok and ln.
3f2cb5bf 277
3432e5a1 278=back
666c7ca6 279
3432e5a1 280=head2 Removed Modules and Pragmata
d6cf2367 281
3432e5a1 282=over 4
d6cf2367
FC
283
284=item *
285
3432e5a1 286XXX
a9feb6cb 287
3432e5a1 288=back
a9feb6cb 289
3432e5a1 290=head1 Documentation
8fe353ef 291
3432e5a1
SL
292XXX Changes to files in F<pod/> go here. Consider grouping entries by
293file and be sure to link to the appropriate page, e.g. L<perlfunc>.
8fe353ef 294
3432e5a1 295=head2 New Documentation
8fe353ef 296
3432e5a1 297XXX Changes which create B<new> files in F<pod/> go here.
60527824 298
3432e5a1 299=head3 L<XXX>
7ac26854 300
3432e5a1 301XXX Description of the purpose of the new file here
7ac26854 302
3432e5a1 303=head2 Changes to Existing Documentation
7ac26854 304
3432e5a1
SL
305XXX Changes which significantly change existing files in F<pod/> go here.
306However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
307section.
518487b2 308
19e72bbf 309=head3 L<perlfunc>, L<open>
daef35db 310
3432e5a1 311=over 4
83307084
SL
312
313=item *
314
19e72bbf
FC
315As an accident of history, C<open $fh, "<:", ...> applies the default
316layers for the platform (C<:raw> on Unix, C<:crlf> on Windows), ignoring
317whatever is declared by L<open.pm|open>. This seems such a useful feature
318it has been documented in L<perlfunc|perlfunc/open> and L<open>.
b420b12a 319
3432e5a1 320=back
b420b12a 321
3432e5a1 322=head1 Diagnostics
83307084 323
3432e5a1
SL
324The following additions or changes have been made to diagnostic output,
325including warnings and fatal error messages. For the complete list of
326diagnostic messages, see L<perldiag>.
83307084 327
3432e5a1
SL
328XXX New or changed warnings emitted by the core's C<C> code go here. Also
329include any changes in L<perldiag> that reconcile it to the C<C> code.
83307084 330
3432e5a1
SL
331[ Within each section, list entries as a =item entry that links to perldiag,
332 e.g.
83307084 333
3432e5a1 334 =item *
d6cf2367 335
3432e5a1
SL
336 L<Invalid version object|perldiag/"Invalid version object">
337]
d6cf2367 338
3432e5a1 339=head2 New Diagnostics
d6cf2367 340
3432e5a1 341XXX Newly added diagnostic messages go here
daef35db 342
3432e5a1 343=head3 New Errors
259925f6 344
3432e5a1 345=over 4
9840cdee
CBW
346
347=item *
348
3432e5a1 349XXX L<message|perldiag/"message">
54e02335 350
63ac71b9 351=back
310913d4 352
3432e5a1 353=head3 New Warnings
dc80b0c6 354
63ac71b9 355=over 4
83b32788
CBW
356
357=item *
358
3432e5a1 359XXX L<message|perldiag/"message">
4eb81ef2 360
63ac71b9 361=back
4eb81ef2 362
3432e5a1
SL
363=head2 Changes to Existing Diagnostics
364
365XXX Changes (i.e. rewording) of diagnostic messages go here
d6cf2367
FC
366
367=over 4
368
369=item *
370
c634fdd3
KW
371The message,
372"Code point 0x%X is not Unicode, no properties match it; all inverse
373prop erties do" has been changed to "Code point 0x%X is not Unicode, all
374\p{} matches fail; all \P{} matches succeed"
375
d6cf2367
FC
376
377=back
378
3432e5a1 379=head1 Utility Changes
d6cf2367 380
3432e5a1
SL
381XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
382here. Most of these are built within the directories F<utils> and F<x2p>.
b89e9b0d 383
3432e5a1
SL
384[ List utility changes as a =head3 entry for each utility and =item
385entries for each change
386Use L<XXX> with program names to get proper documentation linking. ]
0cb4637e 387
3432e5a1 388=head3 L<XXX>
4abaf918 389
5438d4b8 390=over 4
4abaf918
Z
391
392=item *
393
3432e5a1 394XXX
8b00e523 395
e8e35311
FC
396=back
397
63ac71b9 398=head1 Configuration and Compilation
b908e258 399
3432e5a1
SL
400XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
401go here. Any other changes to the Perl build process should be listed here.
402However, any platform-specific changes should be listed in the
403L</Platform Support> section, instead.
b908e258 404
3432e5a1 405[ List changes as a =item entry ].
bbc28bfc 406
34dc2ec0 407=over 4
42a91c97 408
6693394d 409=item *
42a91c97 410
3432e5a1 411XXX
d2006265 412
3432e5a1 413=back
9cfd094e 414
3432e5a1 415=head1 Testing
9cfd094e 416
3432e5a1
SL
417XXX Any significant changes to the testing of a freshly built perl should be
418listed here. Changes which create B<new> files in F<t/> go here as do any
419large changes to the testing harness (e.g. when parallel testing was added).
420Changes to existing files in F<t/> aren't worth summarising, although the bugs
421that they represent may be covered elsewhere.
9cfd094e 422
3432e5a1 423[ List each test improvement as a =item entry ]
7c4c6e7c 424
3432e5a1 425=over 4
95f7e41f 426
83307084 427=item *
95f7e41f 428
6692294e
NC
429F<t/porting/checkcfgvar.t> now tests that all config.sh-style files are
430complete. These are used by the various non-*nix to generate their
431F<config.h>, and an incomplete input file will generate invalid output.
df5b44bd 432
63ac71b9 433=back
310913d4 434
83307084 435=head1 Platform Support
df5b44bd 436
3432e5a1 437XXX Any changes to platform support should be listed in the sections below.
7818c927 438
3432e5a1
SL
439[ Within the sections, list each platform as a =item entry with specific
440changes as paragraphs below it. ]
83307084 441
3432e5a1 442=head2 New Platforms
7818c927 443
3432e5a1
SL
444XXX List any platforms that this version of perl compiles on, that previous
445versions did not. These will either be enabled by new files in the F<hints/>
446directories, or new subdirectories and F<README> files at the top level of the
447source tree.
3fdd840f 448
63ac71b9 449=over 4
7ffa7e75 450
3432e5a1 451=item XXX-some-platform
862b2c43 452
3432e5a1 453XXX
d6cf2367 454
63ac71b9 455=back
c973bd4f 456
3432e5a1 457=head2 Discontinued Platforms
fdd313f4 458
3432e5a1 459XXX List any platforms that this version of perl no longer compiles on.
c39e29ea 460
3432e5a1 461=over 4
c39e29ea 462
3432e5a1 463=item XXX-some-platform
c39e29ea 464
3432e5a1 465XXX
d6cf2367 466
3432e5a1 467=back
d6cf2367 468
3432e5a1 469=head2 Platform-Specific Notes
d6cf2367 470
3432e5a1
SL
471XXX List any changes for specific platforms. This could include configuration
472and compilation changes or changes in portability/compatibility. However,
473changes within modules for platforms should generally be listed in the
474L</Modules and Pragmata> section.
d6cf2367 475
3432e5a1 476=over 4
d6cf2367 477
3432e5a1 478=item XXX-some-platform
d6cf2367 479
3432e5a1 480XXX
d6cf2367 481
3432e5a1 482=back
d6cf2367 483
3432e5a1 484=head1 Internal Changes
d6cf2367 485
3432e5a1
SL
486XXX Changes which affect the interface available to C<XS> code go here.
487Other significant internal changes for future core maintainers should
488be noted as well.
d6cf2367 489
3432e5a1 490[ List each change as a =item entry ]
5d4ff231 491
3432e5a1 492=over 4
5d4ff231 493
a3342be3
FC
494=item *
495
6d110ad0
FC
496These new functions have been added as part of the work on Unicode symbols:
497
498 HvNAMELEN
499 HvNAMEUTF8
500 HvENAMELEN
501 HvENAMEUTF8
502 gv_init_pv
503 gv_init_pvn
504 gv_init_pvsv
505 gv_fetchmeth_pv
506 gv_fetchmeth_pvn
507 gv_fetchmeth_sv
508 gv_fetchmeth_pv_autoload
509 gv_fetchmeth_pvn_autoload
510 gv_fetchmeth_sv_autoload
511 gv_fetchmethod_pv_flags
512 gv_fetchmethod_pvn_flags
513 gv_fetchmethod_sv_flags
514 gv_autoload_pv
515 gv_autoload_pvn
516 gv_autoload_sv
517 newGVgen_flags
518 sv_derived_from_pv
519 sv_derived_from_pvn
520 sv_derived_from_sv
521 sv_does_pv
522 sv_does_pvn
523 sv_does_sv
524 whichsig_pv
525 whichsig_pvn
526 whichsig_sv
527
528The gv_fetchmethod_*_flags functions, like gv_fetchmethod_flags, are
529experimental and may change in a future release.
530
531=item *
532
533The following functions were added. These are I<not> part of the API:
534
535 GvNAMEUTF8
536 GvENAMELEN
537 GvENAME_HEK
538 CopSTASH_flags
539 CopSTASH_flags_set
540 PmopSTASH_flags
541 PmopSTASH_flags_set
542 sv_sethek
543
544=item *
545
546C<sv_catpvn_flags> takes a couple of new internal-only flags,
547C<SV_CATBYTES> and C<SV_CATUTF8>, which tell it whether the char array to
548be concatenated is UTF8. This allows for more efficient concatenation than
549creating temporary SVs to pass to C<sv_catsv>.
60092ce4 550
3432e5a1 551=back
60092ce4 552
3432e5a1 553=head1 Selected Bug Fixes
309aab3a 554
3432e5a1
SL
555XXX Important bug fixes in the core language are summarised here.
556Bug fixes in files in F<ext/> and F<lib/> are best summarised in
557L</Modules and Pragmata>.
309aab3a 558
3432e5a1 559[ List each fix as a =item entry ]
1f26655e 560
3432e5a1 561=over 4
1f26655e 562
433644ee
FC
563=item *
564
19e72bbf
FC
565In Perl 5.14.0, C<$tainted ~~ @array> stopped working properly. Sometimes
566it would erroneously fail (when C<$tainted> contained a string that occurs
567in the array I<after> the first element) or erroneously succeed (when
568C<undef> occurred after the first element) [perl #93590].
569
570=item *
571
572Perl 5.15.0 introduced a minor regression, in that an object referenced by
573a deleted hash element would be able to access the freed element from its
574DESTROY method, causing panic errors [perl #99660].
575
576=item *
577
578Functions in the CORE package can now be called as methods. That used to
579work only when they had been called or referenced already. So
580C<< "foo"->CORE::ucfirst >> returns Foo.
581
582=item *
583
584C<use> and C<require> are no longer affected by the I/O layers active in
585the caller's scope (enabled by L<open.pm|open>) [perl #96008].
586
587=item *
588
589Errors that occur when methods cannot be found during overloading now
590mention the correct package name, as they did in 5.8.x, instead of
591erroneously mentioning the "overload" package, as they have since 5.10.0.
592
593=item *
594
595Undefining C<%overload::> no longer causes a crash.
433644ee 596
6d110ad0
FC
597=item *
598
599C<our $::é; $é> (which is invalid) no longer produces the "Compilation
600error at lib/utf8_heavy.pl..." error message, which it started emitting in
6015.10.0 [perl #99984].
602
b377a702
KW
603=item *
604
605A minor regression, introduced Perl 5.15.0, has been fixed in which some
606regular expression Unicode property matches (C<\p{...}>) matched
607non-Unicode code points.
608
7c1b9f38
KW
609=item *
610
611In case-insensitive regular expression pattern matching, no longer on
612UTF-8 encoded strings does the scan for the start of match only look at
613the first possible position. This caused matches such as
614C<"f\x{FB00}" =~ /ff/i> to fail.
615
63ac71b9 616=back
bbc28bfc 617
7d3f03b7
SL
618=head1 Known Problems
619
3432e5a1
SL
620XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
621tests that had to be C<TODO>ed for the release would be noted here, unless
622they were specific to a particular platform (see below).
7d3f03b7 623
3432e5a1
SL
624This is a list of some significant unfixed bugs, which are regressions
625from either 5.XXX.XXX or 5.XXX.XXX.
626
627[ List each fix as a =item entry ]
7d3f03b7 628
3432e5a1 629=over 4
7d3f03b7
SL
630
631=item *
632
19e72bbf
FC
633XXX A couple of modules were broken by stdbool.h changes, or was that in
6345.15.3?
7d3f03b7 635
3432e5a1 636=back
7d3f03b7 637
3432e5a1 638=head1 Obituary
7d3f03b7 639
3432e5a1
SL
640XXX If any significant core contributor has died, we've added a short obituary
641here.
7d3f03b7 642
44691e6f
AB
643=head1 Acknowledgements
644
3432e5a1
SL
645XXX Generate this with:
646
647 perl Porting/acknowledgements.pl v5.15.3..HEAD
29cf780c 648
44691e6f
AB
649=head1 Reporting Bugs
650
651If you find what you think is a bug, you might check the articles
34dc2ec0 652recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
653bug database at http://rt.perl.org/perlbug/ . There may also be
654information at http://www.perl.org/ , the Perl Home Page.
655
656If you believe you have an unreported bug, please run the L<perlbug>
657program included with your release. Be sure to trim your bug down
658to a tiny but sufficient test case. Your bug report, along with the
659output of C<perl -V>, will be sent off to perlbug@perl.org to be
660analysed by the Perl porting team.
661
662If the bug you are reporting has security implications, which make it
663inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 664it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
665unarchived mailing list, which includes
666all the core committers, who will be able
44691e6f
AB
667to help assess the impact of issues, figure out a resolution, and help
668co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
669platforms on which Perl is supported. Please only use this address for
670security issues in the Perl core, not for modules independently
44691e6f
AB
671distributed on CPAN.
672
673=head1 SEE ALSO
674
675The F<Changes> file for an explanation of how to view exhaustive details
676on what changed.
677
678The F<INSTALL> file for how to build Perl.
679
680The F<README> file for general stuff.
681
682The F<Artistic> and F<Copying> files for copyright information.
683
684=cut