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