This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
pod/perldelta.pod: fill in Acknowledgements for 5.13.10
[perl5.git] / pod / perldelta.pod
CommitLineData
3a5c9134
CBW
1=encoding utf8
2
3=head1 NAME
4
d17f3dbc 5perldelta - what is new for perl v5.13.10
0d157ee2 6
d17f3dbc 7=head1 DESCRIPTION
b16cfc56 8
7e3fee74
AB
9This document describes differences between the 5.13.9 release and
10the 5.13.10 release.
d4560299 11
7e3fee74
AB
12If you are upgrading from an earlier release such as 5.13.8, first read
13L<perl5139delta>, which describes differences between 5.13.8 and
145.13.9.
d4560299 15
d17f3dbc 16=head1 Core Enhancements
d4560299 17
94b03d7d
KW
18=head2 The new regular expression modifiers available in suffix form
19
20Various releases of the 5.13.x series have added new regular expression
21modifiers, C</a>, C</d>, C</l>, and C</u>. They were only available in
22infix form (e.g., C<(?a:...)> until this release; now they are usable
23in suffix form. This change was made too late to change all the
24affected documentation, so there are a number of places that erroneously
25say these must be used in infix form.
26
27However, there is an ambiguity with the construct, C<s/foo/bar/le...>. Due
28to backward compatibility constraints, in Perl 5.14 only, it will be
29resolved as C<s/foo/bar/ le...>, that is, as meaning to take the result
30of the substitution, and see if it is stringwise less-than-or-equal-to
31what follows. In Perl 5.16 and later, it will instead be resolved as
748607af 32meaning to do the pattern match using the rules of the current locale,
94b03d7d
KW
33and evaluate the rhs as an expression when doing the substitution. In
345.14, if you want the latter interpretation, you can write "el" instead.
35
9e9ca9d7
KW
36=head2 Add C<\p{Titlecase}> as a synonym for C<\p{Title}>
37
b6538e4f 38This synonym is added for symmetry with the Unicode property names
9e9ca9d7
KW
39C<\p{Uppercase}> and C<\p{Lowercase}>.
40
2f7f8cb1
KW
41=head2 New regular expression modifier option C</aa>
42
43Doubling the C</a> regular expression modifier increases its effect,
44so that in case-insensitive matching, no ASCII character will match a
45non-ASCII character. For example, normally,
46
47 'k' =~ /\N{KELVIN SIGN}/
48
94b03d7d 49will match; it won't under C</aa>.
9e9ca9d7 50
8457b38f
KW
51=head2 New warnings categories for problematic (non-)Unicode code points.
52
1fdcc914 53Three new warnings subcategories of <utf8> have been added. These
8457b38f
KW
54allow you to turn off warnings for their covered events, while allowing
55the other UTF-8 warnings to remain on. The three categories are:
56C<surrogate> when UTF-16 surrogates are encountered;
57C<nonchar> when Unicode non-character code points are encountered;
58and C<non_unicode> when code points that are above the legal Unicode
59maximum of 0x10FFFF are encountered.
60
d17f3dbc 61=head1 Security
17096837 62
d17f3dbc 63=head1 Incompatible Changes
935c8d19 64
56ca34ca
KW
65=head2 Most C<\p{}> properties are now immune from case-insensitive matching
66
67For most Unicode properties, it doesn't make sense to have them match
68differently under C</i> case-insensitive matching than not. And doing
69so leads to unexpected results and potential security holes. For
70example
71
72 m/\p{ASCII_Hex_Digit}+/i
73
74could previously match non-ASCII characters because of the Unicode
75matching rules. There were a number of bugs in this feature until an
76earlier release in the 5.13 series. Now this release reverts, and
77removes the feature completely except for the few properties where
78people have come to expect it, namely the ones where casing is an
79integral part of their functionality, such as C<m/\p{Uppercase}/i> and
80C<m/\p{Lowercase}/i>, both of which match the exact same code points,
81namely those matched by C<m/\p{Cased}/i>. Details are in
82L<perlrecharclass/Unicode Properties>.
83
84User-defined property handlers that need to match differently under
85C</i> must change to read the new boolean parameter passed it which is
86non-zero if case-insensitive matching is in effect; 0 if not. See
87L<perluniprops/User-Defined Character Properties>.
88
5e6b2389
AB
89=head2 regex: \p{} in pattern implies Unicode semantics
90
91Now, a Unicode property match specified in the pattern will indicate
92that the pattern is meant for matching according to Unicode rules
93(e40e74f)
94
95=head2 add GvCV_set() and GvGP_set() macros and change GvGP()
96
97This allows a future commit to eliminate some backref magic between GV
98and CVs, which will require complete control over assignment to the
99gp_cv slot.
100
101If you've been using GvGP() in lvalue context this change will break
102your code, you should use GvGP_set() instead. (c43ae56)
103
104=head2 _swash_inversion_hash is no longer exported as part of the API
105
938f3c77 106This function shouldn't be called from XS code. (4c2e113)
5e6b2389 107
279627b4
FC
108=head2 Unreferenced objects in global destruction
109
110The fix for [perl #36347], which made sure that destructors were called on
111unreferenced objects, broke the tests for three CPAN modules, which
112apparently rely on the bug.
113
114To provide more time for fixing them (as this is such a minor bug), we
115have reverted the fix until after perl 5.14.0.
116
117This resolves [perl #82542] and other related tickets.
118
119=head2 C<close> on shared pipes
120
121The C<close> function no longer waits for the child process to exit if the
122underlying file descriptor is still in use by another thread, to avoid
123deadlocks. It returns true in such cases.
124
d17f3dbc 125=head1 Deprecations
6def3600 126
33d7e9f6
NC
127=over
128
129=item Deprecated Modules
130
131The following modules will be removed from the core distribution in a
132future release, and should be installed from CPAN instead. Distributions
133on CPAN which require these should add them to their prerequisites. The
134core versions of these modules warnings will issue a deprecation warning.
135
136If you ship a packaged version of Perl, either alone or as part of a
137larger system, then you should carefully consider the repercussions of
138core module deprecations. You may want to consider shipping your default
139build of Perl with packages for some or all deprecated modules which
140install into C<vendor> or C<site> perl library directories. This will
141inhibit the deprecation warnings.
142
143Alternatively, you may want to consider patching F<lib/deprecate.pm>
144to provide deprecation warnings specific to your packaging system
145or distribution of Perl, consistent with how your packaging system
146or distribution manages a staged transition from a release where the
147installation of a single package provides the given functionality, to
148a later release where the system administrator needs to know to install
149multiple packages to get that same functionality.
150
151You can silence these deprecation warnings by installing the modules
152in question from CPAN. To install the latest version of all of them,
b6e4e225 153just install C<Task::Deprecations::5_14>.
33d7e9f6
NC
154
155=over
156
157=item L<Devel::DProf>
158
159We strongly recommend that you install and used L<Devel::NYTProf> in
160preference, as it offers significantly improved profiling and reporting.
161
162=back
163
164=back
e8b333e6 165
3a3263a0
KW
166=head2 User-defined case-mapping
167
168This feature is being deprecated due to its many issues, as documented in
169L<perlunicode/User-Defined Case Mappings (for serious hackers only)>.
170It is planned to remove this feature in Perl 5.16. A CPAN module
171providing improved functionality is being prepared for release by the
172time 5.14 is.
173
d17f3dbc 174=head1 Modules and Pragmata
b16cfc56 175
d17f3dbc 176=head2 New Modules and Pragmata
8e1e0801 177
d17f3dbc 178=over 4
4df1dffa
FC
179
180=item *
181
c05760c6
DG
182C<CPAN::Meta> version 2.110440 has been added as a dual-life module. It
183provides a standard library to read, interpret and write CPAN distribution
184metadata files (e.g. META.json and META.yml) which describes a
185distribution, its contents, and the requirements for building it and
186installing it. The latest CPAN distribution metadata specification is
187included as C<CPAN::Meta::Spec> and notes on changes in the specification
188over time are given in C<CPAN::Meta::History>.
189
190=item *
191
39ac3336
DG
192C<Version::Requirements> version 0.101020 has been added as a dual-life
193module. It provides a standard library to model and manipulates module
194prerequisites and version constraints as defined in the L<CPAN::Meta::Spec>.
4df1dffa 195
d17f3dbc 196=back
f5d41534 197
d17f3dbc 198=head2 Updated Modules and Pragmata
f5d41534 199
d17f3dbc 200=over 4
f5d41534
CBW
201
202=item *
203
962bcf28
FC
204C<B> has been upgraded from version 1.27 to 1.28.
205
206=item *
207
279627b4
FC
208C<Carp> has been upgraded from version 1.19 to 1.20.
209
210[perl #82854] It now avoids using regular expressions that cause perl to
211load its Unicode tables, in order to avoid the 'BEGIN not safe after
212errors' error that will ensue if there has been a syntax error.
213
214=item *
215
f4c5852c
CBW
216C<CGI> has been upgraded from version 3.51 to 3.52
217
218=item *
219
12ad1f85
DG
220C<CPAN> has been upgraded from version 1.94_64 to 1.94_65
221
222Includes support for META.json and MYMETA.json.
223
224=item *
225
bada4ede 226C<CPANPLUS> has been upgraded from version 0.9011 to 0.9101
28aafdbe
CBW
227
228Includes support for META.json and MYMETA.json and a change to
229using Digest::SHA for CPAN checksums.
230
231=item *
232
4ffaa343
NC
233C<deprecate> has been upgraded from version 0.01 to 0.02.
234
235=item *
236
279627b4
FC
237C<diagnostics> has been upgraded from version 1.21 to 1.22.
238
239It now renders pod links slightly better, and has been taught to find
240descriptions for messages that share their descriptions with other
241messages.
242
243=item *
244
26dd0570
FR
245C<Devel::DProf> has been upgraded from version 20080331.00 to 20110217.00.
246
247Merely loading C<Devel::DProf> now no longer triggers profiling to start.
4b178c09 248C<use Devel::DProf> and C<perl -d:DProf ...> still behave as before and start
26dd0570
FR
249the profiler.
250
33d7e9f6 251NOTE: C<Devel::DProf> is deprecated and will be removed from a future
7f83cf4f
FR
252version of Perl. We strongly recommend that you install and use
253L<Devel::NYTProf> instead, as it offers significantly improved
33d7e9f6
NC
254profiling and reporting.
255
26dd0570
FR
256=item *
257
6b0747ad
FC
258C<DynaLoader> has been upgraded from version 1.12 to 1.13.
259
260[perl #84358] It no longer inherits from AutoLoader; hence it no longer
261produces weird error messages for unsuccessful method calls on classes that
262inherit from DynaLoader.
263
264=item *
265
279627b4
FC
266C<IO::Select> has been upgraded from version 1.17 to 1.18.
267
268It now allows IO::Handle objects (and objects in derived classes) to be
269removed from an IO::Select set even if the underlying file descriptor is
270closed or invalid.
271
272=item *
273
f7f926be
CBW
274C<IPC::Cmd> has been upgraded from version 0.68 to 0.70
275
276=item *
277
44de791a
DG
278C<HTTP::Tiny> has been upgraded from version 0.009 to 0.010
279
280=item *
281
cf64c7fa 282C<Math::BigInt> has been upgraded from version 1.99_04 to 1.992.
279627b4
FC
283
284=item *
285
501ab549 286C<Module::Build> has been upgraded from version 0.3607 to 0.37_05.
7cf8bfc0
DG
287
288A notable change is the deprecation of several modules.
289Module::Build::Version has been deprecated and Module::Build now relies
290directly upon L<version>. Module::Build::ModuleInfo has been deprecated in
291favor of a standalone copy of it called L<Module::Metadata>.
292Module::Build::YAML has been deprecated in favor of L<CPAN::Meta::YAML>.
293
a7c7ab1e
DG
294Module::Build now also generates META.json and MYMETA.json files
295in accordance with version 2 of the CPAN distribution metadata specification,
296L<CPAN::Meta::Spec>. The older format META.yml and MYMETA.yml files are
297still generated, as well.
298
7cf8bfc0
DG
299=item *
300
f541799a 301C<Module::Load::Conditional> has been upgraded from version 0.40 to 0.44
a4031803
CBW
302
303=item *
304
2a856793
DG
305C<Module::Metadata> has been upgraded from version 1.000003 to 1.000004.
306
307=item *
308
279627b4
FC
309C<overload> has been upgraded from version 1.12 to 1.13.
310
311The documentation has greatly improved. See L</Documentation> below.
312
313=item *
314
34d5bd5d
DG
315C<Parse::CPAN::Meta> has been upgraded from version 1.40 to 1.4401.
316
317The latest Parse::CPAN::Meta can now read YAML or JSON files using
318L<CPAN::Meta::YAML> and L<JSON::PP>, which are now part of the Perl core.
319
320=item *
321
279627b4
FC
322C<re> has been upgraded from version 0.16 to 0.17.
323
324It now supports the double-a flag: C<use re '/aa';>
325
411c5572
FC
326The C<regmust> function used to crash when called on a regular expression
327belonging to a pluggable engine. Now it has been disabled for those.
328
329C<regmust> no longer leaks memory.
330
279627b4
FC
331=item *
332
f31eab29
CBW
333C<Term::UI> has been upgraded from version 0.24 to 0.26
334
335=item *
336
f58b9ef1
CBW
337C<Unicode::Collate> has been upgraded from version 0.68 to 0.72
338
339This also sees the switch from using the pure-perl version of this
340module to the XS version.`
341
342=item *
343
279627b4
FC
344C<VMS::DCLsym> has been upgraded from version 1.04 to 1.05.
345
346Two bugs have been fixed [perl #84086]:
347
348The symbol table name was lost when tying a hash, due to a thinko in
349C<TIEHASH>. The result was that all tied hashes interacted with the
350local symbol table.
351
352Unless a symbol table name had been explicitly specified in the call
353to the constructor, querying the special key ':LOCAL' failed to
354identify objects connected to the local symbol table.
355
356=item *
357
d9672076 358Added new function C<Unicode::UCD::num()>. This function will return the
7319f91d
KW
359numeric value of the string passed it; C<undef> if the string in its
360entirety has no safe numeric value.
361
362To be safe, a string must be a single character which has a numeric
363value, or consist entirely of characters that match \d, coming from the
364same Unicode block of digits. Thus, a mix of Bengali and Western
365digits would be considered unsafe, as well as a mix of half- and
366full-width digits, but strings consisting entirely of Devanagari digits
367or of "Mathematical Bold" digits would would be safe.
368
369=item *
370
5e6b2389
AB
371C<CPAN> has been upgraded from version1.94_63 to 1.94_64.
372
9f7a72d0 373=back
e1165778 374
9f7a72d0 375=head1 Documentation
17096837 376
d17f3dbc 377=head2 Changes to Existing Documentation
b16cfc56 378
279627b4
FC
379=head3 L<overload>
380
381=over 4
382
383=item *
384
385L<overload>'s documentation has practically undergone a rewrite. It
386is now much more straightforward and clear.
387
388=back
389
04c692a8 390=head3 L<perlhack> and perlrepository
d4238815 391
9f7a72d0 392=over 4
17096837 393
d4238815
FC
394=item *
395
04c692a8
DR
396The L<perlhack> and perlrepository documents have been heavily edited and
397split up into several new documents.
398
399The L<perlhack> document is now much shorter, and focuses on the Perl 5
400development process and submitting patches to Perl. The technical content has
401been moved to several new documents, L<perlsource>, L<perlinterp>,
402L<perlhacktut>, and L<perlhacktips>. This technical content has only been
403lightly edited.
404
405The perlrepository document has been renamed to L<perlgit>. This new document
406is just a how-to on using git with the Perl source code. Any other content
407that used to be in perlrepository has been moved to perlhack.
e1165778 408
9f7a72d0 409=back
17096837 410
5e6b2389
AB
411=head3 L<perlfunc>
412
413=over 4
414
415=item *
416
417The documentation for the C<map> function now contains more examples,
418see B<perldoc -f map> (f947627)
419
420=back
421
422=head3 L<perlfaq4>
423
424=over 4
425
426=item *
427
428Examples in L<perlfaq4> have been updated to show the use of
429L<Time::Piece>. (9243591)
430
431=back
432
433=head3 Miscellaneous
434
435=over 4
436
437=item *
438
439Many POD related RT bugs and other issues which are too numerous to
440enumerate have been solved by Michael Stevens.
441
442=back
443
9f7a72d0 444=head1 Diagnostics
17096837 445
9f7a72d0
Z
446The following additions or changes have been made to diagnostic output,
447including warnings and fatal error messages. For the complete list of
448diagnostic messages, see L<perldiag>.
e1165778 449
9f7a72d0 450=head2 New Diagnostics
3a5c9134 451
9f7a72d0 452=over 4
17096837 453
5024bc2d
KW
454=item "\b{" is deprecated; use "\b\{" instead
455
456=item "\B{" is deprecated; use "\B\{" instead
457
458Use of an unescaped "{" immediately following a C<\b> or C<\B> is now
459deprecated so as to reserve its use for Perl itself in a future release.
c2e0289e 460
5e6b2389
AB
461=item regcomp: Add warning if \p is used under locale. (fb2e24c)
462
463C<\p> implies Unicode matching rules, which are likely going to be
464different than the locale's.
17096837 465
279627b4
FC
466=item panic: gp_free failed to free glob pointer - something is repeatedly re-creating entries
467
468This new error is triggered if a destructor called on an object in a
469typeglob that is being freed creates a new typeglob entry containing an
470object with a destructor that creates a new entry containing an object....
471
962bcf28
FC
472=item refcnt: fd %d%s
473
474This new error only occurs if a internal consistency check fails when a
475pipe is about to be closed.
476
9f7a72d0 477=back
e6f1cc4d 478
9f7a72d0 479=head2 Changes to Existing Diagnostics
e1165778 480
9f7a72d0 481=over 4
17096837 482
e1165778
Z
483=item *
484
5e6b2389
AB
485The warning message about regex unrecognized escapes passed through is
486changed to include any literal '{' following the 2-char escape. e.g.,
487"\q{" will include the { in the message as part of the escape
488(216bfc0).
489
7e3fee74
AB
490=item *
491
492C<binmode $fh, ':scalar'> no longer warns (8250589)
5e6b2389
AB
493
494Perl will now no longer produce this warning:
495
496 $ perl -we 'open my $f, ">", \my $x; binmode $f, "scalar"'
497 Use of uninitialized value in binmode at -e line 1.
498
3a5c9134
CBW
499=back
500
9f7a72d0 501=head1 Utility Changes
e1165778 502
7e3fee74 503=head3 L<perlbug>
b16cfc56
JV
504
505=over 4
506
507=item *
508
7e3fee74
AB
509[perl #82996] Use the user's from address as return-path in perlbug
510
511Many systems these days don't have a valid Internet domain name and
512perlbug@perl.org does not accept email with a return-path that does
513not resolve. Therefore pass the user's address to sendmail so it's
514less likely to get stuck in a mail queue somewhere. (019cfd2)
b16cfc56
JV
515
516=back
517
d17f3dbc 518=head1 Configuration and Compilation
3a5c9134 519
d17f3dbc 520=over 4
3a5c9134 521
7e3fee74
AB
522=item *
523
524make reg_eval_scope.t TODOs consistently fail (daaf7ac)
5e6b2389
AB
525
526Some of the TODO tests in reg_eval_scope.t spuriously passed under
527non-threaded builds. Make the tests harder so they always fail.
528
529Since one of the key bugs in (?{..}) is the trashing of the parent pad,
530add some extra lexical vars to the parent scope and check they're still
531there at the end.
532
533=item *
534
535Stop EU::CBuilder's tests from failing in parallel (cbf59d5)
536
537It used to use the same paths for temporary files in all tests. This
538blew up randomly when the tests were run in parallel.
539
d17f3dbc 540=back
b16cfc56 541
d17f3dbc 542=head1 Testing
b16cfc56 543
d17f3dbc 544=over 4
b16cfc56
JV
545
546=item *
547
110c4fb7
TC
548F<porting/FindExt.t> now skips all tests on a static (-Uusedl) build
549of perl.
550
551=item *
552
553F<porting/FindExt.t> now passes on non-Win32 platforms when some
554extensions are built statically.
b16cfc56 555
3a5c9134
CBW
556=back
557
9f7a72d0 558=head1 Platform Support
3a5c9134 559
d17f3dbc 560=head2 Platform-Specific Notes
b16cfc56 561
9f7a72d0 562=over 4
3a5c9134 563
347ee86f 564=item Windows
c61b6d0f 565
347ee86f
TC
566=over 4
567
568=item *
569
570The C<test-prep> build target now depends on F<pod/perltoc.pod> to allow the
571F<t/porting/buildtoc.t> test to run successfully.
572
573=back
6d4f9cf2 574
5e6b2389
AB
575=item MirBSD
576
577=over 4
578
579=item *
580
581[perl #82988] Skip hanging taint.t test on MirBSD 10 (1fb83d0)
582
583Skip a hanging test under MirBSD that was already being skipped under
584OpenBSD.
585
586=item *
587
588Previously if you build perl with a shared libperl.so on MirBSD (the
589default config), it will work up to the installation; however, once
590installed, it will be unable to find libperl. Treat path handling
591like in the other BSD dialects.
592
593=back
594
d17f3dbc 595=back
a62b1201 596
d17f3dbc 597=head1 Internal Changes
a62b1201 598
d17f3dbc 599=over 4
b16cfc56 600
7e3fee74
AB
601=item *
602
603Fix harmless invalid read in Perl_re_compile() (f6d9469)
5e6b2389
AB
604
605[perl #2460] described a case where electric fence reported an invalid
606read. This could be reproduced under valgrind with blead and -e'/x/',
607but only on a non-debugging build.
608
609This was because it was checking for certain pairs of nodes (e.g. BOL + END)
610and wasn't allowing for EXACT nodes, which have the string at the next
611node position when using a naive NEXTOPER(first). In the non-debugging
612build, the nodes aren't initialised to zero, and a 1-char EXACT node isn't
613long enough to spill into the type field of the "next node".
614
615Fix this by only using NEXTOPER(first) when we know the first node is
616kosher.
617
7e3fee74
AB
618=item *
619
620Break out the generated function Perl_keywords() into F<keywords.c>, a new file. (26ea9e1)
5e6b2389
AB
621
622As it and Perl_yylex() both need FEATURE_IS_ENABLED, feature_is_enabled() is
623no longer static, and the two macro definitions move from toke.c to perl.h
624
625Previously, one had to cut and paste the output of perl_keywords.pl into the
626middle of toke.c, and it was not clear that it was generated code.
627
628=item *
629
630A lot of tests have been ported from Test to Test::More, e.g. in
6313842ad6.
632
7e3fee74
AB
633=item *
634
635Increase default PerlIO buffer size. (b83080d)
7bb5ac4d
CB
636
637The previous default size of a PerlIO buffer (4096 bytes) has been increased
638to the larger of 8192 bytes and your local BUFSIZ. Benchmarks show that doubling
639this decade-old default increases read and write performance in the neighborhood
640of 25% to 50% when using the default layers of perlio on top of unix. To choose
641a non-default size, such as to get back the old value or to obtain and even
642larger value, configure with:
643
644 ./Configure -Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=N
645
646where N is the desired size in bytes; it should probably be a multiple of
647your page size.
648
3a5c9134
CBW
649=back
650
651=head1 Selected Bug Fixes
652
d17f3dbc 653=over 4
f3fe4ed7 654
712ef7ca
FC
655=item *
656
5e6b2389 657A Unicode C<\p{}> property match in a regular expression pattern will
e40e74fe 658now force Unicode rules for the rest of the regular expression
712ef7ca 659
5e6b2389
AB
660=item *
661
662[perl #38456] binmode FH, ":crlf" only modifies top crlf layer (7826b36)
663
664When pushed on top of the stack, crlf will no longer enable crlf layers
665lower in the stack. This will prevent unexpected results.
666
667=item *
668
669Fix 'raw' layer for RT #80764 (ecfd064)
670
671Made a ':raw' open do what it advertises to do (first open the file,
672then binmode it), instead of leaving off the top layer.
673
674=item *
675
676Use PerlIOBase_open for pop, utf8 and bytes layers (c0888ac)
677
678Three of Perl's builtin PerlIO layers (C<:pop>, C<:utf8> and
679C<:bytes>) didn't allow stacking when opening a file. For example
680this:
681
682 open FH, '>:pop:perlio', 'some.file' or die $!;
683
684Would throw an error: "Invalid argument". This has been fixed in this
685release.
686
687=item *
688
689An issue present since 5.13.1, where s/A/B/ with A utf8 and B
690non-utf8, could cause corruption or segfaults has been
691fixed. (c95ca9b)
692
693=item *
694
695String evals will no longer fail after 2 billion scopes have been
696compiled (d1bfb64, 2df5bdd, 0d311cd and 6012dc8)
697
279627b4
FC
698=item *
699
b5a55c7b
FC
700[perl #81750] When strict 'refs' mode is off,
701C<%{...}> in rvalue context returns C<undef> if
279627b4
FC
702its argument is undefined. An optimisation introduced in perl 5.12.0 to
703make C<keys %{...}> faster when used as a boolean did not take this into
704account, causing C<keys %{+undef}> (and C<keys %$foo> when C<$foo> is
705undefined) to be an error, which it should only be in strict mode.
706
707=item *
708
709[perl #83194] Combining the vector (%v) flag and dynamic precision would
710cause sprintf to confuse the order of its arguments, making it treat the
711string as the precision and vice versa.
712
713=item *
714
715[perl #77692] Sometimes the UTF8 length cache would not be reset on a value
716returned by substr, causing C<length(substr($uni_string,...))> to give
717wrong answers. With C<${^UTF8CACHE}> set to -1, it would produce a 'panic'
718error message, too.
719
720=item *
721
722During the restoration of a localised typeglob on scope exit, any
723destructors called as a result would be able to see the typeglob in an
724inconsistent state, containing freed entries, which could result in a
725crash. This would affect code like this:
726
727 local *@;
728 eval { die bless [] }; # puts an object in $@
729 sub DESTROY {
730 local $@; # boom
731 }
732
733Now the glob entries are cleared before any destructors are called. This
734also means that destructors can vivify entries in the glob. So perl tries
735again and, if the entries are re-created too many times, dies with a
736'panic: gp_free...' error message.
737
738=item *
739
740[perl #78494] When pipes are shared between threads, the C<close> function
741(and any implicit close, such as on thread exit) no longer blocks.
742
c11ff943
KW
743=item *
744
745Several contexts no longer allow a Unicode character to begin a word
746that should never begin words, for an example an accent that must follow
747another character previously could precede all other characters.
748
17580e7a
KW
749=item *
750
751Case insensitive matching in regular expressions compiled under C<use
752locale> now works much more sanely when the pattern and/or target string
753are encoded in UTF-8. Previously, under these conditions the localeness
754was completely lost. Now, code points above 255 are treated as Unicode,
755but code points between 0 and 255 are treated using the current locale
756rules, regardless of whether the pattern or string are encoded in UTF-8.
757The few case insensitive matches that cross the 255/256 boundary are not
758allowed. For example, 0xFF does not caselessly match the character at
7590x178, LATIN CAPITAL LETTER Y WITH DIAERESIS, because 0xFF may not be
760LATIN SMALL LETTER Y in the current locale, and Perl has no way of
761knowing if that character even exists in the locale, much less what code
762point it is.
763
d17f3dbc 764=back
ecede56a 765
9f7a72d0 766=head1 Acknowledgements
b0c3724f 767
2114bca7
AB
768Perl 5.13.10 represents approximately one month of development since
769Perl 5.13.9 and contains approximately 63000 lines of changes across
770609 files from 38 authors and committers:
771
772Abigail, Alexander Hartmaier, brian d foy, Charles Bailey, Chip
773Salzenberg, Chris 'BinGOs' Williams, Craig A. Berry, Curtis Jewell,
774Dave Rolsky, David Golden, David Leadbeater, David Mitchell, David
775Wheeler, Father Chrysostomos, Florian Ragwitz, Franz Fasching, George
776Greer, H.Merijn Brand, Hongwen Qiu, Hugo van der Sanden, Jay Hannah,
777Jesse Vincent, Karl Williamson, Larwan Berke, Leon Timmermans, Michael
778Breen, Michael Stevens, Nicholas Clark, Noirin Shirley, Paul Evans,
779Peter John Acklam, Ricardo Signes, Robin Barker, Steven Schubiger, Tom
780Christiansen, Tony Cook, Zsbán Ambrus and Ævar Arnfjörð Bjarmason
3a5c9134
CBW
781
782=head1 Reporting Bugs
783
784If you find what you think is a bug, you might check the articles
785recently posted to the comp.lang.perl.misc newsgroup and the perl
786bug database at http://rt.perl.org/perlbug/ . There may also be
787information at http://www.perl.org/ , the Perl Home Page.
788
789If you believe you have an unreported bug, please run the L<perlbug>
790program included with your release. Be sure to trim your bug down
791to a tiny but sufficient test case. Your bug report, along with the
792output of C<perl -V>, will be sent off to perlbug@perl.org to be
793analysed by the Perl porting team.
794
795If the bug you are reporting has security implications, which make it
796inappropriate to send to a publicly archived mailing list, then please send
797it to perl5-security-report@perl.org. This points to a closed subscription
798unarchived mailing list, which includes all the core committers, who be able
799to help assess the impact of issues, figure out a resolution, and help
800co-ordinate the release of patches to mitigate or fix the problem across all
801platforms on which Perl is supported. Please only use this address for
802security issues in the Perl core, not for modules independently
803distributed on CPAN.
804
805=head1 SEE ALSO
806
807The F<Changes> file for an explanation of how to view exhaustive details
808on what changed.
809
810The F<INSTALL> file for how to build Perl.
811
812The F<README> file for general stuff.
813
814The F<Artistic> and F<Copying> files for copyright information.
815
816=cut