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