This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta up to 91332126
[perl5.git] / pod / perldelta.pod
CommitLineData
4c793fe3
FR
1=encoding utf8
2
07d5f7aa 3=for comment
eb32ee41 4This has been logged up to 91332126cd9c948fe94d99b88f88ed9f528cc0d8,
07d5f7aa
FC
5except for:
657ef47cc7bcd1b57927d5010f363ccaa10f1d990
7b2ea9a00b30eb5881b863d7239dd6a3721e73136
8ca556bcdca736b2f85c11650c70b2371169c0225
9e4487e9b537f1be1e95aba1c87790c2a411788a7
1068b590d93559da1f7a0d3956202180d507013365
11Everything noteworthy committed by a certain Father Chrysostomos already
12has an entry in this file.
13
4c793fe3
FR
14=head1 NAME
15
ee0887a9
SH
16[ this is a template for a new perldelta file. Any text flagged as
17XXX needs to be processed before release. ]
4c793fe3 18
ee0887a9 19perldelta - what is new for perl v5.13.6
4c793fe3 20
ee0887a9 21=head1 DESCRIPTION
0c692eed 22
ee0887a9
SH
23This document describes differences between the 5.13.5 release and
24the 5.13.6 release.
0c692eed 25
ee0887a9
SH
26If you are upgrading from an earlier release such as 5.13.4, first read
27L<perl5135delta>, which describes differences between 5.13.4 and
285.13.5.
0c692eed 29
ee0887a9 30=head1 Notice
0c692eed 31
ee0887a9 32XXX Any important notices here
4c793fe3 33
ee0887a9 34=head1 Core Enhancements
85318b69 35
ee0887a9
SH
36XXX New core language features go here. Summarise user-visible core language
37enhancements. Particularly prominent performance optimisations could go
38here, but most should go in the L</Performance Enhancements> section.
85318b69 39
ee0887a9 40[ List each enhancement as a =head2 entry ]
85318b69 41
fb85c044
KW
42=head2 C<(?^...)> regex construct added to signify default modifiers
43
44A caret (also called a "cirumflex accent") C<"^"> immediately following
45a C<"(?"> in a regular expression now means that the subexpression is to
46not inherit the surrounding modifiers such as C</i>, but to revert to the
47Perl defaults. Any modifiers following the caret override the defaults.
48
49The stringification of regular expressions now uses this notation. The
50main purpose of this is to allow tests that rely on the stringification
51to not have to change when new modifiers are added. See
52L<perlre/Extended Patterns>.
53
9de15fec
KW
54=head2 C<"d">, C<"l">, and C<"u"> regex modifiers added
55
56These modifiers are currently only available within a C<(?...)> construct.
57
58The C<"l"> modifier says to compile the regular expression as if it were
59in the scope of C<use locale>, even if it is not.
60
61The C<"u"> modifier currently does nothing.
62
63The C<"d"> modifier is used in the scope of C<use locale> to compile the
64regular expression as if it were not in that scope.
65See L<perlre/(?dlupimsx-imsx)>.
66
fb121860
KW
67=head2 C<\N{...}> now handles Unicode named character sequences
68
69Unicode has a number of named character sequences, in which particular sequences
70of code points are given names. C<\N{...}> now recognizes these.
71See L<charnames>.
72
73=head2 New function C<charnames::string_vianame()>
74
75This function is a run-time version of C<\N{...}>, returning the string
76of characters whose Unicode name is its parameter. It can handle
77Unicode named character sequences, whereas the pre-existing
78C<charnames::vianame()> cannot, as the latter returns a single code
79point.
80See L<charnames>.
81
eb32ee41
FC
82=head2 Reentrant regular expression engine
83
84It is now safe to use regular expressions within C<(?{...})> and
85C<(??{...})> code blocks inside regular expressions.
86
87These block are still experimental, however, and still have problems with
88lexical (C<my>) variables and abnormal exiting.
89
5e26bbbe
Z
90=head2 Custom per-subroutine check hooks
91
92XS code in an extension module can now annotate a subroutine (whether
93implemented in XS or in Perl) so that nominated XS code will be called
94at compile time (specifically as part of op checking) to change the op
95tree of that subroutine. The compile-time check function (supplied by
96the extension module) can implement argument processing that can't be
97expressed as a prototype, generate customised compile-time warnings,
98perform constant folding for a pure function, inline a subroutine
99consisting of sufficiently simple ops, replace the whole call with a
100custom op, and so on. This was previously all possible by hooking the
101C<entersub> op checker, but the new mechanism makes it easy to tie the
102hook to a specific subroutine. See L<perlapi/cv_set_call_checker>.
103
104To help in writing custom check hooks, several subtasks within standard
105C<entersub> op checking have been separated out and exposed in the API.
106
ee0887a9 107=head1 Security
85318b69 108
ee0887a9
SH
109XXX Any security-related notices go here. In particular, any security
110vulnerabilities closed should be noted here rather than in the
111L</Selected Bug Fixes> section.
85318b69 112
ee0887a9 113[ List each security issue as a =head2 entry ]
4c793fe3
FR
114
115=head1 Incompatible Changes
116
fb85c044
KW
117=head2 Stringification of regexes has changed
118
119Default regular expression modifiers are now notated by using
120C<(?^...)>. Code relying on the old stringification will fail. The
121purpose of this is so that when new modifiers are added, such code will
8477b9ba
KW
122not have to change (after this one time), as the stringification will
123automatically incorporate the new modifiers.
fb85c044
KW
124
125Code that needs to work properly with both old- and new-style regexes
e23837fb 126can avoid the whole issue by using (for Perls since 5.9.5):
8477b9ba
KW
127
128 use re qw(regexp_pattern);
129 my ($pat, $mods) = regexp_pattern($re_ref);
130
131where C<$re_ref> is a reference to a compiled regular expression. Upon
132return, C<$mods> will be a string containing all the non-default
133modifiers used when the regular expression was compiled, and C<$pattern>
134the actual pattern.
135
e23837fb
KW
136If the actual stringification is important, or older Perls need to be
137supported, you can use something like the following:
fb85c044
KW
138
139 # Accept both old and new-style stringification
140 my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? '^' : '-xism';
44428a46 141
fb85c044 142And then use C<$modifiers> instead of C<-xism>.
44428a46 143
9de15fec
KW
144=head2 Regular expressions retain their localeness when interpolated
145
146Regular expressions compiled under C<"use locale"> now retain this when
147interpolated into a new regular expression compiled outside a
148C<"use locale">, and vice-versa.
149
150Previously, a regular expression interpolated into another one inherited
151the localeness of the surrounding one, losing whatever state it
152originally had. This is considered a bug fix, but may trip up code that
153has come to rely on the incorrect behavior.
154
6904a83f
FC
155=head2 Directory handles not copied to threads
156
157On systems that do not have a C<fchdir> function, newly-created threads no
158longer inherit directory handles from their parent threads. Such programs
159would probably have crashed anyway
160L<[perl #75154]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75154>.
161
94824daa
FC
162=head2 Negation treats strings differently from before
163
164The unary negation operator C<-> now treats strings that look like numbers
165as numbers
166L<[perl #57706]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=57706>.
167
afa74577
FC
168=head2 Negative zero
169
170Negative zero (-0.0), when converted to a string, now becomes "0" on all
171platforms. It used to become "-0" on some, but "0" on others.
172
173If you still need to determine whether a zero is negative, use
174C<sprintf("%g", $zero) =~ /^-/> or the L<Data::Float> module on CPAN.
175
4c793fe3
FR
176=head1 Deprecations
177
ee0887a9
SH
178XXX Any deprecated features, syntax, modules etc. should be listed here.
179In particular, deprecated modules should be listed here even if they are
180listed as an updated module in the L</Modules and Pragmata> section.
85318b69 181
ee0887a9 182[ List each deprecation as a =head2 entry ]
4c793fe3
FR
183
184=head1 Performance Enhancements
185
ee0887a9
SH
186XXX Changes which enhance performance without changing behaviour go here. There
187may well be none in a stable release.
4c793fe3 188
ee0887a9 189[ List each enhancement as a =item entry ]
4c793fe3 190
ee0887a9 191=over 4
4c793fe3 192
e2babdfb
FR
193=item *
194
ee0887a9 195XXX
e2babdfb 196
4c793fe3
FR
197=back
198
199=head1 Modules and Pragmata
200
ee0887a9
SH
201XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
202go here. If Module::CoreList is updated, generate an initial draft of the
203following sections using F<Porting/corelist-perldelta.pl>, which prints stub
204entries to STDOUT. Results can be pasted in place of the '=head2' entries
205below. A paragraph summary for important changes should then be added by hand.
206In an ideal world, dual-life modules would have a F<Changes> file that could be
207cribbed.
fc1418b7 208
ee0887a9 209[ Within each section, list entries as a =item entry ]
df91fef1 210
ee0887a9 211=head2 New Modules and Pragmata
ccb45ef4 212
ee0887a9 213=over 4
df91fef1 214
ee0887a9 215=item *
df91fef1 216
ee0887a9 217XXX
e2babdfb 218
ee0887a9 219=back
e2babdfb 220
ee0887a9 221=head2 Updated Modules and Pragmata
fc1418b7 222
ee0887a9 223=over 4
fc1418b7 224
ee0887a9 225=item *
e2babdfb 226
a6696b92
CBW
227C<Archive::Extract> has been upgraded from version 0.42 to 0.44
228
229=item *
230
75484d6b
FC
231C<Carp> has been upgraded from version 1.18 to 1.19.
232
233It no longer autovivifies the C<*CORE::GLOBAL::caller> glob, something it
234started doing in 1.18, which was released with perl 5.13.4
235L<[perl #78082]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=78082>
236
237=item *
238
e2941eb0
FC
239C<Data::Dumper> has been upgraded from version 2.128 to 2.129.
240
241C<Dumpxs> no longer crashes with globs returned by C<*$io_ref>
242L<[perl #72332]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72332>.
243
244=item *
245
c059848d 246C<Digest::MD5> has been upgraded from version 2.40 to 2.51.
62d37bf0
FR
247
248It is now safe to use this module in combination with threads.
249
250=item *
251
f5b89942
FC
252C<File::DosGlob> has been upgraded from version 1.02 to 1.03.
253
254It allows patterns containing literal parentheses (they no longer need to
255be escaped). On Windows, it no longer adds an extra F<./> to the file names
256returned when the pattern is a relative glob with a drive specification,
6481ebaf
FC
257like F<c:*.pl>
258L<[perl #71712]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71712>.
f5b89942
FC
259
260=item *
261
4d1599c3
FC
262C<File::Find> has been upgraded from version 1.17 to 1.18.
263
264It improves handling of backslashes on Windows, so that paths such as
6481ebaf
FC
265F<c:\dir\/file> are no longer generated
266L<[perl #71710]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
4d1599c3
FC
267
268=item *
269
f1c82292
CBW
270C<if> has been upgraded from version 0.05 to 0.06
271
272=item *
273
25e68b8b
FC
274C<IPC::Open3> has been upgraded from version 1.06 to 1.07.
275
276The internal C<xclose> routine now knows how to handle file descriptors, as
277documented, so duplicating STDIN in a child process using its file
278descriptor now works
279L<[perl #76474]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71710>.
280
281=item *
282
eb32ee41
FC
283C<Locale::Codes> has been upgraded from version 3.13 to 3.14.
284
285=item *
286
9607a449
FC
287C<Locale::Maketext> has been upgraded from version 1.15 to 1.16.
288
289It fixes an infinite loop in C<Locale::Maketext::Guts::_compile()> when
290working with tainted values
291(L<CPAN RT #40727|https://rt.cpan.org/Public/Bug/Display.html?id=40727>).
292
edf72ff9
FC
293C<< ->maketext >> calls will now backup and restore C<$@> so that error
294messages are not supressed
295(L<CPAN RT #34182|https://rt.cpan.org/Public/Bug/Display.html?id=34182>).
296
9607a449
FC
297=item *
298
45029d2d
FC
299C<Math::BigInt> has been upgraded from version 1.95 to 1.97.
300
301This prevents C<sqrt($int)> from crashing under C<use bigrat;>
302L<[perl #73534]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73534>.
733e2929
FR
303
304=item *
305
de0e3ce7
FR
306C<NEXT> has been upgraded from version 0.64 to 0.65.
307
308=item *
309
56f08af2
FC
310C<overload> has been upgraded from version 1.10 to 1.11.
311
312C<overload::Method> can now handle subroutines that are themselves blessed
313into overloaded classes
314L<[perl #71998]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71998>.
315
316=item *
317
f8a8dd49 318C<PathTools> has been upgraded from version 3.31_01 to 3.34.
1c2dcb3e
CBW
319
320=item *
321
6481ebaf
FC
322C<sigtrap> has been upgraded from version 1.04 to 1.05.
323
324It no longer tries to modify read-only arguments when generating a
325backtrace
326L<[perl #72340]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72340>.
327
328=item *
329
ac4c9720
CBW
330C<threads> has been upgraded from version 1.77_03 to 1.81
331
332=item *
333
334C<threads::shared> has been upgrade from version 1.33_03 to 1.34
dfa4c013
JH
335
336=item *
337
6709de88 338C<Unicode::Collate> has been upgraded from version 0.59 to 0.62
c02ee425 339
6709de88
CBW
340U::C::Locale newly supports locales: ar, de__phonebook, hu, hy, nso, om,
341tn, vi, hr, ig, sq, se to and uk
1393fe00
CBW
342
343=item *
344
1c2dcb3e 345C<Unicode::Normalize> has been upgraded from version 1.06 to 1.07
c9a84c8b 346
ee0887a9 347=back
c9a84c8b 348
ee0887a9 349=head2 Removed Modules and Pragmata
c9a84c8b 350
ee0887a9 351=over 4
4c793fe3 352
ee0887a9 353=item *
48c1efd2 354
ee0887a9 355XXX
4c793fe3
FR
356
357=back
358
359=head1 Documentation
360
ee0887a9
SH
361XXX Changes to files in F<pod/> go here. Consider grouping entries by
362file and be sure to link to the appropriate page, e.g. L<perlfunc>.
4c793fe3 363
ee0887a9 364=head2 New Documentation
4c793fe3 365
ee0887a9 366XXX Changes which create B<new> files in F<pod/> go here.
4c793fe3 367
ee0887a9 368=head3 L<XXX>
4c793fe3 369
ee0887a9 370XXX Description of the purpose of the new file here
4c793fe3 371
ee0887a9 372=head2 Changes to Existing Documentation
fc1418b7 373
ee0887a9
SH
374XXX Changes which significantly change existing files in F<pod/> go here.
375However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
376section.
fc1418b7 377
ee0887a9 378=head3 L<XXX>
e2babdfb 379
7bc3efda
SH
380=over 4
381
382=item *
383
a7e93501
FC
384The documentation for the C<SvTRUE> macro was simply wrong in stating that
385get-magic is not processed. It has been corrected.
7bc3efda
SH
386
387=back
e2babdfb 388
4c793fe3
FR
389=head1 Diagnostics
390
391The following additions or changes have been made to diagnostic output,
392including warnings and fatal error messages. For the complete list of
393diagnostic messages, see L<perldiag>.
394
ee0887a9
SH
395XXX New or changed warnings emitted by the core's C<C> code go here. Also
396include any changes in L<perldiag> that reconcile it to the C<C> code.
4c793fe3 397
ee0887a9 398[ Within each section, list entries as a =item entry ]
4c793fe3 399
ee0887a9 400=head2 New Diagnostics
4c793fe3 401
ee0887a9 402XXX Newly added diagnostic messages go here
fc1418b7 403
ee0887a9 404=over 4
fc1418b7
SH
405
406=item *
407
ee0887a9 408XXX
ebce6c40 409
4c793fe3
FR
410=back
411
ee0887a9 412=head2 Changes to Existing Diagnostics
4c793fe3 413
ee0887a9 414XXX Changes (i.e. rewording) of diagnostic messages go here
4c793fe3
FR
415
416=over 4
417
418=item *
419
dc08898c
FC
420The 'Layer does not match this perl' error message has been replaced with
421these more helpful messages:
422
423=over 4
424
425=item *
426
427PerlIO layer function table size (%d) does not match size expected by this
428perl (%d)
429
430=item *
431
432PerlIO layer instance size (%d) does not match size expected by this perl
433(%d)
434
435=back
436
437L<[perl #73754]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73754>
4c793fe3
FR
438
439=back
440
ee0887a9 441=head1 Utility Changes
4c793fe3 442
ee0887a9
SH
443XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
444here. Most of these are built within the directories F<utils> and F<x2p>.
4c793fe3 445
ee0887a9
SH
446[ List utility changes as a =head3 entry for each utility and =item
447entries for each change
448Use L<XXX> with program names to get proper documentation linking. ]
fc1418b7 449
ee0887a9 450=head3 L<XXX>
fc1418b7 451
ee0887a9 452=over 4
4c793fe3 453
44428a46
FC
454=item *
455
ee0887a9 456XXX
44428a46 457
4c793fe3
FR
458=back
459
ee0887a9 460=head1 Configuration and Compilation
4c793fe3 461
ee0887a9
SH
462XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
463go here. Any other changes to the Perl build process should be listed here.
464However, any platform-specific changes should be listed in the
465L</Platform Support> section, instead.
4c793fe3 466
ee0887a9 467[ List changes as a =item entry ].
4c793fe3 468
0c692eed
FR
469=over 4
470
471=item *
472
ee0887a9 473XXX
0c692eed
FR
474
475=back
4c793fe3 476
ee0887a9 477=head1 Testing
0c692eed 478
ee0887a9
SH
479XXX Any significant changes to the testing of a freshly built perl should be
480listed here. Changes which create B<new> files in F<t/> go here as do any
481large changes to the testing harness (e.g. when parallel testing was added).
482Changes to existing files in F<t/> aren't worth summarising, although the bugs
483that they represent may be covered elsewhere.
0c692eed 484
ee0887a9 485[ List each test improvement as a =item entry ]
0c692eed 486
ee0887a9 487=over 4
0c692eed
FR
488
489=item *
490
bd6920d7
FC
491The script F<t/op/threads-dirh.t> has been added, which tests interaction
492of threads and directory handles.
4c793fe3
FR
493
494=back
495
ee0887a9 496=head1 Platform Support
4c793fe3 497
ee0887a9 498XXX Any changes to platform support should be listed in the sections below.
4c793fe3 499
ee0887a9
SH
500[ Within the sections, list each platform as a =item entry with specific
501changes as paragraphs below it. ]
4c793fe3 502
ee0887a9 503=head2 New Platforms
0c692eed 504
ee0887a9
SH
505XXX List any platforms that this version of perl compiles on, that previous
506versions did not. These will either be enabled by new files in the F<hints/>
507directories, or new subdirectories and F<README> files at the top level of the
508source tree.
0c692eed 509
ee0887a9 510=over 4
0c692eed 511
ee0887a9 512=item XXX-some-platform
0c692eed 513
ee0887a9 514XXX
0c692eed 515
ee0887a9 516=back
0c692eed 517
ee0887a9 518=head2 Discontinued Platforms
4c793fe3 519
ee0887a9 520XXX List any platforms that this version of perl no longer compiles on.
8ebb9810 521
ee0887a9 522=over 4
8ebb9810 523
ee0887a9 524=item XXX-some-platform
48c1efd2 525
ee0887a9 526XXX
48c1efd2 527
ee0887a9 528=back
44428a46 529
ee0887a9 530=head2 Platform-Specific Notes
44428a46 531
ee0887a9
SH
532XXX List any changes for specific platforms. This could include configuration
533and compilation changes or changes in portability/compatibility. However,
534changes within modules for platforms should generally be listed in the
535L</Modules and Pragmata> section.
f4beb78f 536
ee0887a9 537=over 4
f4beb78f 538
810f3b7c
FC
539=item IRIX
540
541Conversion of strings to floating-point numbers is now more accurate on
542IRIX systems
543L<[perl #32380]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=32380>.
544
6034bceb
FC
545=item Mac OS X
546
547Early versions of Mac OS X (Darwin) had buggy implementations of the
548C<setregid>, C<setreuid>, C<setrgid> and C<setruid> functions, so perl
549would pretend they did not exist.
550
551These functions are now recognised on Mac OS 10.5 (Leopard; Darwin 9) and
552higher, as they have been fixed
553L<[perl #72990]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72990>.
554
810f3b7c
FC
555=item OpenVOS
556
557perl now builds again with OpenVOS (formerly known as Stratus VOS)
558L<[perl #78132]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=78132>.
559
2ffefa5a 560=item Windows
ccb45ef4 561
2ffefa5a
FC
562C<$Config{gccversion}> is now set correctly when perl is built using the
563mingw64 compiler from L<http://mingw64.org>
564L<[perl #73754]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73754>.
565
f8a8dd49
FC
566The build process proceeds more smoothly with mingw and dmake when
567F<C:\MSYS\bin> is in the PATH, due to a C<Cwd> fix.
568
2ffefa5a 569=back
ccb45ef4 570
ee0887a9 571=head1 Internal Changes
85318b69 572
ee0887a9
SH
573XXX Changes which affect the interface available to C<XS> code go here.
574Other significant internal changes for future core maintainers should
575be noted as well.
85318b69 576
ee0887a9 577[ List each test improvement as a =item entry ]
80b6a949 578
ee0887a9 579=over 4
80b6a949 580
e2babdfb
FR
581=item *
582
a5763045
FC
583See L</Regular expressions retain their localeness when interpolated>,
584above.
e2babdfb 585
a7e93501
FC
586=item *
587
588The C<sv_cmp_flags>, C<sv_cmp_locale_flags>, C<sv_eq_flags> and
589C<sv_collxfrm_flags> functions have been added. These are like their
590non-_flags counterparts, but allow one to specify whether get-magic is
591processed.
592
593The C<sv_cmp>, C<sv_cmp_locale>, C<sv_eq> and C<sv_collxfrm> functions have
594been replaced with wrappers around the new functions.
595
596=item *
597
598A new C<sv_2bool_flags> function has been added.
599
600This is like C<sv_2bool>, but it lets the calling code decide whether
601get-magic is handled. C<sv_2bool> is now a macro that calls the new
602function.
603
604=item *
605
606A new macro, C<SvTRUE_nomg>, has been added.
607
608This is like C<SvTRUE>, except that it does not process magic. It uses the
609new C<sv_2bool_flags> function.
610
611=item *
612
613C<sv_catsv_flags> no longer calls C<mg_get> on its second argument (the
614source string) if the flags passed to it do not include SV_GMAGIC. So it
07d5f7aa 615now matches the documentation.
a7e93501 616
5e26bbbe
Z
617=item *
618
619A new interface has been added for custom check hooks on subroutines. See
620L/Custom per-subroutine check hooks>, above.
621
a11a8547
Z
622=item *
623
624List op building functions have been added to the
625API. See L<op_append_elem|perlapi/op_append_elem>,
626L<op_append_list|perlapi/op_append_list>, and
627L<op_prepend_elem|perlapi/op_prepend_elem>.
628
629=item *
630
631The L<LINKLIST|perlapi/LINKLIST> macro, part of op building that
632constructs the execution-order op chain, has been added to the API.
633
eb32ee41
FC
634=item *
635
636Many functions ending with pvn now have equivalent pv/pvs/sv versions.
637
ee0887a9 638=back
e2babdfb 639
ee0887a9 640=head1 Selected Bug Fixes
e2babdfb 641
ee0887a9
SH
642XXX Important bug fixes in the core language are summarised here.
643Bug fixes in files in F<ext/> and F<lib/> are best summarised in
644L</Modules and Pragmata>.
e2babdfb 645
ee0887a9 646[ List each fix as a =item entry ]
346e4e56 647
ee0887a9 648=over 4
346e4e56 649
78846812
FR
650=item *
651
4e9f151b
FC
652A regular expression match in the right-hand side of a global substitution
653(C<s///g>) that is in the same scope will no longer cause match variables
654to have the wrong values on subsequent iterations. This can happen when an
e54f3f30
FC
655array or hash subscript is interpolated in the right-hand side, as in
656C<s|(.)|@a{ print($1), /./ }|g>
657L<[perl #19078]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=19078>.
658
659=item *
660
661Constant-folding used to cause
662
663 $text =~ ( 1 ? /phoo/ : /bear/)
664
665to turn into
666
667 $text =~ /phoo/
668
669at compile time. Now it correctly matches against C<$_>
670L<[perl #20444]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=20444>.
78846812 671
a5763045
FC
672=item *
673
674Parsing Perl code (either with string C<eval> or by loading modules) from
675within a C<UNITCHECK> block no longer causes the interpreter to crash
676L<[perl #70614]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=70614>.
677
5a9a79a4
FC
678=item *
679
680When C<-d> is used on the shebang (C<#!>) line, the debugger now has access
681to the lines of the main program. In the past, this sometimes worked and
682sometimes did not, depending on what order things happened to be arranged
b45e2413
FC
683in memory
684L<[perl #71806]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=71806>.
5a9a79a4 685
a7e93501
FC
686=item *
687
688The C<y///> or C<tr///> operator now calls get-magic (e.g., the C<FETCH>
689method of a tie) on its left-hand side just once, not twice
690L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
691
692=item *
693
694String comparison (C<eq>, C<ne>, C<lt>, C<gt>, C<le>, C<ge> and
695C<cmp>) and logical not (C<not> and C<!>) operators no longer call magic
696(e.g., tie methods) twice on their operands
697L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
698
699This bug was introduced in an earlier 5.13 release, and does not affect
700perl 5.12.
701
702=item *
703
704When a tied (or other magic) variable is used as, or in, a regular
705expression, it no longer has its C<FETCH> method called twice
706L<[perl #76814]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=76814>.
707
708This bug was introduced in an earlier 5.13 release, and does not affect
709perl 5.12.
710
d4a59e54
FC
711=item *
712
8420a925 713The C<-C> command line option can now be followed by other options
d4a59e54
FC
714L<[perl #72434]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=72434>.
715
dc08898c
FC
716=item *
717
718Assigning a glob to a PVLV used to convert it to a plain string. Now it
719works correctly, and a PVLV can hold a glob. This would happen when a
720nonexistent hash or array element was passed to a subroutine:
721
722 sub { $_[0] = *foo }->($hash{key});
723 # $_[0] would have been the string "*main::foo"
724
725It also happened when a glob was assigned to, or returned from, an element
726of a tied array or hash
727L<[perl #36051]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=36051>.
728
6904a83f
FC
729=item *
730
731Creating a new thread when directory handles were open used to cause a
732crash, because the handles were not cloned, but simply passed to the new
733thread, resulting in a double free.
734
07d5f7aa 735Now directory handles are cloned properly, on systems that have a C<fchdir>
6904a83f
FC
736function. On other systems, new threads simply do not inherit directory
737handles from their parent threads
738L<[perl #75154]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75154>.
739
cffb3698
FC
740=item *
741
ab4c2c27
FC
742The regular expression parser no longer hangs when parsing C<\18> and
743C<\88>.
744
745This bug was introduced in version 5.13.5 and did not affect earlier
746versions
747L<[perl #78058]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=78058>.
748
be1cc451
FC
749=item *
750
751Subroutine redefinition works once more in the debugger
752L<[perl #48332]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=48332>.
753
b20c4ee1
FC
754=item *
755
756The C<&> C<|> C<^> bitwise operators no longer coerce read-only arguments
757L<[perl #20661]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=20661>.
758
afa74577
FC
759=item *
760
761Stringifying a scalar containing -0.0 no longer has the affect of turning
762false into true
763L<[perl #45133]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=45133>.
764
c8bbf675
FC
765=item *
766
767Aliasing packages by assigning to globs or deleting packages by deleting
768their containing stash elements used to have erratic effects on method
769resolution, because the internal 'isa' caches were not reset. This has been
770fixed.
771
07d5f7aa
FC
772=item *
773
774C<sort> with a custom sort routine could crash if too many nested
775subroutine calls occurrred from within the sort routine
776L<[perl #77930]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=77930>.
777
778This bug was introduced in an earlier 5.13 release, and did not affect
779perl 5.12.
780
4c793fe3
FR
781=back
782
962fbe1d
SH
783=head1 Known Problems
784
ee0887a9
SH
785XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
786tests that had to be C<TODO>ed for the release would be noted here, unless
787they were specific to a particular platform (see below).
962fbe1d 788
ee0887a9
SH
789This is a list of some significant unfixed bugs, which are regressions
790from either 5.XXX.XXX or 5.XXX.XXX.
962fbe1d 791
ee0887a9
SH
792[ List each fix as a =item entry ]
793
794=over 4
08d032c0
SH
795
796=item *
797
ee0887a9 798XXX
962fbe1d
SH
799
800=back
801
ee0887a9 802=head1 Obituary
4c793fe3 803
ee0887a9
SH
804XXX If any significant core contributor has died, we've added a short obituary
805here.
0195fb5f 806
405fd67e
DG
807=head1 Errata
808
809=over 4
810
811=item *
812
813Fixed a typo in L<perl5135delta> regarding array slices and smart matching
814
815=back
816
ee0887a9 817=head1 Acknowledgements
0195fb5f 818
ee0887a9 819XXX The list of people to thank goes here.
4c793fe3
FR
820
821=head1 Reporting Bugs
822
823If you find what you think is a bug, you might check the articles
824recently posted to the comp.lang.perl.misc newsgroup and the perl
825bug database at http://rt.perl.org/perlbug/ . There may also be
826information at http://www.perl.org/ , the Perl Home Page.
827
828If you believe you have an unreported bug, please run the B<perlbug>
829program included with your release. Be sure to trim your bug down
830to a tiny but sufficient test case. Your bug report, along with the
831output of C<perl -V>, will be sent off to perlbug@perl.org to be
832analysed by the Perl porting team.
833
834If the bug you are reporting has security implications, which make it
835inappropriate to send to a publicly archived mailing list, then please send
ee0887a9 836it to perl5-security-report@perl.org. This points to a closed subscription
4c793fe3
FR
837unarchived mailing list, which includes all the core committers, who be able
838to help assess the impact of issues, figure out a resolution, and help
839co-ordinate the release of patches to mitigate or fix the problem across all
ee0887a9 840platforms on which Perl is supported. Please only use this address for
4c793fe3
FR
841security issues in the Perl core, not for modules independently
842distributed on CPAN.
843
844=head1 SEE ALSO
845
846The F<Changes> file for an explanation of how to view exhaustive details
847on what changed.
848
849The F<INSTALL> file for how to build Perl.
850
851The F<README> file for general stuff.
852
853The F<Artistic> and F<Copying> files for copyright information.
854
855=cut