Removed todo section
[p5sagit/p5-mst-13.2.git] / pod / perl5110delta.pod
CommitLineData
fa7da8f7 1=encoding utf8
2
7120b314 3=head1 NAME
4
5a00ee6a 5perl5110delta - what is new for perl v5.11.0
7120b314 6
7=head1 DESCRIPTION
8
5a00ee6a 9This document describes differences between the 5.10.0 release and
10the 5.11.0 development release.
7120b314 11
12=head1 Incompatible Changes
13
6fa80ea2 14=head2 Unicode interpretation of \w, \d, \s, and the POSIX character classes redefined.
15
16Previous versions of Perl tried to map POSIX style character class definitions onto
17Unicode property names so that patterns would "dwim" when matches were made against latin-1 or
18unicode strings. This proved to be a mistake, breaking character class negation, causing
19forward compatibility problems (as Unicode keeps updating their property definitions and adding
20new characters), and other problems.
21
22Therefore we have now defined a new set of artificial "unicode" property names which will be
23used to do unicode matching of patterns using POSIX style character classes and perl short-form
24escape character classes like \w and \d.
25
26The key change here is that \d will no longer match every digit in the unicode standard
27(there are thousands) nor will \w match every word character in the standard, instead they
28will match precisely their POSIX or Perl definition.
29
30Those needing to match based on Unicode properties can continue to do so by using the \p{} syntax
31to match whichever property they like, including the new artificial definitions.
32
33B<NOTE:> This is a backwards incompatible no-warning change in behaviour. If you are upgrading
34and you process large volumes of text look for POSIX and Perl style character classes and
35change them to the relevent property name (by removing the word 'Posix' from the current name).
36
37The following table maps the POSIX character class names, the escapes and the old and new
38Unicode property mappings:
39
40 POSIX Esc Class New-Property ! Old-Property
41 ----------------------------------------------+-------------
42 alnum [0-9A-Za-z] IsPosixAlnum ! IsAlnum
43 alpha [A-Za-z] IsPosixAlpha ! IsAlpha
44 ascii [\000-\177] IsASCII = IsASCII
45 blank [\011 ] IsPosixBlank !
46 cntrl [\0-\37\177] IsPosixCntrl ! IsCntrl
47 digit \d [0-9] IsPosixDigit ! IsDigit
48 graph [!-~] IsPosixGraph ! IsGraph
49 lower [a-z] IsPosixLower ! IsLower
50 print [ -~] IsPosixPrint ! IsPrint
51 punct [!-/:-@[-`{-~] IsPosixPunct ! IsPunct
52 space [\11-\15 ] IsPosixSpace ! IsSpace
53 \s [\11\12\14\15 ] IsPerlSpace ! IsSpacePerl
54 upper [A-Z] IsPosixUpper ! IsUpper
55 word \w [0-9A-Z_a-z] IsPerlWord ! IsWord
56 xdigit [0-9A-Fa-f] IsXDigit = IsXDigit
57
58If you wish to build perl with the old mapping you may do so by setting
59
60 #define PERL_LEGACY_UNICODE_CHARCLASS_MAPPINGS 1
61
62in regcomp.h, and then setting
63
64 PERL_TEST_LEGACY_POSIX_CC
65
66to true your enviornment when testing.
67
68
ad1d1c50 69=head2 In @INC, move ARCHLIB and PRIVLIB after the current version's site_perl and vendor_perl.
70
8b8da387 71=head2 Switch statement changes
72
73The handling of complex expressions by the C<given>/C<when> switch
a98ccf1e 74statement has been enhanced. These enhancements are also available in
755.10.1 and subsequent 5.10 releases. There are two new cases where C<when> now
412304fb 76interprets its argument as a boolean, instead of an expression to be used
8b8da387 77in a smart match:
78
79=over 4
80
8b8da387 81=item flip-flop operators
82
98814a2b 83The C<..> and C<...> flip-flop operators are now evaluated in boolean
84context, following their usual semantics; see L<perlop/"Range Operators">.
85
86Note that, as in perl 5.10.0, C<when (1..10)> will not work to test
87whether a given value is an integer between 1 and 10; you should use
88C<when ([1..10])> instead (note the array reference).
89
90However, contrary to 5.10.0, evaluating the flip-flop operators in boolean
91context ensures it can now be useful in a C<when()>, notably for
92implementing bistable conditions, like in:
93
5a00ee6a 94 when (/^=begin/ .. /^=end/) {
95 # do something
96 }
8b8da387 97
98=item defined-or operator
99
100A compound expression involving the defined-or operator, as in
101C<when (expr1 // expr2)>, will be treated as boolean if the first
102expression is boolean. (This just extends the existing rule that applies
103to the regular or operator, as in C<when (expr1 || expr2)>.)
104
105=back
106
98814a2b 107The next section details more changes brought to the semantics to
8b8da387 108the smart match operator, that naturally also modify the behaviour
109of the switch statements where smart matching is implicitly used.
a98ccf1e 110These changers were also made for the 5.10.1 release, and will remain in
111subsequent 5.10 releases.
8b8da387 112
113=head2 Smart match changes
114
115=head3 Changes to type-based dispatch
116
117The smart match operator C<~~> is no longer commutative. The behaviour of
118a smart match now depends primarily on the type of its right hand
5a00ee6a 119argument. Moreover, its semantics have been adjusted for greater
ee18cc6c 120consistency or usefulness in several cases. While the general backwards
121compatibility is maintained, several changes must be noted:
8b8da387 122
123=over 4
124
125=item *
126
127Code references with an empty prototype are no longer treated specially.
128They are passed an argument like the other code references (even if they
129choose to ignore it).
130
131=item *
132
133C<%hash ~~ sub {}> and C<@array ~~ sub {}> now test that the subroutine
9091a618 134returns a true value for each key of the hash (or element of the
8b8da387 135array), instead of passing the whole hash or array as a reference to
136the subroutine.
137
138=item *
139
ee18cc6c 140Due to the commutativity breakage, code references are no longer
141treated specially when appearing on the left of the C<~~> operator,
142but like any vulgar scalar.
143
144=item *
145
8b8da387 146C<undef ~~ %hash> is always false (since C<undef> can't be a key in a
147hash). No implicit conversion to C<""> is done (as was the case in perl
1485.10.0).
149
150=item *
151
152C<$scalar ~~ @array> now always distributes the smart match across the
153elements of the array. It's true if one element in @array verifies
154C<$scalar ~~ $element>. This is a generalization of the old behaviour
155that tested whether the array contained the scalar.
156
157=back
158
159The full dispatch table for the smart match operator is given in
160L<perlsyn/"Smart matching in detail">.
161
162=head3 Smart match and overloading
163
164According to the rule of dispatch based on the rightmost argument type,
165when an object overloading C<~~> appears on the right side of the
166operator, the overload routine will always be called (with a 3rd argument
167set to a true value, see L<overload>.) However, when the object will
168appear on the left, the overload routine will be called only when the
9091a618 169rightmost argument is a simple scalar. This way distributivity of smart match
8b8da387 170across arrays is not broken, as well as the other behaviours with complex
171types (coderefs, hashes, regexes). Thus, writers of overloading routines
ee18cc6c 172for smart match mostly need to worry only with comparing against a scalar,
173and possibly with stringification overloading; the other common cases
174will be automatically handled consistently.
8b8da387 175
176C<~~> will now refuse to work on objects that do not overload it (in order
665f5e98 177to avoid relying on the object's underlying structure). (However, if the
178object overloads the stringification or the numification operators, and
179if overload fallback is active, it will be used instead, as usual.)
8b8da387 180
f71d6157 181=head2 Labels can't be keywords
182
183Labels used as targets for the C<goto>, C<last>, C<next> or C<redo>
184statements cannot be keywords anymore. This restriction will prevent
185potential confusion between the C<goto LABEL> and C<goto EXPR> syntaxes:
186for example, a statement like C<goto print> would jump to a label whose
7a4b5c08 187name would be the return value of C<print()>, (usually 1), instead of a
f71d6157 188label named C<print>. Moreover, the other control flow statements
189would just ignore any keyword passed to them as a label name. Since
190such labels cannot be defined anymore, this kind of error will be
191avoided.
192
5a00ee6a 193=head2 Other incompatible changes
194
195=over 4
196
197=item *
198
199The semantics of C<use feature :5.10*> have changed slightly.
200See L<"Modules and Pragmata"> for more information.
201
202=item *
203
204It is now a run-time error to use the smart match operator C<~~>
205with an object that has no overload defined for it. (This way
206C<~~> will not break encapsulation by matching against the
207object's internal representation as a reference.)
208
209=item *
210
211The version control system used for the development of the perl
212interpreter has been switched from Perforce to git. This is mainly an
213internal issue that only affects people actively working on the perl core;
214but it may have minor external visibility, for example in some of details
215of the output of C<perl -V>. See L<perlrepository> for more information.
216
217=item *
218
219The internal structure of the C<ext/> directory in the perl source has
220been reorganised. In general, a module C<Foo::Bar> whose source was
221stored under F<ext/Foo/Bar/> is now located under F<ext/Foo-Bar/>. Also,
429ee0aa 222nearly all dual-life modules have been moved from F<lib/> to F<ext/>. This
223is purely a source tarball change, and should make no difference to the
224compilation or installation of perl, unless you have a very customised build
225process that explicitly relies on this structure, or which hard-codes the
226C<nonxs_ext> F<Configure> parameter. Specifically, this change does not by
227default alter the location of any files in the final installation.
5a00ee6a 228
229=item *
230
231As part of the C<Test::Harness> 2.x to 3.x upgrade, the experimental
232C<Test::Harness::Straps> module has been removed.
233See L</"Updated Modules"> for more details.
234
235=item *
236
237As part of the C<ExtUtils::MakeMaker> upgrade, the
238C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish> modules
239have been removed from this distribution.
240
241=item *
242
243C<Module::CoreList> no longer contains the C<%:patchlevel> hash.
244
245=item *
246
247This one is actually a change introduced in 5.10.0, but it was missed
248from that release's perldelta, so it is mentioned here instead.
249
250A bugfix related to the handling of the C</m> modifier and C<qr> resulted
251in a change of behaviour between 5.8.x and 5.10.0:
252
253 # matches in 5.8.x, doesn't match in 5.10.0
254 $re = qr/^bar/; "foo\nbar" =~ /$re/m;
255
ad1d1c50 256=item *
257
258C<length undef> now returns undef.
259
7f0da121 260=item *
261
262Unsupported private C API functions are now declared "static" to prevent
263leakage to Perl's public API
264
265=item *
266
267F<miniperl> no longer builds with UTF-8 support in the regexp engine to support the bootstrapping process
268
269This allows a build to complete with PERL_UNICODE set and a UTF-8 locale.
270Without this there's a bootstrapping problem, as miniperl can't load the UTF-8
271components of the regexp engine, because they're not yet built.
272
273=item *
274
275F<miniperl>'s @INC is now restricted to just -I..., the split of $ENV{PERL5LIB}, and "."
276
01ad23f5 277=item *
278
279A space or a newline is now required after a C<"#line XXX"> directive.
280
fd99c0b9 281=item *
282
283Tied filehandles now have an additional method EOF which provides the EOF type
284
285=item *
286
287To better match all other flow control statements, C<foreach> may no longer be used as an attribute.
7f0da121 288
5a00ee6a 289=back
290
7120b314 291=head1 Core Enhancements
292
5a00ee6a 293=head2 Unicode Character Database 5.1.0
294
3141b5e1 295The copy of the Unicode Character Database included in Perl 5.11.0 has
5a00ee6a 296been updated to 5.1.0 from 5.0.0. See
297L<http://www.unicode.org/versions/Unicode5.1.0/#Notable_Changes> for the
298notable changes.
299
300=head2 A proper interface for pluggable Method Resolution Orders
301
3141b5e1 302As of Perl 5.11.0 there is a new interface for plugging and using method
5a00ee6a 303resolution orders other than the default (linear depth first search).
304The C3 method resolution order added in 5.10.0 has been re-implemented as
305a plugin, without changing its Perl-space interface. See L<perlmroapi> for
306more information.
307
ef55af2a 308=head2 The C<overloading> pragma
1839a850 309
310This pragma allows you to lexically disable or enable overloading
311for some or all operations. (Yuval Kogman)
312
71e9c532 313=head2 C<\N> regex escape
314
315A new regex escape has been added, C<\N>. It will match any character that
316is not a newline, independently from the presence or absence of the single
317line match modifier C</s>. (If C<\N> is followed by an opening brace and
318by a letter, perl will still assume that a Unicode character name is
319coming, so compatibility is preserved.) (Rafael Garcia-Suarez)
320
4b3db487 321=head2 Implicit strictures
322
323Using the C<use VERSION> syntax with a version number greater or equal
324to 5.11.0 will also lexically enable strictures just like C<use strict>
325would do (in addition to enabling features.) So, the following:
326
327 use 5.11.0;
328
329will now imply:
330
331 use strict;
332 use feature ':5.11';
333
5ee651a9 334=head2 Parallel tests
335
336The core distribution can now run its regression tests in parallel on
337Unix-like platforms. Instead of running C<make test>, set C<TEST_JOBS> in
338your environment to the number of tests to run in parallel, and run
339C<make test_harness>. On a Bourne-like shell, this can be done as
340
341 TEST_JOBS=3 make test_harness # Run 3 tests in parallel
342
343An environment variable is used, rather than parallel make itself, because
344L<TAP::Harness> needs to be able to schedule individual non-conflicting test
345scripts itself, and there is no standard interface to C<make> utilities to
346interact with their job schedulers.
347
5a00ee6a 348Note that currently some test scripts may fail when run in parallel (most
349notably C<ext/IO/t/io_dir.t>). If necessary run just the failing scripts
350again sequentially and see if the failures go away.
351
044c880b 352=head2 The C<...> operator
353
354A new operator, C<...>, nicknamed the Yada Yada operator, has been added.
355It is intended to mark placeholder code, that is not yet implemented.
356See L<perlop/"Yada Yada Operator">. (chromatic)
357
5a00ee6a 358=head2 DTrace support
359
360Some support for DTrace has been added. See "DTrace support" in F<INSTALL>.
361
362=head2 Support for C<configure_requires> in CPAN module metadata
363
364Both C<CPAN> and C<CPANPLUS> now support the C<configure_requires> keyword
038a5866 365in the F<META.yml> metadata file included in most recent CPAN distributions.
5a00ee6a 366This allows distribution authors to specify configuration prerequisites that
367must be installed before running F<Makefile.PL> or F<Build.PL>.
368
369See the documentation for C<ExtUtils::MakeMaker> or C<Module::Build> for more
370on how to specify C<configure_requires> when creating a distribution for CPAN.
371
ad1d1c50 372=head2 The C<each> function can now operate on arrays
373
374=head2 Perl's core time-related functions are now Y2038 compliand
375
376=head2 The variable C<$,> may now be tied
377
378=head2 // now behaves like || in when clauses
379
7f0da121 380=head2 You can now set C<-W> from the C<PERL5OPT> environment variable
381
382=head2 Add support for Abstract namespace sockets
383
384Abstract namespace sockets are Linux-specific socket type that live in
385AF_UNIX family, slightly abusing it to be able to use arbitrary
386character arrays as addresses: They start with nul byte and are not
387terminated by nul byte, but with the length passed to the socket()
388system call.
389
390
fd99c0b9 391=head2 C<delete local> now allows you to lexically delete a hash entry.
ad1d1c50 392
7120b314 393=head1 Modules and Pragmata
394
7f0da121 395=head2 Dual-lifed modules moved
396
18fd877a 397Dual-lifed modules maintained primarily in the Perl core now live in dist/.
7f0da121 398Dual-lifed modules maintained primarily on CPAN now live in cpan/
399
5a00ee6a 400=head2 New Modules and Pragmata
401
402=over 4
403
404=item C<autodie>
405
406This is a new lexically-scoped alternative for the C<Fatal> module.
407The bundled version is 2.06_01. Note that in this release, using a string
408eval when C<autodie> is in effect can cause the autodie behaviour to leak
409into the surrounding scope. See L<autodie/"BUGS"> for more details.
410
411=item C<Compress::Raw::Bzip2>
412
413This has been added to the core (version 2.020).
414
415=item C<parent>
416
417This pragma establishes an ISA relationship with base classes at compile
418time. It provides the key feature of C<base> without the feature creep.
419
420=item C<Parse::CPAN::Meta>
421
422This has been added to the core (version 1.39).
423
424=back
425
1839a850 426=head2 Pragmata Changes
427
428=over 4
429
430=item C<overloading>
431
432See L</"The C<overloading> pragma"> above.
433
5a00ee6a 434=item C<attributes>
435
436Upgraded from version 0.08 to 0.09.
437
438=item C<attrs>
439
42f099ed 440The C<attrs> pragma has been removed. It had been marked as deprecated since
4415.6.0.
5a00ee6a 442
443=item C<base>
444
445Upgraded from version 2.13 to 2.14. See L<parent> for a replacement.
446
447=item C<bigint>
448
449Upgraded from version 0.22 to 0.23.
450
451=item C<bignum>
452
453Upgraded from version 0.22 to 0.23.
454
455=item C<bigrat>
456
457Upgraded from version 0.22 to 0.23.
458
459=item C<charnames>
460
461Upgraded from version 1.06 to 1.07.
462
463The Unicode F<NameAliases.txt> database file has been added. This has the
464effect of adding some extra C<\N> character names that formerly wouldn't
465have been recognised; for example, C<"\N{LATIN CAPITAL LETTER GHA}">.
466
467=item C<constant>
468
9f808eed 469Upgraded from version 1.13 to 1.19. Some code has been shifted from run time to
470compile time, and the amount of MRO cache flushing has been minimised.
5a00ee6a 471
472=item C<feature>
473
474The meaning of the C<:5.10> and C<:5.10.X> feature bundles has
475changed slightly. The last component, if any (i.e. C<X>) is simply ignored.
476This is predicated on the assumption that new features will not, in
477general, be added to maintenance releases. So C<:5.10> and C<:5.10.X>
478have identical effect. This is a change to the behaviour documented for
4795.10.0.
480
481=item C<fields>
482
483Upgraded from version 2.13 to 2.14 (this was just a version bump; there
484were no functional changes).
485
486=item C<lib>
487
488Upgraded from version 0.5565 to 0.62.
489
490=item C<open>
491
492Upgraded from version 1.06 to 1.07.
493
494=item C<overload>
495
496Upgraded from version 1.06 to 1.07.
497
498=item C<overloading>
499
500See L</"The C<overloading> pragma"> above.
501
f7fa8439 502=item C<mro>
503
504Upgraded from version 1.00 to 1.01. Performance for single inheritance is 40%
505faster - see L</"Performance Enhancements"> below.
506
507C<mro> is now implemented as an XS extension. The documented interface has not
508changed. Code relying on the implementation detail that some C<mro::>
509methods happened to be available at all times gets to "keep both pieces".
510
5a00ee6a 511=item C<version>
512
513Upgraded from version 0.74 to 0.77.
514
1839a850 515=back
516
5a00ee6a 517=head2 Updated Modules
02569b83 518
519=over 4
520
5a00ee6a 521=item C<Archive::Extract>
522
523Upgraded from version 0.24 to 0.34.
524
525=item C<Archive::Tar>
526
527Upgraded from version 1.38 to 1.52.
528
529=item C<Attribute::Handlers>
530
531Upgraded from version 0.79 to 0.85.
532
533=item C<AutoLoader>
534
535Upgraded from version 5.63 to 5.68.
536
537=item C<AutoSplit>
538
539Upgraded from version 1.05 to 1.06.
540
541=item C<B>
542
543Upgraded from version 1.17 to 1.22.
544
545=item C<B::Debug>
546
547Upgraded from version 1.05 to 1.11.
548
549=item C<B::Deparse>
550
551Upgraded from version 0.83 to 0.89.
552
553=item C<B::Lint>
554
555Upgraded from version 1.09 to 1.11.
556
557=item C<B::Xref>
558
559Upgraded from version 1.01 to 1.02.
560
561=item C<Benchmark>
562
563Upgraded from version 1.10 to 1.11.
564
565=item C<Carp>
566
567Upgraded from version 1.08 to 1.11.
568
02569b83 569L<Carp> now includes all the necessary code to function. Previously, it
570used to be a lightweight placeholder that loaded the actual code from
571C<Carp::Heavy> on demand. C<Carp::Heavy> is now a simple, empty module
572kept for backwards compatibility for programs that used to pre-load it.
573
5a00ee6a 574=item C<CGI>
7120b314 575
5a00ee6a 576Upgraded from version 3.29 to 3.43.
577(also includes the "default_value for popup_menu()" fix from 3.45).
7120b314 578
5a00ee6a 579=item C<Compress::Zlib>
7120b314 580
5a00ee6a 581Upgraded from version 2.008 to 2.020.
7120b314 582
5a00ee6a 583=item C<CPAN>
7120b314 584
5a00ee6a 585Upgraded from version 1.9205 to 1.9402. C<CPAN::FTP> has a local fix to
586stop it being too verbose on download failure.
54ad55c5 587
5a00ee6a 588=item C<CPANPLUS>
54ad55c5 589
5a00ee6a 590Upgraded from version 0.84 to 0.88.
54ad55c5 591
5a00ee6a 592=item C<CPANPLUS::Dist::Build>
e2c0f81f 593
5a00ee6a 594Upgraded from version 0.06_02 to 0.36.
e2c0f81f 595
5a00ee6a 596=item C<Cwd>
fc46f0f6 597
5a00ee6a 598Upgraded from version 3.25_01 to 3.30.
fc46f0f6 599
5a00ee6a 600=item C<Data::Dumper>
54ad55c5 601
5a00ee6a 602Upgraded from version 2.121_14 to 2.124.
7120b314 603
5a00ee6a 604=item C<DB>
7120b314 605
5a00ee6a 606Upgraded from version 1.01 to 1.02.
607
608=item C<DB_File>
609
610Upgraded from version 1.816_1 to 1.820.
611
612=item C<Devel::PPPort>
613
614Upgraded from version 3.13 to 3.19.
615
616=item C<Digest::MD5>
617
618Upgraded from version 2.36_01 to 2.39.
619
620=item C<Digest::SHA>
621
622Upgraded from version 5.45 to 5.47.
623
624=item C<DirHandle>
625
626Upgraded from version 1.01 to 1.03.
627
628=item C<Dumpvalue>
629
630Upgraded from version 1.12 to 1.13.
631
632=item C<DynaLoader>
633
634Upgraded from version 1.08 to 1.10.
635
636=item C<Encode>
637
638Upgraded from version 2.23 to 2.35.
639
640=item C<Errno>
641
642Upgraded from version 1.10 to 1.11.
643
644=item C<Exporter>
645
646Upgraded from version 5.62 to 5.63.
647
648=item C<ExtUtils::CBuilder>
649
650Upgraded from version 0.21 to 0.2602.
651
652=item C<ExtUtils::Command>
653
654Upgraded from version 1.13 to 1.16.
655
656=item C<ExtUtils::Constant>
657
658Upgraded from 0.20 to 0.22. (Note that neither of these versions are
659available on CPAN.)
660
661=item C<ExtUtils::Embed>
662
663Upgraded from version 1.27 to 1.28.
664
665=item C<ExtUtils::Install>
666
667Upgraded from version 1.44 to 1.54.
668
669=item C<ExtUtils::MakeMaker>
670
671Upgraded from version 6.42 to 6.55_02.
672
673Note that C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish>
674have been removed from this distribution.
675
676=item C<ExtUtils::Manifest>
677
678Upgraded from version 1.51_01 to 1.56.
679
680=item C<ExtUtils::ParseXS>
681
682Upgraded from version 2.18_02 to 2.2002.
683
684=item C<Fatal>
685
686Upgraded from version 1.05 to 2.06_01. See also the new pragma C<autodie>.
687
688=item C<File::Basename>
689
690Upgraded from version 2.76 to 2.77.
691
692=item C<File::Compare>
693
694Upgraded from version 1.1005 to 1.1006.
695
696=item C<File::Copy>
697
0de885a9 698Upgraded from version 2.11 to 2.16.
5a00ee6a 699
ad1d1c50 700File::Copy now always return 0 (not "") on failure.
701
0de885a9 702FIXME - describe C<cp>
703
5a00ee6a 704=item C<File::Fetch>
705
706Upgraded from version 0.14 to 0.20.
707
708=item C<File::Find>
709
710Upgraded from version 1.12 to 1.14.
711
712=item C<File::Path>
713
714Upgraded from version 2.04 to 2.07_03.
715
716=item C<File::Spec>
717
718Upgraded from version 3.2501 to 3.30.
719
720=item C<File::stat>
721
722Upgraded from version 1.00 to 1.01.
723
ad1d1c50 724Added -X overloading, -M, -C and -A.
725
5a00ee6a 726=item C<File::Temp>
727
728Upgraded from version 0.18 to 0.22.
729
730=item C<FileCache>
731
732Upgraded from version 1.07 to 1.08.
733
734=item C<FileHandle>
735
736Upgraded from version 2.01 to 2.02.
737
738=item C<Filter::Simple>
739
740Upgraded from version 0.82 to 0.84.
741
742=item C<Filter::Util::Call>
743
744Upgraded from version 1.07 to 1.08.
745
746=item C<FindBin>
747
748Upgraded from version 1.49 to 1.50.
749
750=item C<GDBM_File>
751
752Upgraded from version 1.08 to 1.09.
753
754=item C<Getopt::Long>
755
756Upgraded from version 2.37 to 2.38.
757
758=item C<Hash::Util::FieldHash>
759
760Upgraded from version 1.03 to 1.04. This fixes a memory leak.
761
762=item C<I18N::Collate>
763
764Upgraded from version 1.00 to 1.01.
765
766=item C<IO>
767
768Upgraded from version 1.23_01 to 1.25.
769
770This makes non-blocking mode work on Windows in C<IO::Socket::INET>
771[CPAN #43573].
772
773=item C<IO::Compress::*>
774
775Upgraded from version 2.008 to 2.020.
776
777=item C<IO::Dir>
778
779Upgraded from version 1.06 to 1.07.
780
781=item C<IO::Handle>
782
783Upgraded from version 1.27 to 1.28.
784
785=item C<IO::Socket>
786
787Upgraded from version 1.30_01 to 1.31.
788
789=item C<IO::Zlib>
790
791Upgraded from version 1.07 to 1.09.
792
793=item C<IPC::Cmd>
794
795Upgraded from version 0.40_1 to 0.46.
796
797=item C<IPC::Open3>
798
799Upgraded from version 1.02 to 1.04.
800
801=item C<IPC::SysV>
802
803Upgraded from version 1.05 to 2.01.
804
805=item C<lib>
806
807Upgraded from version 0.5565 to 0.62.
808
809=item C<List::Util>
810
811Upgraded from version 1.19 to 1.21.
812
813=item C<Locale::MakeText>
814
815Upgraded from version 1.12 to 1.13.
816
817=item C<Log::Message>
818
819Upgraded from version 0.01 to 0.02.
820
821=item C<Math::BigFloat>
822
823Upgraded from version 1.59 to 1.60.
824
825=item C<Math::BigInt>
826
827Upgraded from version 1.88 to 1.89.
828
829=item C<Math::BigInt::FastCalc>
830
831Upgraded from version 0.16 to 0.19.
832
833=item C<Math::BigRat>
834
835Upgraded from version 0.21 to 0.22.
836
837=item C<Math::Complex>
838
839Upgraded from version 1.37 to 1.56.
840
841=item C<Math::Trig>
842
843Upgraded from version 1.04 to 1.20.
844
845=item C<Memoize>
846
847Upgraded from version 1.01_02 to 1.01_03 (just a minor documentation
848change).
849
850=item C<Module::Build>
851
852Upgraded from version 0.2808_01 to 0.34_02.
853
854=item C<Module::CoreList>
855
856Upgraded from version 2.13 to 2.18. This release no longer contains the
857C<%Module::CoreList::patchlevel> hash.
858
859=item C<Module::Load>
860
861Upgraded from version 0.12 to 0.16.
862
863=item C<Module::Load::Conditional>
864
865Upgraded from version 0.22 to 0.30.
866
867=item C<Module::Loaded>
868
869Upgraded from version 0.01 to 0.02.
870
871=item C<Module::Pluggable>
872
873Upgraded from version 3.6 to 3.9.
874
875=item C<NDBM_File>
876
877Upgraded from version 1.07 to 1.08.
878
879=item C<Net::Ping>
880
881Upgraded from version 2.33 to 2.36.
882
883=item C<NEXT>
884
885Upgraded from version 0.60_01 to 0.64.
886
887=item C<Object::Accessor>
888
889Upgraded from version 0.32 to 0.34.
890
891=item C<OS2::REXX>
892
893Upgraded from version 1.03 to 1.04.
894
895=item C<Package::Constants>
896
897Upgraded from version 0.01 to 0.02.
898
899=item C<PerlIO>
900
901Upgraded from version 1.04 to 1.06.
902
903=item C<PerlIO::via>
904
905Upgraded from version 0.04 to 0.07.
906
907=item C<Pod::Man>
908
909Upgraded from version 2.16 to 2.22.
910
911=item C<Pod::Parser>
912
913Upgraded from version 1.35 to 1.37.
914
0f97ff05 915=item C<Pod::Plainer>
916
917Upgraded from version 0.01 to 1.00.
918
919There are no code changes - the version bump is because C<Pod::Plainer> has
920been released to CPAN as a stand alone distribution, and will be removed from
921the core distribution in 5.14.
922
ad1d1c50 923=item Pod::Perldoc
924
925Upgrade from version 3.14_02 to 3.15.
926
5a00ee6a 927=item C<Pod::Simple>
928
929Upgraded from version 3.05 to 3.07.
930
931=item C<Pod::Text>
932
933Upgraded from version 3.08 to 3.13.
934
935=item C<POSIX>
936
937Upgraded from version 1.13 to 1.17.
938
939=item C<Safe>
940
941Upgraded from 2.12 to 2.18.
942
943=item C<Scalar::Util>
944
945Upgraded from version 1.19 to 1.21.
946
947=item C<SelectSaver>
948
949Upgraded from 1.01 to 1.02.
950
951=item C<SelfLoader>
952
953Upgraded from 1.11 to 1.17.
954
955=item C<Socket>
956
61f1d76c 957Upgraded from 1.80 to 1.84.
958
959As of 1.84, C<Socket> can now handle abstract namespace sockets on Linux.
960(see unix(7)).
5a00ee6a 961
962=item C<Storable>
963
964Upgraded from 2.18 to 2.20.
965
966=item C<Switch>
967
968Upgraded from version 2.13 to 2.14. Please see L</Deprecations>.
969
970=item C<Symbol>
971
972Upgraded from version 1.06 to 1.07.
973
974=item C<Sys::Syslog>
975
976Upgraded from version 0.22 to 0.27.
977
978=item C<Term::ANSIColor>
979
ad1d1c50 980Upgraded from version 1.12 to 2.01.
5a00ee6a 981
982=item C<Term::ReadLine>
983
984Upgraded from version 1.03 to 1.04.
985
986=item C<Term::UI>
987
988Upgraded from version 0.18 to 0.20.
989
990=item C<Test::Harness>
991
992Upgraded from version 2.64 to 3.17.
993
994Note that one side-effect of the 2.x to 3.x upgrade is that the
995experimental C<Test::Harness::Straps> module (and its supporting
996C<Assert>, C<Iterator>, C<Point> and C<Results> modules) have been
997removed. If you still need this, then they are available in the
998(unmaintained) C<Test-Harness-Straps> distribution on CPAN.
999
1000=item C<Test::Simple>
1001
1002Upgraded from version 0.72 to 0.92.
1003
1004=item C<Text::ParseWords>
1005
1006Upgraded from version 3.26 to 3.27.
1007
1008=item C<Text::Tabs>
1009
1010Upgraded from version 2007.1117 to 2009.0305.
1011
1012=item C<Text::Wrap>
1013
1014Upgraded from version 2006.1117 to 2009.0305.
1015
1016=item C<Thread::Queue>
1017
1018Upgraded from version 2.00 to 2.11.
1019
1020=item C<Thread::Semaphore>
1021
1022Upgraded from version 2.01 to 2.09.
1023
1024=item C<threads>
1025
ad1d1c50 1026Upgraded from version 1.67 to 1.73.
5a00ee6a 1027
1028=item C<threads::shared>
1029
1030Upgraded from version 1.14 to 1.29.
1031
1032=item C<Tie::RefHash>
1033
1034Upgraded from version 1.37 to 1.38.
1035
1036=item C<Tie::StdHandle>
1037
1038This has documentation changes, and has been assigned a version for the
1039first time: version 4.2.
1040
1041=item C<Time::HiRes>
1042
1043Upgraded from version 1.9711 to 1.9719.
1044
1045=item C<Time::Local>
1046
1047Upgraded from version 1.18 to 1.1901.
1048
1049=item C<Time::Piece>
1050
1051Upgraded from version 1.12 to 1.15.
1052
1053=item C<Unicode::Normalize>
1054
1055Upgraded from version 1.02 to 1.03.
1056
1057=item C<Unicode::UCD>
1058
1059Upgraded from version 0.25 to 0.27.
1060
1061C<charinfo()> now works on Unified CJK code points added to later versions
1062of Unicode.
1063
1064C<casefold()> has new fields returned to provide both a simpler interface
1065and previously missing information. The old fields are retained for
1066backwards compatibility. Information about Turkic-specific code points is
1067now returned.
1068
1069The documentation has been corrected and expanded.
1070
1071=item C<UNIVERSAL>
1072
1073Upgraded from version 1.04 to 1.05.
1074
eeab323f 1075C<< UNIVERSAL->import() >> is now deprecated.
ad1d1c50 1076
5a00ee6a 1077=item C<Win32>
1078
1079Upgraded from version 0.34 to 0.39.
1080
1081=item C<Win32API::File>
1082
1083Upgraded from version 0.1001_01 to 0.1101.
1084
1085=item C<XSLoader>
1086
1087Upgraded from version 0.08 to 0.10.
1088
d7ea0f56 1089=item Upgrade to Class::ISA 0.34
1090
1091=item Upgrade to Attribute::Handlers 0.87
1092
1093=item Upgrade to AutoLoader 5.70
1094
1095=item Upgrade to IO::Zlib 1.10
1096
1097=item Update parent to CPAN version 0.223
1098
1099=item Update Log::Message::Simple to CPAN version 0.06
1100
1101=item Updated Math::BigRat to CPAN version 0.24
1102
1103=item Update Archive::Tar to CPAN version 1.54
1104
1105=item Update IPC::Cmd to CPAN version 0.50
1106
1107=item Updated CPANPLUS::Dist::Build to CPAN version 0.40
1108
1109=item Updated Module::Loaded to CPAN version 0.06
1110
1111=item Upgrade Term::ANSIColor to 2.02
1112
1113=item Update Text::Balanced to 2.02
1114
1115=item Update Module::Build to 0.35
1116
1117=item constant has been upgraded to 1.19.
1118
1119=item upgrade CGI from 3.43 to 3.45
1120
1121=item bump Safe version to 2.18
1122
1123=item Upgrade to threads::shared 1.31
1124
1125=item Update threads to 1.74
1126
1127=item autodie 2.06_01
1128
1129=item Synchronize with CPAN's Attribute::Handlers 0.86
1130
1131=item Synchronize AutoLoader with CPAN's 5.69
1132
1133=item ExtUtils::MakeMaker 6.55_02
1134
1135=item Final release of version-0.77 for inclusion in 5.10.1
1136
fd99c0b9 1137=item Upgrade to Encode 2.37
1138
1139=item Upgrade to Class::ISA 0.36 (Fixes installation directories only)
1140
1141=item Upgrade to PathTools 3.30_02 (with only core reorganization fixes)
1142
5a00ee6a 1143=back
1144
1145=head1 Utility Changes
1146
1147=over 4
1148
1149=item F<h2ph>
1150
1151Now looks in C<include-fixed> too, which is a recent addition to gcc's
1152search path.
1153
1154=item F<h2xs>
1155
1156No longer incorrectly treats enum values like macros (Daniel Burr).
1157
1158Now handles C++ style constants (C<//>) properly in enums. (A patch from
1159Rainer Weikusat was used; Daniel Burr also proposed a similar fix).
1160
1161=item F<perl5db.pl>
1162
1163C<LVALUE> subroutines now work under the debugger.
1164
1165The debugger now correctly handles proxy constant subroutines, and
1166subroutine stubs.
1167
ad1d1c50 1168=item F<perlbug>
1169
038a5866 1170F<perlbug> now uses C<%Module::CoreList::bug_tracker> to print out upstream bug
76e3c4a8 1171tracker URLs.
ad1d1c50 1172
1173Where the user names a module that their bug report is about, and we know the
1174URL for its upstream bug tracker, provide a message to the user explaining
1175that the core copies the CPAN version directly, and provide the URL for
1176reporting the bug directly to upstream.
1177
5a00ee6a 1178=item F<perlthanks>
1179
3141b5e1 1180Perl 5.11.0 added a new utility F<perlthanks>, which is a variant of
5a00ee6a 1181F<perlbug>, but for sending non-bug-reports to the authors and maintainers
1182of Perl. Getting nothing but bug reports can become a bit demoralising:
1183we'll see if this changes things.
1184
1185=back
1186
1187=head1 New Documentation
1188
1189=over 4
1190
1191=item L<perlhaiku>
1192
1193This contains instructions on how to build perl for the Haiku platform.
1194
1195=item L<perlmroapi>
1196
1197This describes the new interface for pluggable Method Resolution Orders.
1198
1199=item L<perlperf>
1200
1201This document, by Richard Foley, provides an introduction to the use of
1202performance and optimization techniques which can be used with particular
1203reference to perl programs.
1204
1205=item L<perlrepository>
1206
1207This describes how to access the perl source using the I<git> version
1208control system.
1209
1210=item L<perlthanks>
1211
1212This describes the new F<perlthanks> utility.
1213
1214=back
1215
1216=head1 Changes to Existing Documentation
1217
76e3c4a8 1218The various large F<Changes*> files (which listed every change made to perl
5a00ee6a 1219over the last 18 years) have been removed, and replaced by a small file,
76e3c4a8 1220also called F<Changes>, which just explains how that same information may
5a00ee6a 1221be extracted from the git version control system.
1222
1223The file F<Porting/patching.pod> has been deleted, as it mainly described
1224interacting with the old Perforce-based repository, which is now obsolete.
1225Information still relevant has been moved to L<perlrepository>.
1226
1227L<perlapi>, L<perlintern>, L<perlmodlib> and L<perltoc> are now all
1228generated at build time, rather than being shipped as part of the release.
1229
ad1d1c50 1230=head2 Documented -X overloading.
1231
7a4b5c08 1232=head2 Documented that C<when()> treats specially most of the filetest operators
ad1d1c50 1233
ad1d1c50 1234=head2 Documented when as a syntax modifier
1235
1236=head2 Eliminated "Old Perl threads tutorial", which describes 5005 threads.
1237
1238pod/perlthrtut.pod is the same material reworked for ithreads.
1239
ad1d1c50 1240=head2 Correct previous documentation: v-strings are not deprecated
1241
1242With version objects, we need them to use MODULE VERSION syntax. This
1243patch removes the deprecation note.
1244
7f0da121 1245=head2 Added security contact information to L<perlsec>
1246
5a00ee6a 1247=head1 Performance Enhancements
1248
1249=over 4
1250
1251=item *
1252
1253A new internal cache means that C<isa()> will often be faster.
1254
1255=item *
1256
6f54462f 1257The implementation of C<C3> Method Resolution Order has been optimised -
1258linearisation for classes with single inheritance is 40% faster. Performance
1259for multiple inheritance is unchanged.
1260
1261=item *
1262
5a00ee6a 1263Under C<use locale>, the locale-relevant information is now cached on
1264read-only values, such as the list returned by C<keys %hash>. This makes
1265operations such as C<sort keys %hash> in the scope of C<use locale> much
1266faster.
1267
1268=item *
1269
1270Empty C<DESTROY> methods are no longer called.
1271
ad1d1c50 1272=item *
1273
7a4b5c08 1274Faster C<Perl_sv_utf8_upgrade()>
ad1d1c50 1275
1276=item *
1277
7a4b5c08 1278Speed up C<keys> on empty hash
ad1d1c50 1279
5a00ee6a 1280=back
1281
1282=head1 Installation and Configuration Improvements
1283
1284=head2 F<ext/> reorganisation
1285
1286The layout of directories in F<ext> has been revised. Specifically, all
1287extensions are now flat, and at the top level, with C</> in pathnames
1288replaced by C<->, so that F<ext/Data/Dumper/> is now F<ext/Data-Dumper/>,
1289etc. The names of the extensions as specified to F<Configure>, and as
1290reported by C<%Config::Config> under the keys C<dynamic_ext>,
1291C<known_extensions>, C<nonxs_ext> and C<static_ext> have not changed, and
1292still use C</>. Hence this change will not have any affect once perl is
429ee0aa 1293installed. C<Safe> has been split out from being part of C<Opcode>, and
1294C<mro> is now an extension in its own right.
1295
1296Nearly all dual-life modules have been moved from F<lib> to F<ext>, and will
1297now appear as known C<nonxs_ext>. This will made no difference to the
1298structure of an installed perl, nor will the modules installed differ,
1299unless you run F<Configure> with options to specify an exact list of
1300extensions to build. In this case, you will rapidly become aware that you
1301need to add to your list, because various modules needed to complete the
1302build, such as C<ExtUtils::ParseXS>, have now become extensions, and
1303without them the build will fail well before it attempts to run the
1304regression tests.
5a00ee6a 1305
1306=head2 Configuration improvements
1307
1308If C<vendorlib> and C<vendorarch> are the same, then they are only added to
1309C<@INC> once.
1310
1311C<$Config{usedevel}> and the C-level C<PERL_USE_DEVEL> are now defined if
1312perl is built with C<-Dusedevel>.
1313
1314F<Configure> will enable use of C<-fstack-protector>, to provide protection
1315against stack-smashing attacks, if the compiler supports it.
1316
1317F<Configure> will now determine the correct prototypes for re-entrant
1318functions, and for C<gconvert>, if you are using a C++ compiler rather
1319than a C compiler.
1320
1321On Unix, if you build from a tree containing a git repository, the
1322configuration process will note the commit hash you have checked out, for
1323display in the output of C<perl -v> and C<perl -V>. Unpushed local commits
1324are automatically added to the list of local patches displayed by
1325C<perl -V>.
1326
1327=head2 Compilation improvements
1328
1329As part of the flattening of F<ext>, all extensions on all platforms are
1330built by F<make_ext.pl>. This replaces the Unix-specific
1331F<ext/util/make_ext>, VMS-specific F<make_ext.com> and Win32-specific
1332F<win32/buildext.pl>.
1333
1334=head2 Platform Specific Changes
1335
1336=over 4
1337
1338=item AIX
1339
7a4b5c08 1340Removed F<libbsd> for AIX 5L and 6.1. Only C<flock()> was used from F<libbsd>.
5a00ee6a 1341
1342Removed F<libgdbm> for AIX 5L and 6.1. The F<libgdbm> is delivered as an
1343optional package with the AIX Toolbox. Unfortunately the 64 bit version
1344is broken.
1345
1346Hints changes mean that AIX 4.2 should work again.
1347
1348=item Cygwin
1349
1350On Cygwin we now strip the last number from the DLL. This has been the
1351behaviour in the cygwin.com build for years. The hints files have been
1352updated.
1353
81afb674 1354=item DomainOS
1355
1356Support for Apollo DomainOS was removed in Perl 5.11.0
1357
5a00ee6a 1358=item FreeBSD
1359
1360The hints files now identify the correct threading libraries on FreeBSD 7
1361and later.
1362
1363=item Irix
1364
1365We now work around a bizarre preprocessor bug in the Irix 6.5 compiler:
1366C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't.
1367
1368=item Haiku
1369
1370Patches from the Haiku maintainers have been merged in. Perl should now
1371build on Haiku.
1372
81afb674 1373=item MiNT
1374
1375Support for Atari MiNT was removed in Perl 5.11.0.
1376
5a00ee6a 1377=item MirOS BSD
1378
1379Perl should now build on MirOS BSD.
1380
1381=item NetBSD
1382
1383Hints now supports versions 5.*.
1384
1385=item Stratus VOS
1386
1387Various changes from Stratus have been merged in.
1388
1389=item Symbian
1390
1391There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
1392
1393=item Win32
1394
1395Improved message window handling means that C<alarm> and C<kill> messages
1396will no longer be dropped under race conditions.
1397
1398=item VMS
1399
1400Reads from the in-memory temporary files of C<PerlIO::scalar> used to fail
1401if C<$/> was set to a numeric reference (to indicate record-style reads).
1402This is now fixed.
1403
1404VMS now supports C<getgrgid>.
1405
1406Many improvements and cleanups have been made to the VMS file name handling
1407and conversion code.
1408
1409Enabling the C<PERL_VMS_POSIX_EXIT> logical name now encodes a POSIX exit
1410status in a VMS condition value for better interaction with GNV's bash
1411shell and other utilities that depend on POSIX exit values. See
1412L<perlvms/"$?"> for details.
1413
76e3c4a8 1414C<File::Copy> now detects Unix compatibility mode on VMS.
ad1d1c50 1415
5a00ee6a 1416=back
1417
1418=head1 Selected Bug Fixes
1419
1420=over 4
1421
038a5866 1422=item *
5a00ee6a 1423
ce979e27 1424C<-I> on shebang line now adds directories in front of @INC
5a00ee6a 1425as documented, and as does C<-I> when specified on the command-line.
5a00ee6a 1426
76e3c4a8 1427=item *
5a00ee6a 1428
76e3c4a8 1429C<kill> is now fatal when called on non-numeric process identifiers.
5a00ee6a 1430Previously, an 'undef' process identifier would be interpreted as a request to
1431kill process "0", which would terminate the current process group on POSIX
1432systems. Since process identifiers are always integers, killing a non-numeric
1433process is now fatal.
1434
1435=item *
1436
14375.10.0 inadvertently disabled an optimisation, which caused a measurable
1438performance drop in list assignment, such as is often used to assign
1439function parameters from C<@_>. The optimisation has been re-instated, and
1440the performance regression fixed.
1441
1442=item *
1443
1444Fixed memory leak on C<while (1) { map 1, 1 }> [RT #53038].
1445
1446=item *
1447
1448Some potential coredumps in PerlIO fixed [RT #57322,54828].
1449
1450=item *
1451
1452The debugger now works with lvalue subroutines.
1453
1454=item *
1455
1456The debugger's C<m> command was broken on modules that defined constants
1457[RT #61222].
1458
1459=item *
1460
7a4b5c08 1461C<crypt> and string complement could return tainted values for untainted
5a00ee6a 1462arguments [RT #59998].
1463
1464=item *
1465
038a5866 1466The C<-i>I<.suffix> command-line switch now recreates the file using
5a00ee6a 1467restricted permissions, before changing its mode to match the original
1468file. This eliminates a potential race condition [RT #60904].
1469
1470=item *
1471
1472On some UNIX systems, the value in C<$?> would not have the top bit set
1473(C<$? & 128>) even if the child core dumped.
1474
1475=item *
1476
038a5866 1477Under some circumstances, C<$^R> could incorrectly become undefined
5a00ee6a 1478[RT #57042].
1479
1480=item *
1481
a048364f 1482In the XS API, various hash functions, when passed a pre-computed hash where
1483the key is UTF-8, might result in an incorrect lookup.
5a00ee6a 1484
1485=item *
1486
a048364f 1487XS code including F<XSUB.h> before F<perl.h> gave a compile-time error
5a00ee6a 1488[RT #57176].
1489
1490=item *
1491
1492C<< $object->isa('Foo') >> would report false if the package C<Foo> didn't
1493exist, even if the object's C<@ISA> contained C<Foo>.
1494
1495=item *
1496
1497Various bugs in the new-to 5.10.0 mro code, triggered by manipulating
1498C<@ISA>, have been found and fixed.
1499
1500=item *
1501
1502Bitwise operations on references could crash the interpreter, e.g.
1503C<$x=\$y; $x |= "foo"> [RT #54956].
1504
1505=item *
1506
1507Patterns including alternation might be sensitive to the internal UTF-8
1508representation, e.g.
1509
1510 my $byte = chr(192);
1511 my $utf8 = chr(192); utf8::upgrade($utf8);
1512 $utf8 =~ /$byte|X}/i; # failed in 5.10.0
1513
1514=item *
1515
1516Within UTF8-encoded Perl source files (i.e. where C<use utf8> is in
1517effect), double-quoted literal strings could be corrupted where a C<\xNN>,
1518C<\0NNN> or C<\N{}> is followed by a literal character with ordinal value
1519greater than 255 [RT #59908].
1520
1521=item *
1522
1523C<B::Deparse> failed to correctly deparse various constructs:
1524C<readpipe STRING> [RT #62428], C<CORE::require(STRING)> [RT #62488],
1525C<sub foo(_)> [RT #62484].
1526
1527=item *
1528
7a4b5c08 1529Using C<setpgrp> with no arguments could corrupt the perl stack.
5a00ee6a 1530
1531=item *
1532
1533The block form of C<eval> is now specifically trappable by C<Safe> and
1534C<ops>. Previously it was erroneously treated like string C<eval>.
1535
1536=item *
1537
1538In 5.10.0, the two characters C<[~> were sometimes parsed as the smart
1539match operator (C<~~>) [RT #63854].
1540
1541=item *
1542
1543In 5.10.0, the C<*> quantifier in patterns was sometimes treated as
1544C<{0,32767}> [RT #60034, #60464]. For example, this match would fail:
1545
1546 ("ab" x 32768) =~ /^(ab)*$/
1547
1548=item *
1549
1550C<shmget> was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
1551
1552=item *
1553
1554Using C<next> or C<last> to exit a C<given> block no longer produces a
1555spurious warning like the following:
1556
1557 Exiting given via last at foo.pl line 123
1558
1559=item *
1560
1561On Windows, C<'.\foo'> and C<'..\foo'> were treated differently than
1562C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492].
1563
1564=item *
1565
1566Assigning a format to a glob could corrupt the format; e.g.:
1567
1568 *bar=*foo{FORMAT}; # foo format now bad
1569
1570=item *
1571
1572Attempting to coerce a typeglob to a string or number could cause an
1573assertion failure. The correct error message is now generated,
1574C<Can't coerce GLOB to I<$type>>.
1575
1576=item *
1577
1578Under C<use filetest 'access'>, C<-x> was using the wrong access mode. This
1579has been fixed [RT #49003].
1580
1581=item *
1582
1583C<length> on a tied scalar that returned a Unicode value would not be
1584correct the first time. This has been fixed.
1585
1586=item *
1587
1588Using an array C<tie> inside in array C<tie> could SEGV. This has been
1589fixed. [RT #51636]
1590
1591=item *
1592
1593A race condition inside C<PerlIOStdio_close()> has been identified and
1594fixed. This used to cause various threading issues, including SEGVs.
1595
1596=item *
1597
1598In C<unpack>, the use of C<()> groups in scalar context was internally
1599placing a list on the interpreter's stack, which manifested in various
1600ways, including SEGVs. This is now fixed [RT #50256].
1601
1602=item *
1603
1604Magic was called twice in C<substr>, C<\&$x>, C<tie $x, $m> and C<chop>.
1605These have all been fixed.
1606
1607=item *
1608
1609A 5.10.0 optimisation to clear the temporary stack within the implicit
1610loop of C<s///ge> has been reverted, as it turned out to be the cause of
1611obscure bugs in seemingly unrelated parts of the interpreter [commit
1612ef0d4e17921ee3de].
1613
1614=item *
1615
1616The line numbers for warnings inside C<elsif> are now correct.
1617
1618=item *
1619
1620The C<..> operator now works correctly with ranges whose ends are at or
1621close to the values of the smallest and largest integers.
1622
1623=item *
1624
1625C<binmode STDIN, ':raw'> could lead to segmentation faults on some platforms.
1626This has been fixed [RT #54828].
1627
1628=item *
1629
1630An off-by-one error meant that C<index $str, ...> was effectively being
1631executed as C<index "$str\0", ...>. This has been fixed [RT #53746].
1632
1633=item *
1634
1635Various leaks associated with named captures in regexes have been fixed
1636[RT #57024].
1637
1638=item *
1639
1640A weak reference to a hash would leak. This was affecting C<DBI>
1641[RT #56908].
1642
1643=item *
1644
1645Using (?|) in a regex could cause a segfault [RT #59734].
1646
1647=item *
1648
1649Use of a UTF-8 C<tr//> within a closure could cause a segfault [RT #61520].
1650
1651=item *
1652
7a4b5c08 1653Calling C<Perl_sv_chop()> or otherwise upgrading an SV could result in an
5a00ee6a 1654unaligned 64-bit access on the SPARC architecture [RT #60574].
1655
1656=item *
1657
1658In the 5.10.0 release, C<inc_version_list> would incorrectly list
1659C<5.10.*> after C<5.8.*>; this affected the C<@INC> search order
1660[RT #67628].
1661
1662=item *
1663
1664In 5.10.0, C<pack "a*", $tainted_value> returned a non-tainted value
1665[RT #52552].
1666
1667=item *
1668
1669In 5.10.0, C<printf> and C<sprintf> could produce the fatal error
1670C<panic: utf8_mg_pos_cache_update> when printing UTF-8 strings
1671[RT #62666].
1672
1673=item *
1674
1675In the 5.10.0 release, a dynamically created C<AUTOLOAD> method might be
1676missed (method cache issue) [RT #60220,60232].
1677
1678=item *
1679
1680In the 5.10.0 release, a combination of C<use feature> and C<//ee> could
1681cause a memory leak [RT #63110].
1682
1683=item *
1684
1685C<-C> on the shebang (C<#!>) line is once more permitted if it is also
1686specified on the command line. C<-C> on the shebang line used to be a
1687silent no-op I<if> it was not also on the command line, so perl 5.10.0
1688disallowed it, which broke some scripts. Now perl checks whether it is
1689also on the command line and only dies if it is not [RT #67880].
1690
1691=item *
1692
1693In 5.10.0, certain types of re-entrant regular expression could crash,
1694or cause the following assertion failure [RT #60508]:
1695
1696 Assertion rx->sublen >= (s - rx->subbeg) + i failed
1697
7f0da121 1698=item *
1699
1700Previously missing files from Unicode 5.1 Character Database are now included.
1701
01ad23f5 1702=item *
1703
1704C<TMPDIR> is now honored when opening an anonymous temporary file
1705
5a00ee6a 1706=back
1707
1708=head1 New or Changed Diagnostics
1709
1710=over 4
1711
1712=item C<panic: sv_chop %s>
1713
1714This new fatal error occurs when the C routine C<Perl_sv_chop()> was
1715passed a position that is not within the scalar's string buffer. This
1716could be caused by buggy XS code, and at this point recovery is not
1717possible.
1718
1719=item C<Can't locate package %s for the parents of %s>
1720
1721This warning has been removed. In general, it only got produced in
1722conjunction with other warnings, and removing it allowed an ISA lookup
1723optimisation to be added.
1724
1725=item C<v-string in use/require is non-portable>
1726
1727This warning has been removed.
1728
1729=item C<Deep recursion on subroutine "%s">
1730
1731It is now possible to change the depth threshold for this warning from the
1732default of 100, by recompiling the F<perl> binary, setting the C
1733pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value.
1734
1735=back
1736
1737=head1 Changed Internals
1738
1739=over 4
1740
1741=item *
1742
1743The J.R.R. Tolkien quotes at the head of C source file have been checked and
1744proper citations added, thanks to a patch from Tom Christiansen.
1745
1746=item *
1747
7a4b5c08 1748C<Perl_vcroak()> now accepts a null first argument. In addition, a full audit
5a00ee6a 1749was made of the "not NULL" compiler annotations, and those for several
1750other internal functions were corrected.
1751
1752=item *
1753
1754New macros C<dSAVEDERRNO>, C<dSAVE_ERRNO>, C<SAVE_ERRNO>, C<RESTORE_ERRNO>
1755have been added to formalise the temporary saving of the C<errno>
1756variable.
1757
1758=item *
1759
1760The function C<Perl_sv_insert_flags> has been added to augment
1761C<Perl_sv_insert>.
1762
1763=item *
1764
1765The function C<Perl_newSV_type(type)> has been added, equivalent to
1766C<Perl_newSV()> followed by C<Perl_sv_upgrade(type)>.
1767
1768=item *
1769
1770The function C<Perl_newSVpvn_flags()> has been added, equivalent to
1771C<Perl_newSVpvn()> and then performing the action relevant to the flag.
1772
1773Two flag bits are currently supported.
1774
1775=over 4
1776
1777=item C<SVf_UTF8>
1778
1779This will call C<SvUTF8_on()> for you. (Note that this does not convert an
1780sequence of ISO 8859-1 characters to UTF-8). A wrapper, C<newSVpvn_utf8()>
1781is available for this.
1782
1783=item C<SVs_TEMP>
1784
7a4b5c08 1785Call C<Perl_sv_2mortal()> on the new SV.
5a00ee6a 1786
1787=back
1788
1789There is also a wrapper that takes constant strings, C<newSVpvs_flags()>.
1790
1791=item *
1792
1793The function C<Perl_croak_xs_usage> has been added as a wrapper to
1794C<Perl_croak>.
1795
1796=item *
1797
1798The functions C<PerlIO_find_layer> and C<PerlIO_list_alloc> are now
1799exported.
1800
1801=item *
1802
1803C<PL_na> has been exterminated from the core code, replaced by local STRLEN
1804temporaries, or C<*_nolen()> calls. Either approach is faster than C<PL_na>,
1805which is a pointer deference into the interpreter structure under ithreads,
1806and a global variable otherwise.
1807
1808=item *
1809
7a4b5c08 1810C<Perl_mg_free()> used to leave freed memory accessible via C<SvMAGIC()> on
5a00ee6a 1811the scalar. It now updates the linked list to remove each piece of magic
1812as it is freed.
1813
1814=item *
1815
1816Under ithreads, the regex in C<PL_reg_curpm> is now reference counted. This
1817eliminates a lot of hackish workarounds to cope with it not being reference
1818counted.
1819
1820=item *
1821
1822C<Perl_mg_magical()> would sometimes incorrectly turn on C<SvRMAGICAL()>.
1823This has been fixed.
1824
1825=item *
1826
1827The I<public> IV and NV flags are now not set if the string value has
1828trailing "garbage". This behaviour is consistent with not setting the
1829public IV or NV flags if the value is out of range for the type.
1830
1831=item *
1832
1833SV allocation tracing has been added to the diagnostics enabled by C<-Dm>.
1834The tracing can alternatively output via the C<PERL_MEM_LOG> mechanism, if
1835that was enabled when the F<perl> binary was compiled.
1836
1837=item *
1838
d7ea0f56 1839Smartmatch resolution tracing has been added as a new diagnostic. Use C<-DM> to
1840enable it.
1841
7f0da121 1842
1843=item *
1844
1845A new debugging flag C<-DB> now dumps subroutine definitions, leaving
1846C<-Dx> for its original purpose of dumping syntax trees.
1847
d7ea0f56 1848=item *
1849
5a00ee6a 1850Uses of C<Nullav>, C<Nullcv>, C<Nullhv>, C<Nullop>, C<Nullsv> etc have been
1851replaced by C<NULL> in the core code, and non-dual-life modules, as C<NULL>
1852is clearer to those unfamiliar with the core code.
1853
1854=item *
1855
1856A macro C<MUTABLE_PTR(p)> has been added, which on (non-pedantic) gcc will
1857not cast away C<const>, returning a C<void *>. Macros C<MUTABLE_SV(av)>,
1858C<MUTABLE_SV(cv)> etc build on this, casting to C<AV *> etc without
1859casting away C<const>. This allows proper compile-time auditing of
1860C<const> correctness in the core, and helped picked up some errors (now
1861fixed).
1862
1863=item *
1864
1865Macros C<mPUSHs()> and C<mXPUSHs()> have been added, for pushing SVs on the
1866stack and mortalizing them.
1867
1868=item *
1869
1870Use of the private structure C<mro_meta> has changed slightly. Nothing
1871outside the core should be accessing this directly anyway.
1872
1873=item *
1874
76e3c4a8 1875A new tool, F<Porting/expand-macro.pl> has been added, that allows you
5a00ee6a 1876to view how a C preprocessor macro would be expanded when compiled.
1877This is handy when trying to decode the macro hell that is the perl
1878guts.
1879
1880=back
1881
1882=head1 New Tests
1883
1884Many modules updated from CPAN incorporate new tests.
1885
1886Several tests that have the potential to hang forever if they fail now
1887incorporate a "watchdog" functionality that will kill them after a timeout,
1888which helps ensure that C<make test> and C<make test_harness> run to
1889completion automatically. (Jerry Hedden).
1890
1891Some core-specific tests have been added:
1892
1893=over 4
1894
1895=item t/comp/retainedlines.t
1896
1897Check that the debugger can retain source lines from C<eval>.
1898
1899=item t/io/perlio_fail.t
1900
1901Check that bad layers fail.
1902
1903=item t/io/perlio_leaks.t
1904
1905Check that PerlIO layers are not leaking.
1906
1907=item t/io/perlio_open.t
1908
1909Check that certain special forms of open work.
1910
1911=item t/io/perlio.t
1912
1913General PerlIO tests.
1914
1915=item t/io/pvbm.t
1916
1917Check that there is no unexpected interaction between the internal types
1918C<PVBM> and C<PVGV>.
1919
1920=item t/mro/package_aliases.t
1921
1922Check that mro works properly in the presence of aliased packages.
1923
1924=item t/op/dbm.t
1925
1926Tests for C<dbmopen> and C<dbmclose>.
1927
1928=item t/op/index_thr.t
1929
1930Tests for the interaction of C<index> and threads.
1931
1932=item t/op/pat_thr.t
1933
1934Tests for the interaction of esoteric patterns and threads.
1935
1936=item t/op/qr_gc.t
1937
1938Test that C<qr> doesn't leak.
1939
1940=item t/op/reg_email_thr.t
1941
1942Tests for the interaction of regex recursion and threads.
1943
1944=item t/op/regexp_qr_embed_thr.t
1945
1946Tests for the interaction of patterns with embedded C<qr//> and threads.
1947
1948=item t/op/regexp_unicode_prop.t
1949
1950Tests for Unicode properties in regular expressions.
1951
1952=item t/op/regexp_unicode_prop_thr.t
1953
1954Tests for the interaction of Unicode properties and threads.
1955
1956=item t/op/reg_nc_tie.t
1957
1958Test the tied methods of C<Tie::Hash::NamedCapture>.
1959
eeab323f 1960=item t/op/reg_posixcc.t
5a00ee6a 1961
1962Check that POSIX character classes behave consistently.
1963
1964=item t/op/re.t
1965
1966Check that exportable C<re> functions in F<universal.c> work.
1967
1968=item t/op/setpgrpstack.t
1969
1970Check that C<setpgrp> works.
1971
1972=item t/op/substr_thr.t
1973
1974Tests for the interaction of C<substr> and threads.
1975
1976=item t/op/upgrade.t
1977
1978Check that upgrading and assigning scalars works.
1979
1980=item t/uni/lex_utf8.t
1981
1982Check that Unicode in the lexer works.
1983
1984=item t/uni/tie.t
1985
1986Check that Unicode and C<tie> work.
1987
1988=back
1989
1990=head1 Known Problems
1991
1992This is a list of some significant unfixed bugs, which are regressions
1993from either 5.10.0 or 5.8.x.
1994
1995=over 4
1996
1997=item *
1998
1999C<List::Util::first> misbehaves in the presence of a lexical C<$_>
2000(typically introduced by C<my $_> or implicitly by C<given>). The variable
2001which gets set for each iteration is the package variable C<$_>, not the
2002lexical C<$_> [RT #67694].
2003
2004A similar issue may occur in other modules that provide functions which
2005take a block as their first argument, like
2006
2007 foo { ... $_ ...} list
2008
2009=item *
2010
2011The C<charnames> pragma may generate a run-time error when a regex is
2012interpolated [RT #56444]:
2013
2014 use charnames ':full';
2015 my $r1 = qr/\N{THAI CHARACTER SARA I}/;
2016 "foo" =~ $r1; # okay
2017 "foo" =~ /$r1+/; # runtime error
2018
2019A workaround is to generate the character outside of the regex:
2020
2021 my $a = "\N{THAI CHARACTER SARA I}";
2022 my $r1 = qr/$a/;
2023
2024=item *
2025
2026Some regexes may run much more slowly when run in a child thread compared
2027with the thread the pattern was compiled into [RT #55600].
2028
5a00ee6a 2029=back
2030
2031=head1 Deprecations
2032
2033The following items are now deprecated.
2034
2035=over 4
2036
2037=item *
2038
2039C<Switch> is buggy and should be avoided. From perl 5.11.0 onwards, it is
2040intended that any use of the core version of this module will emit a
2041warning, and that the module will eventually be removed from the core
2042(probably in perl 5.14.0). See L<perlsyn/"Switch statements"> for its
2043replacement.
2044
2045=item *
2046
0f97ff05 2047The following modules will be removed from the core distribution in a future
2048release, and should be installed from CPAN instead. Distributions on CPAN
2049which require these should add them to their prerequisites. The core versions
2050of these modules warnings will issue a deprecation warning.
2051
2052=over
2053
2054=item *
2055
2056C<Pod::Plainer>
2057
2058=back
2059
2060=item *
2061
ad1d1c50 2062C<suidperl> has been removed. It used to provide a mechanism to
5a00ee6a 2063emulate setuid permission bits on systems that don't support it properly.
2064
ad1d1c50 2065=item *
2066
2067Deprecate assignment to $[
2068
2069=item *
2070
2071Remove attrs, which has been deprecated since 1999/10/02.
2072
2073=item *
2074
2075Deprecate use of the attribute :locked on subroutines.
2076
2077=item *
2078
2079Deprecate using "locked" with the attributes pragma.
2080
2081=item *
2082
2083Deprecate using "unique" with the attributes pragma.
2084
2085=item *
2086
2087warn if ++ or -- are unable to change the value because it's beyond the limit of representation
2088
2089This uses a new warnings category: "imprecision".
2090
ad1d1c50 2091=item *
2092
2093Make lc/uc/lcfirst/ucfirst warn when passed undef.
2094
2095=item *
2096
2097Show constant in "Useless use of a constant in void context"
2098
2099=item *
2100
2101Make the new warning report undef constants as undef
2102
2103=item *
2104
2105Add a new warning, "Prototype after '%s'"
2106
2107=item *
2108
2109Tweak the "Illegal character in prototype" warning so it's more precise when reporting illegal characters after _
2110
2111=item *
2112
2113Unintented interpolation of $\ in regex
2114
2115=item *
2116
2117Make overflow warnings in gmtime/localtime only occur when warnings are on
2118
2119=item *
2120
2121Improve mro merging error messages.
2122
2123They are now very similar to those produced by Algorithm::C3.
2124
2125=item *
2126
2127Amelioration of the error message "Unrecognized character %s in column %d"
2128
2129Changes the error message to "Unrecognized character %s; marked by <--
2130HERE after %s<-- HERE near column %d". This should make it a little
2131simpler to spot and correct the suspicious character.
2132
2133=item *
2134
2135Explicitely point to $. when it causes an uninitialized warning for ranges in scalar context
2136
d7ea0f56 2137=item *
2138
2139Removed vestigal support for Tenon Intersystems MachTen Unix layer for MacOS Classic.
2140
2141=item *
2142
2143Removed the port to Atari MiNT. It's a dead platform that hasn't had any love since 5.005.
2144
2145
2146=item *
2147
2148Deprecated numerous Perl 4-era libraries:
2149
2150F<termcap.pl>, F<tainted.pl>, F<stat.pl>, F<shellwords.pl>, F<pwd.pl>,
2151F<open3.pl>, F<open2.pl>, F<newgetopt.pl>, F<look.pl>, F<find.pl>,
2152F<finddepth.pl>, F<importenv.pl>, F<hostname.pl>, F<getopts.pl>,
2153F<getopt.pl>, F<getcwd.pl>, F<flush.pl>, F<fastcwd.pl>, F<exceptions.pl>,
2154F<ctime.pl>, F<complete.pl>, F<cacheout.pl>, F<bigrat.pl>, F<bigint.pl>,
2155F<bigfloat.pl>, F<assert.pl>, F<abbrev.pl>, F<dotsh.pl>, and
2156F<timelocal.pl> are all now deprecated. Using them will incur a warning.
2157
5a00ee6a 2158=back
2159
2160=head1 Acknowledgements
2161
0cd7f36e 2162Some of the work in this release was funded by a TPF grant funded by
2163Dijkmat BV, The Netherlands.
5a00ee6a 2164
2165Steffen Mueller and David Golden in particular helped getting CPAN modules
2166polished and synchronised with their in-core equivalents.
2167
2168Craig Berry was tireless in getting maint to run under VMS, no matter how
2169many times we broke it for him.
2170
2171The other core committers contributed most of the changes, and applied most
2172of the patches sent in by the hundreds of contributors listed in F<AUTHORS>.
7120b314 2173
ad1d1c50 2174Much of the work of categorizing changes in this perldelta file was contributed
2175by the following porters using changelogger.bestpractical.com:
2176
2177Nicholas Clark, leon, shawn, alexm, rjbs, rafl, Pedro Melo, brunorc,
2178anonymous, ☄, Tom Hukins, anonymous, Jesse, dagolden, Moritz Onken,
2179Mark Fowler, chorny, anonymous, tmtm
2180
5a00ee6a 2181Finally, thanks to Larry Wall, without whom none of this would be
2182necessary.
7120b314 2183
2184=head1 Reporting Bugs
2185
2186If you find what you think is a bug, you might check the articles
2187recently posted to the comp.lang.perl.misc newsgroup and the perl
5a00ee6a 2188bug database at http://rt.perl.org/perlbug/ . There may also be
7120b314 2189information at http://www.perl.org/ , the Perl Home Page.
2190
2191If you believe you have an unreported bug, please run the B<perlbug>
2192program included with your release. Be sure to trim your bug down
2193to a tiny but sufficient test case. Your bug report, along with the
2194output of C<perl -V>, will be sent off to perlbug@perl.org to be
2195analysed by the Perl porting team.
2196
49f8307e 2197If the bug you are reporting has security implications, which make it
2198inappropriate to send to a publicly archived mailing list, then please send
2199it to perl5-security-report@perl.org. This points to a closed subscription
2200unarchived mailing list, which includes all the core committers, who be able
2201to help assess the impact of issues, figure out a resolution, and help
2202co-ordinate the release of patches to mitigate or fix the problem across all
5a00ee6a 2203platforms on which Perl is supported. Please only use this address for
2204security issues in the Perl core, not for modules independently
2205distributed on CPAN.
49f8307e 2206
7120b314 2207=head1 SEE ALSO
2208
5a00ee6a 2209The F<Changes> file for an explanation of how to view exhaustive details
2210on what changed.
7120b314 2211
2212The F<INSTALL> file for how to build Perl.
2213
2214The F<README> file for general stuff.
2215
2216The F<Artistic> and F<Copying> files for copyright information.
2217
2218=cut
ad1d1c50 2219
2220