This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update from Robin Barker to correct perldelta and Maintainers.pl for Pod-Plainer
[perl5.git] / pod / perl5110delta.pod
CommitLineData
fa7da8f7
NC
1=encoding utf8
2
7120b314
NC
3=head1 NAME
4
5a00ee6a 5perl5110delta - what is new for perl v5.11.0
7120b314
NC
6
7=head1 DESCRIPTION
8
5a00ee6a
JV
9This document describes differences between the 5.10.0 release and
10the 5.11.0 development release.
7120b314
NC
11
12=head1 Incompatible Changes
13
6fa80ea2
YO
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
JV
69=head2 In @INC, move ARCHLIB and PRIVLIB after the current version's site_perl and vendor_perl.
70
8b8da387
RGS
71=head2 Switch statement changes
72
73The handling of complex expressions by the C<given>/C<when> switch
a98ccf1e
NC
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
RGS
77in a smart match:
78
79=over 4
80
8b8da387
RGS
81=item flip-flop operators
82
98814a2b
RGS
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
JV
94 when (/^=begin/ .. /^=end/) {
95 # do something
96 }
8b8da387
RGS
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
RGS
108the smart match operator, that naturally also modify the behaviour
109of the switch statements where smart matching is implicitly used.
a98ccf1e
NC
110These changers were also made for the 5.10.1 release, and will remain in
111subsequent 5.10 releases.
8b8da387
RGS
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
RGS
120consistency or usefulness in several cases. While the general backwards
121compatibility is maintained, several changes must be noted:
8b8da387
RGS
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
RGS
135array), instead of passing the whole hash or array as a reference to
136the subroutine.
137
138=item *
139
ee18cc6c
RGS
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
RGS
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
RGS
170across arrays is not broken, as well as the other behaviours with complex
171types (coderefs, hashes, regexes). Thus, writers of overloading routines
ee18cc6c
RGS
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
RGS
175
176C<~~> will now refuse to work on objects that do not overload it (in order
665f5e98
RGS
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
RGS
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
RGS
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
JV
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
NC
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
JV
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
JV
256=item *
257
258C<length undef> now returns undef.
259
7f0da121
JV
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
JV
277=item *
278
279A space or a newline is now required after a C<"#line XXX"> directive.
280
fd99c0b9
JV
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
JV
289=back
290
7120b314
NC
291=head1 Core Enhancements
292
5a00ee6a
JV
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
JV
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
JV
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
RGS
309
310This pragma allows you to lexically disable or enable overloading
311for some or all operations. (Yuval Kogman)
312
71e9c532
RGS
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
RGS
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
NC
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
JV
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
RGS
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
JV
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
JV
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
JV
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
JV
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
NC
393=head1 Modules and Pragmata
394
7f0da121
JV
395=head2 Dual-lifed modules moved
396
18fd877a 397Dual-lifed modules maintained primarily in the Perl core now live in dist/.
7f0da121
JV
398Dual-lifed modules maintained primarily on CPAN now live in cpan/
399
5a00ee6a
JV
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
RGS
426=head2 Pragmata Changes
427
428=over 4
429
430=item C<overloading>
431
432See L</"The C<overloading> pragma"> above.
433
5a00ee6a
JV
434=item C<attributes>
435
436Upgraded from version 0.08 to 0.09.
437
438=item C<attrs>
439
42f099ed
NC
440The C<attrs> pragma has been removed. It had been marked as deprecated since
4415.6.0.
5a00ee6a
JV
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
NC
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
JV
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
NC
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
JV
511=item C<version>
512
513Upgraded from version 0.74 to 0.77.
514
1839a850
RGS
515=back
516
5a00ee6a 517=head2 Updated Modules
02569b83
RGS
518
519=over 4
520
5a00ee6a
JV
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
RGS
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
JV
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
JV
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
JV
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
JV
700File::Copy now always return 0 (not "") on failure.
701
0de885a9
NC
702FIXME - describe C<cp>
703
5a00ee6a
JV
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
JV
724Added -X overloading, -M, -C and -A.
725
5a00ee6a
JV
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
NC
915=item C<Pod::Plainer>
916
cfc946ee 917Upgraded from version 0.01 to 1.01.
0f97ff05
NC
918
919There are no code changes - the version bump is because C<Pod::Plainer> has
cfc946ee 920been released to CPAN as a stand-alone distribution, and will be removed from
0f97ff05
NC
921the core distribution in 5.14.
922
ad1d1c50
JV
923=item Pod::Perldoc
924
925Upgrade from version 3.14_02 to 3.15.
926
5a00ee6a
JV
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
RGS
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
JV
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
JV
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
JV
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
JV
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
JV
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
JV
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
JV
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
JV
1168=item F<perlbug>
1169
038a5866 1170F<perlbug> now uses C<%Module::CoreList::bug_tracker> to print out upstream bug
76e3c4a8 1171tracker URLs.
ad1d1c50
JV
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
JV
1178=item F<perlthanks>
1179
3141b5e1 1180Perl 5.11.0 added a new utility F<perlthanks>, which is a variant of
5a00ee6a
JV
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
JV
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
JV
1230=head2 Documented -X overloading.
1231
7a4b5c08 1232=head2 Documented that C<when()> treats specially most of the filetest operators
ad1d1c50 1233
ad1d1c50
JV
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
JV
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
JV
1245=head2 Added security contact information to L<perlsec>
1246
5a00ee6a
JV
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
NC
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
JV
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
JV
1272=item *
1273
7a4b5c08 1274Faster C<Perl_sv_utf8_upgrade()>
ad1d1c50
JV
1275
1276=item *
1277
7a4b5c08 1278Speed up C<keys> on empty hash
ad1d1c50 1279
5a00ee6a
JV
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
NC
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
JV
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
JV
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
JV
1354=item DomainOS
1355
1356Support for Apollo DomainOS was removed in Perl 5.11.0
1357
5a00ee6a
JV
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
JV
1373=item MiNT
1374
1375Support for Atari MiNT was removed in Perl 5.11.0.
1376
5a00ee6a
JV
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
JV
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
JV
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
JV
1462arguments [RT #59998].
1463
1464=item *
1465
038a5866 1466The C<-i>I<.suffix> command-line switch now recreates the file using
5a00ee6a
JV
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
JV
1478[RT #57042].
1479
1480=item *
1481
a048364f
NC
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
JV
1484
1485=item *
1486
a048364f 1487XS code including F<XSUB.h> before F<perl.h> gave a compile-time error
5a00ee6a
JV
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
JV
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
JV
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
JV
1698=item *
1699
1700Previously missing files from Unicode 5.1 Character Database are now included.
1701
01ad23f5
JV
1702=item *
1703
1704C<TMPDIR> is now honored when opening an anonymous temporary file
1705
5a00ee6a
JV
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
ef87f8cb
NC
1743TODO: C<SVt_RV> is gone. RVs are now stored in IVs
1744
1745=item *
1746
1747TODO: REGEXPs are first class
1748
1749=item *
1750
1751TODO: OOK is reworked, such that an OOKed scalar is PV not PVIV
1752
1753=item *
1754
5a00ee6a
JV
1755The J.R.R. Tolkien quotes at the head of C source file have been checked and
1756proper citations added, thanks to a patch from Tom Christiansen.
1757
1758=item *
1759
7a4b5c08 1760C<Perl_vcroak()> now accepts a null first argument. In addition, a full audit
5a00ee6a
JV
1761was made of the "not NULL" compiler annotations, and those for several
1762other internal functions were corrected.
1763
1764=item *
1765
1766New macros C<dSAVEDERRNO>, C<dSAVE_ERRNO>, C<SAVE_ERRNO>, C<RESTORE_ERRNO>
1767have been added to formalise the temporary saving of the C<errno>
1768variable.
1769
1770=item *
1771
1772The function C<Perl_sv_insert_flags> has been added to augment
1773C<Perl_sv_insert>.
1774
1775=item *
1776
1777The function C<Perl_newSV_type(type)> has been added, equivalent to
1778C<Perl_newSV()> followed by C<Perl_sv_upgrade(type)>.
1779
1780=item *
1781
1782The function C<Perl_newSVpvn_flags()> has been added, equivalent to
1783C<Perl_newSVpvn()> and then performing the action relevant to the flag.
1784
1785Two flag bits are currently supported.
1786
1787=over 4
1788
1789=item C<SVf_UTF8>
1790
1791This will call C<SvUTF8_on()> for you. (Note that this does not convert an
1792sequence of ISO 8859-1 characters to UTF-8). A wrapper, C<newSVpvn_utf8()>
1793is available for this.
1794
1795=item C<SVs_TEMP>
1796
7a4b5c08 1797Call C<Perl_sv_2mortal()> on the new SV.
5a00ee6a
JV
1798
1799=back
1800
1801There is also a wrapper that takes constant strings, C<newSVpvs_flags()>.
1802
1803=item *
1804
1805The function C<Perl_croak_xs_usage> has been added as a wrapper to
1806C<Perl_croak>.
1807
1808=item *
1809
1810The functions C<PerlIO_find_layer> and C<PerlIO_list_alloc> are now
1811exported.
1812
1813=item *
1814
1815C<PL_na> has been exterminated from the core code, replaced by local STRLEN
1816temporaries, or C<*_nolen()> calls. Either approach is faster than C<PL_na>,
1817which is a pointer deference into the interpreter structure under ithreads,
1818and a global variable otherwise.
1819
1820=item *
1821
7a4b5c08 1822C<Perl_mg_free()> used to leave freed memory accessible via C<SvMAGIC()> on
5a00ee6a
JV
1823the scalar. It now updates the linked list to remove each piece of magic
1824as it is freed.
1825
1826=item *
1827
1828Under ithreads, the regex in C<PL_reg_curpm> is now reference counted. This
1829eliminates a lot of hackish workarounds to cope with it not being reference
1830counted.
1831
1832=item *
1833
1834C<Perl_mg_magical()> would sometimes incorrectly turn on C<SvRMAGICAL()>.
1835This has been fixed.
1836
1837=item *
1838
1839The I<public> IV and NV flags are now not set if the string value has
1840trailing "garbage". This behaviour is consistent with not setting the
1841public IV or NV flags if the value is out of range for the type.
1842
1843=item *
1844
1845SV allocation tracing has been added to the diagnostics enabled by C<-Dm>.
1846The tracing can alternatively output via the C<PERL_MEM_LOG> mechanism, if
1847that was enabled when the F<perl> binary was compiled.
1848
1849=item *
1850
d7ea0f56
JV
1851Smartmatch resolution tracing has been added as a new diagnostic. Use C<-DM> to
1852enable it.
1853
7f0da121
JV
1854
1855=item *
1856
1857A new debugging flag C<-DB> now dumps subroutine definitions, leaving
1858C<-Dx> for its original purpose of dumping syntax trees.
1859
d7ea0f56
JV
1860=item *
1861
5a00ee6a
JV
1862Uses of C<Nullav>, C<Nullcv>, C<Nullhv>, C<Nullop>, C<Nullsv> etc have been
1863replaced by C<NULL> in the core code, and non-dual-life modules, as C<NULL>
1864is clearer to those unfamiliar with the core code.
1865
1866=item *
1867
1868A macro C<MUTABLE_PTR(p)> has been added, which on (non-pedantic) gcc will
1869not cast away C<const>, returning a C<void *>. Macros C<MUTABLE_SV(av)>,
1870C<MUTABLE_SV(cv)> etc build on this, casting to C<AV *> etc without
1871casting away C<const>. This allows proper compile-time auditing of
1872C<const> correctness in the core, and helped picked up some errors (now
1873fixed).
1874
1875=item *
1876
1877Macros C<mPUSHs()> and C<mXPUSHs()> have been added, for pushing SVs on the
1878stack and mortalizing them.
1879
1880=item *
1881
1882Use of the private structure C<mro_meta> has changed slightly. Nothing
1883outside the core should be accessing this directly anyway.
1884
1885=item *
1886
76e3c4a8 1887A new tool, F<Porting/expand-macro.pl> has been added, that allows you
5a00ee6a
JV
1888to view how a C preprocessor macro would be expanded when compiled.
1889This is handy when trying to decode the macro hell that is the perl
1890guts.
1891
1892=back
1893
1894=head1 New Tests
1895
1896Many modules updated from CPAN incorporate new tests.
1897
1898Several tests that have the potential to hang forever if they fail now
1899incorporate a "watchdog" functionality that will kill them after a timeout,
1900which helps ensure that C<make test> and C<make test_harness> run to
1901completion automatically. (Jerry Hedden).
1902
1903Some core-specific tests have been added:
1904
1905=over 4
1906
1907=item t/comp/retainedlines.t
1908
1909Check that the debugger can retain source lines from C<eval>.
1910
1911=item t/io/perlio_fail.t
1912
1913Check that bad layers fail.
1914
1915=item t/io/perlio_leaks.t
1916
1917Check that PerlIO layers are not leaking.
1918
1919=item t/io/perlio_open.t
1920
1921Check that certain special forms of open work.
1922
1923=item t/io/perlio.t
1924
1925General PerlIO tests.
1926
1927=item t/io/pvbm.t
1928
1929Check that there is no unexpected interaction between the internal types
1930C<PVBM> and C<PVGV>.
1931
1932=item t/mro/package_aliases.t
1933
1934Check that mro works properly in the presence of aliased packages.
1935
1936=item t/op/dbm.t
1937
1938Tests for C<dbmopen> and C<dbmclose>.
1939
1940=item t/op/index_thr.t
1941
1942Tests for the interaction of C<index> and threads.
1943
1944=item t/op/pat_thr.t
1945
1946Tests for the interaction of esoteric patterns and threads.
1947
1948=item t/op/qr_gc.t
1949
1950Test that C<qr> doesn't leak.
1951
1952=item t/op/reg_email_thr.t
1953
1954Tests for the interaction of regex recursion and threads.
1955
1956=item t/op/regexp_qr_embed_thr.t
1957
1958Tests for the interaction of patterns with embedded C<qr//> and threads.
1959
1960=item t/op/regexp_unicode_prop.t
1961
1962Tests for Unicode properties in regular expressions.
1963
1964=item t/op/regexp_unicode_prop_thr.t
1965
1966Tests for the interaction of Unicode properties and threads.
1967
1968=item t/op/reg_nc_tie.t
1969
1970Test the tied methods of C<Tie::Hash::NamedCapture>.
1971
eeab323f 1972=item t/op/reg_posixcc.t
5a00ee6a
JV
1973
1974Check that POSIX character classes behave consistently.
1975
1976=item t/op/re.t
1977
1978Check that exportable C<re> functions in F<universal.c> work.
1979
1980=item t/op/setpgrpstack.t
1981
1982Check that C<setpgrp> works.
1983
1984=item t/op/substr_thr.t
1985
1986Tests for the interaction of C<substr> and threads.
1987
1988=item t/op/upgrade.t
1989
1990Check that upgrading and assigning scalars works.
1991
1992=item t/uni/lex_utf8.t
1993
1994Check that Unicode in the lexer works.
1995
1996=item t/uni/tie.t
1997
1998Check that Unicode and C<tie> work.
1999
2000=back
2001
2002=head1 Known Problems
2003
2004This is a list of some significant unfixed bugs, which are regressions
2005from either 5.10.0 or 5.8.x.
2006
2007=over 4
2008
2009=item *
2010
2011C<List::Util::first> misbehaves in the presence of a lexical C<$_>
2012(typically introduced by C<my $_> or implicitly by C<given>). The variable
2013which gets set for each iteration is the package variable C<$_>, not the
2014lexical C<$_> [RT #67694].
2015
2016A similar issue may occur in other modules that provide functions which
2017take a block as their first argument, like
2018
2019 foo { ... $_ ...} list
2020
2021=item *
2022
2023The C<charnames> pragma may generate a run-time error when a regex is
2024interpolated [RT #56444]:
2025
2026 use charnames ':full';
2027 my $r1 = qr/\N{THAI CHARACTER SARA I}/;
2028 "foo" =~ $r1; # okay
2029 "foo" =~ /$r1+/; # runtime error
2030
2031A workaround is to generate the character outside of the regex:
2032
2033 my $a = "\N{THAI CHARACTER SARA I}";
2034 my $r1 = qr/$a/;
2035
2036=item *
2037
2038Some regexes may run much more slowly when run in a child thread compared
2039with the thread the pattern was compiled into [RT #55600].
2040
5a00ee6a
JV
2041=back
2042
2043=head1 Deprecations
2044
2045The following items are now deprecated.
2046
2047=over 4
2048
2049=item *
2050
2051C<Switch> is buggy and should be avoided. From perl 5.11.0 onwards, it is
2052intended that any use of the core version of this module will emit a
2053warning, and that the module will eventually be removed from the core
2054(probably in perl 5.14.0). See L<perlsyn/"Switch statements"> for its
2055replacement.
2056
2057=item *
2058
0f97ff05
NC
2059The following modules will be removed from the core distribution in a future
2060release, and should be installed from CPAN instead. Distributions on CPAN
2061which require these should add them to their prerequisites. The core versions
2062of these modules warnings will issue a deprecation warning.
2063
2064=over
2065
2066=item *
2067
3f369777
NC
2068C<Class::ISA>
2069
2070=item *
2071
0f97ff05
NC
2072C<Pod::Plainer>
2073
3f369777
NC
2074=item *
2075
2076C<Shell>
2077
0f97ff05
NC
2078=back
2079
20e7cb7b
NC
2080Currently support to install from CPAN without a I<force> is C<TODO> in CPAN
2081and CPANPLUS. This will be addressed before 5.12.0 ships.
2082
0f97ff05
NC
2083=item *
2084
ad1d1c50 2085C<suidperl> has been removed. It used to provide a mechanism to
5a00ee6a
JV
2086emulate setuid permission bits on systems that don't support it properly.
2087
ad1d1c50
JV
2088=item *
2089
2090Deprecate assignment to $[
2091
2092=item *
2093
2094Remove attrs, which has been deprecated since 1999/10/02.
2095
2096=item *
2097
2098Deprecate use of the attribute :locked on subroutines.
2099
2100=item *
2101
2102Deprecate using "locked" with the attributes pragma.
2103
2104=item *
2105
2106Deprecate using "unique" with the attributes pragma.
2107
2108=item *
2109
2110warn if ++ or -- are unable to change the value because it's beyond the limit of representation
2111
2112This uses a new warnings category: "imprecision".
2113
ad1d1c50
JV
2114=item *
2115
2116Make lc/uc/lcfirst/ucfirst warn when passed undef.
2117
2118=item *
2119
2120Show constant in "Useless use of a constant in void context"
2121
2122=item *
2123
2124Make the new warning report undef constants as undef
2125
2126=item *
2127
2128Add a new warning, "Prototype after '%s'"
2129
2130=item *
2131
2132Tweak the "Illegal character in prototype" warning so it's more precise when reporting illegal characters after _
2133
2134=item *
2135
2136Unintented interpolation of $\ in regex
2137
2138=item *
2139
2140Make overflow warnings in gmtime/localtime only occur when warnings are on
2141
2142=item *
2143
2144Improve mro merging error messages.
2145
2146They are now very similar to those produced by Algorithm::C3.
2147
2148=item *
2149
2150Amelioration of the error message "Unrecognized character %s in column %d"
2151
2152Changes the error message to "Unrecognized character %s; marked by <--
2153HERE after %s<-- HERE near column %d". This should make it a little
2154simpler to spot and correct the suspicious character.
2155
2156=item *
2157
2158Explicitely point to $. when it causes an uninitialized warning for ranges in scalar context
2159
d7ea0f56
JV
2160=item *
2161
2162Removed vestigal support for Tenon Intersystems MachTen Unix layer for MacOS Classic.
2163
2164=item *
2165
2166Removed the port to Atari MiNT. It's a dead platform that hasn't had any love since 5.005.
2167
2168
2169=item *
2170
2171Deprecated numerous Perl 4-era libraries:
2172
2173F<termcap.pl>, F<tainted.pl>, F<stat.pl>, F<shellwords.pl>, F<pwd.pl>,
2174F<open3.pl>, F<open2.pl>, F<newgetopt.pl>, F<look.pl>, F<find.pl>,
2175F<finddepth.pl>, F<importenv.pl>, F<hostname.pl>, F<getopts.pl>,
2176F<getopt.pl>, F<getcwd.pl>, F<flush.pl>, F<fastcwd.pl>, F<exceptions.pl>,
2177F<ctime.pl>, F<complete.pl>, F<cacheout.pl>, F<bigrat.pl>, F<bigint.pl>,
2178F<bigfloat.pl>, F<assert.pl>, F<abbrev.pl>, F<dotsh.pl>, and
2179F<timelocal.pl> are all now deprecated. Using them will incur a warning.
2180
5a00ee6a
JV
2181=back
2182
2183=head1 Acknowledgements
2184
0cd7f36e
NC
2185Some of the work in this release was funded by a TPF grant funded by
2186Dijkmat BV, The Netherlands.
5a00ee6a
JV
2187
2188Steffen Mueller and David Golden in particular helped getting CPAN modules
2189polished and synchronised with their in-core equivalents.
2190
2191Craig Berry was tireless in getting maint to run under VMS, no matter how
2192many times we broke it for him.
2193
2194The other core committers contributed most of the changes, and applied most
2195of the patches sent in by the hundreds of contributors listed in F<AUTHORS>.
7120b314 2196
ad1d1c50
JV
2197Much of the work of categorizing changes in this perldelta file was contributed
2198by the following porters using changelogger.bestpractical.com:
2199
2200Nicholas Clark, leon, shawn, alexm, rjbs, rafl, Pedro Melo, brunorc,
2201anonymous, ☄, Tom Hukins, anonymous, Jesse, dagolden, Moritz Onken,
2202Mark Fowler, chorny, anonymous, tmtm
2203
5a00ee6a
JV
2204Finally, thanks to Larry Wall, without whom none of this would be
2205necessary.
7120b314
NC
2206
2207=head1 Reporting Bugs
2208
2209If you find what you think is a bug, you might check the articles
2210recently posted to the comp.lang.perl.misc newsgroup and the perl
5a00ee6a 2211bug database at http://rt.perl.org/perlbug/ . There may also be
7120b314
NC
2212information at http://www.perl.org/ , the Perl Home Page.
2213
2214If you believe you have an unreported bug, please run the B<perlbug>
2215program included with your release. Be sure to trim your bug down
2216to a tiny but sufficient test case. Your bug report, along with the
2217output of C<perl -V>, will be sent off to perlbug@perl.org to be
2218analysed by the Perl porting team.
2219
49f8307e
NC
2220If the bug you are reporting has security implications, which make it
2221inappropriate to send to a publicly archived mailing list, then please send
2222it to perl5-security-report@perl.org. This points to a closed subscription
2223unarchived mailing list, which includes all the core committers, who be able
2224to help assess the impact of issues, figure out a resolution, and help
2225co-ordinate the release of patches to mitigate or fix the problem across all
5a00ee6a
JV
2226platforms on which Perl is supported. Please only use this address for
2227security issues in the Perl core, not for modules independently
2228distributed on CPAN.
49f8307e 2229
7120b314
NC
2230=head1 SEE ALSO
2231
5a00ee6a
JV
2232The F<Changes> file for an explanation of how to view exhaustive details
2233on what changed.
7120b314
NC
2234
2235The F<INSTALL> file for how to build Perl.
2236
2237The F<README> file for general stuff.
2238
2239The F<Artistic> and F<Copying> files for copyright information.
2240
2241=cut
ad1d1c50
JV
2242
2243