Move Math::BigInt::FastCalc from ext/ to cpan/
[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
c3e6c235 69=head2 @INC reorganization
70
71In @INC, ARCHLIB and PRIVLIB now occur after after the current version's
72site_perl and vendor_perl.
ad1d1c50 73
8b8da387 74=head2 Switch statement changes
75
76The handling of complex expressions by the C<given>/C<when> switch
a98ccf1e 77statement has been enhanced. These enhancements are also available in
785.10.1 and subsequent 5.10 releases. There are two new cases where C<when> now
412304fb 79interprets its argument as a boolean, instead of an expression to be used
8b8da387 80in a smart match:
81
82=over 4
83
8b8da387 84=item flip-flop operators
85
98814a2b 86The C<..> and C<...> flip-flop operators are now evaluated in boolean
87context, following their usual semantics; see L<perlop/"Range Operators">.
88
89Note that, as in perl 5.10.0, C<when (1..10)> will not work to test
90whether a given value is an integer between 1 and 10; you should use
91C<when ([1..10])> instead (note the array reference).
92
93However, contrary to 5.10.0, evaluating the flip-flop operators in boolean
94context ensures it can now be useful in a C<when()>, notably for
95implementing bistable conditions, like in:
96
5a00ee6a 97 when (/^=begin/ .. /^=end/) {
98 # do something
99 }
8b8da387 100
101=item defined-or operator
102
103A compound expression involving the defined-or operator, as in
104C<when (expr1 // expr2)>, will be treated as boolean if the first
105expression is boolean. (This just extends the existing rule that applies
106to the regular or operator, as in C<when (expr1 || expr2)>.)
107
108=back
109
98814a2b 110The next section details more changes brought to the semantics to
8b8da387 111the smart match operator, that naturally also modify the behaviour
112of the switch statements where smart matching is implicitly used.
a98ccf1e 113These changers were also made for the 5.10.1 release, and will remain in
114subsequent 5.10 releases.
8b8da387 115
116=head2 Smart match changes
117
118=head3 Changes to type-based dispatch
119
120The smart match operator C<~~> is no longer commutative. The behaviour of
121a smart match now depends primarily on the type of its right hand
5a00ee6a 122argument. Moreover, its semantics have been adjusted for greater
ee18cc6c 123consistency or usefulness in several cases. While the general backwards
124compatibility is maintained, several changes must be noted:
8b8da387 125
126=over 4
127
128=item *
129
130Code references with an empty prototype are no longer treated specially.
131They are passed an argument like the other code references (even if they
132choose to ignore it).
133
134=item *
135
136C<%hash ~~ sub {}> and C<@array ~~ sub {}> now test that the subroutine
9091a618 137returns a true value for each key of the hash (or element of the
8b8da387 138array), instead of passing the whole hash or array as a reference to
139the subroutine.
140
141=item *
142
ee18cc6c 143Due to the commutativity breakage, code references are no longer
144treated specially when appearing on the left of the C<~~> operator,
145but like any vulgar scalar.
146
147=item *
148
8b8da387 149C<undef ~~ %hash> is always false (since C<undef> can't be a key in a
150hash). No implicit conversion to C<""> is done (as was the case in perl
1515.10.0).
152
153=item *
154
155C<$scalar ~~ @array> now always distributes the smart match across the
156elements of the array. It's true if one element in @array verifies
157C<$scalar ~~ $element>. This is a generalization of the old behaviour
158that tested whether the array contained the scalar.
159
160=back
161
162The full dispatch table for the smart match operator is given in
163L<perlsyn/"Smart matching in detail">.
164
165=head3 Smart match and overloading
166
167According to the rule of dispatch based on the rightmost argument type,
168when an object overloading C<~~> appears on the right side of the
169operator, the overload routine will always be called (with a 3rd argument
170set to a true value, see L<overload>.) However, when the object will
171appear on the left, the overload routine will be called only when the
9091a618 172rightmost argument is a simple scalar. This way distributivity of smart match
8b8da387 173across arrays is not broken, as well as the other behaviours with complex
174types (coderefs, hashes, regexes). Thus, writers of overloading routines
ee18cc6c 175for smart match mostly need to worry only with comparing against a scalar,
176and possibly with stringification overloading; the other common cases
177will be automatically handled consistently.
8b8da387 178
179C<~~> will now refuse to work on objects that do not overload it (in order
665f5e98 180to avoid relying on the object's underlying structure). (However, if the
181object overloads the stringification or the numification operators, and
182if overload fallback is active, it will be used instead, as usual.)
8b8da387 183
f71d6157 184=head2 Labels can't be keywords
185
186Labels used as targets for the C<goto>, C<last>, C<next> or C<redo>
187statements cannot be keywords anymore. This restriction will prevent
188potential confusion between the C<goto LABEL> and C<goto EXPR> syntaxes:
189for example, a statement like C<goto print> would jump to a label whose
7a4b5c08 190name would be the return value of C<print()>, (usually 1), instead of a
f71d6157 191label named C<print>. Moreover, the other control flow statements
192would just ignore any keyword passed to them as a label name. Since
193such labels cannot be defined anymore, this kind of error will be
194avoided.
195
5a00ee6a 196=head2 Other incompatible changes
197
198=over 4
199
200=item *
201
202The semantics of C<use feature :5.10*> have changed slightly.
203See L<"Modules and Pragmata"> for more information.
204
205=item *
206
207It is now a run-time error to use the smart match operator C<~~>
208with an object that has no overload defined for it. (This way
209C<~~> will not break encapsulation by matching against the
210object's internal representation as a reference.)
211
212=item *
213
214The version control system used for the development of the perl
215interpreter has been switched from Perforce to git. This is mainly an
216internal issue that only affects people actively working on the perl core;
217but it may have minor external visibility, for example in some of details
218of the output of C<perl -V>. See L<perlrepository> for more information.
219
220=item *
221
222The internal structure of the C<ext/> directory in the perl source has
223been reorganised. In general, a module C<Foo::Bar> whose source was
224stored under F<ext/Foo/Bar/> is now located under F<ext/Foo-Bar/>. Also,
429ee0aa 225nearly all dual-life modules have been moved from F<lib/> to F<ext/>. This
226is purely a source tarball change, and should make no difference to the
227compilation or installation of perl, unless you have a very customised build
228process that explicitly relies on this structure, or which hard-codes the
229C<nonxs_ext> F<Configure> parameter. Specifically, this change does not by
230default alter the location of any files in the final installation.
5a00ee6a 231
232=item *
233
234As part of the C<Test::Harness> 2.x to 3.x upgrade, the experimental
235C<Test::Harness::Straps> module has been removed.
236See L</"Updated Modules"> for more details.
237
238=item *
239
240As part of the C<ExtUtils::MakeMaker> upgrade, the
241C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish> modules
242have been removed from this distribution.
243
244=item *
245
246C<Module::CoreList> no longer contains the C<%:patchlevel> hash.
247
248=item *
249
250This one is actually a change introduced in 5.10.0, but it was missed
251from that release's perldelta, so it is mentioned here instead.
252
253A bugfix related to the handling of the C</m> modifier and C<qr> resulted
254in a change of behaviour between 5.8.x and 5.10.0:
255
256 # matches in 5.8.x, doesn't match in 5.10.0
257 $re = qr/^bar/; "foo\nbar" =~ /$re/m;
258
ad1d1c50 259=item *
260
261C<length undef> now returns undef.
262
7f0da121 263=item *
264
265Unsupported private C API functions are now declared "static" to prevent
c3e6c235 266leakage to Perl's public API.
7f0da121 267
268=item *
269
c3e6c235 270To support the bootstrapping process, F<miniperl> no longer builds with
271UTF-8 support in the regexp engine.
272
7f0da121 273This allows a build to complete with PERL_UNICODE set and a UTF-8 locale.
274Without this there's a bootstrapping problem, as miniperl can't load the UTF-8
275components of the regexp engine, because they're not yet built.
276
277=item *
278
279F<miniperl>'s @INC is now restricted to just -I..., the split of $ENV{PERL5LIB}, and "."
280
01ad23f5 281=item *
282
283A space or a newline is now required after a C<"#line XXX"> directive.
284
fd99c0b9 285=item *
286
287Tied filehandles now have an additional method EOF which provides the EOF type
288
289=item *
290
291To better match all other flow control statements, C<foreach> may no longer be used as an attribute.
7f0da121 292
5a00ee6a 293=back
294
7120b314 295=head1 Core Enhancements
296
5a00ee6a 297=head2 Unicode Character Database 5.1.0
298
3141b5e1 299The copy of the Unicode Character Database included in Perl 5.11.0 has
5a00ee6a 300been updated to 5.1.0 from 5.0.0. See
301L<http://www.unicode.org/versions/Unicode5.1.0/#Notable_Changes> for the
302notable changes.
303
304=head2 A proper interface for pluggable Method Resolution Orders
305
3141b5e1 306As of Perl 5.11.0 there is a new interface for plugging and using method
5a00ee6a 307resolution orders other than the default (linear depth first search).
308The C3 method resolution order added in 5.10.0 has been re-implemented as
309a plugin, without changing its Perl-space interface. See L<perlmroapi> for
310more information.
311
ef55af2a 312=head2 The C<overloading> pragma
1839a850 313
314This pragma allows you to lexically disable or enable overloading
315for some or all operations. (Yuval Kogman)
316
71e9c532 317=head2 C<\N> regex escape
318
319A new regex escape has been added, C<\N>. It will match any character that
320is not a newline, independently from the presence or absence of the single
321line match modifier C</s>. (If C<\N> is followed by an opening brace and
322by a letter, perl will still assume that a Unicode character name is
323coming, so compatibility is preserved.) (Rafael Garcia-Suarez)
324
4b3db487 325=head2 Implicit strictures
326
327Using the C<use VERSION> syntax with a version number greater or equal
328to 5.11.0 will also lexically enable strictures just like C<use strict>
329would do (in addition to enabling features.) So, the following:
330
331 use 5.11.0;
332
333will now imply:
334
335 use strict;
336 use feature ':5.11';
337
5ee651a9 338=head2 Parallel tests
339
340The core distribution can now run its regression tests in parallel on
341Unix-like platforms. Instead of running C<make test>, set C<TEST_JOBS> in
342your environment to the number of tests to run in parallel, and run
343C<make test_harness>. On a Bourne-like shell, this can be done as
344
345 TEST_JOBS=3 make test_harness # Run 3 tests in parallel
346
347An environment variable is used, rather than parallel make itself, because
348L<TAP::Harness> needs to be able to schedule individual non-conflicting test
349scripts itself, and there is no standard interface to C<make> utilities to
350interact with their job schedulers.
351
5a00ee6a 352Note that currently some test scripts may fail when run in parallel (most
353notably C<ext/IO/t/io_dir.t>). If necessary run just the failing scripts
354again sequentially and see if the failures go away.
355
044c880b 356=head2 The C<...> operator
357
358A new operator, C<...>, nicknamed the Yada Yada operator, has been added.
359It is intended to mark placeholder code, that is not yet implemented.
360See L<perlop/"Yada Yada Operator">. (chromatic)
361
5a00ee6a 362=head2 DTrace support
363
364Some support for DTrace has been added. See "DTrace support" in F<INSTALL>.
365
366=head2 Support for C<configure_requires> in CPAN module metadata
367
368Both C<CPAN> and C<CPANPLUS> now support the C<configure_requires> keyword
038a5866 369in the F<META.yml> metadata file included in most recent CPAN distributions.
5a00ee6a 370This allows distribution authors to specify configuration prerequisites that
371must be installed before running F<Makefile.PL> or F<Build.PL>.
372
373See the documentation for C<ExtUtils::MakeMaker> or C<Module::Build> for more
374on how to specify C<configure_requires> when creating a distribution for CPAN.
375
c3e6c235 376=head2 C<each> is now more flexible
377
378The C<each> function can now operate on arrays.
379
380=head2 Y2038 compliance
381
382Perl's core time-related functions are now Y2038 compliant. (With 29
383years to spare!)
384
385=head2 C<$,> flexibilty
386
387The variable C<$,> may now be tied.
388
389=head2 // in where clauses
ad1d1c50 390
c3e6c235 391// now behaves like || in when clauses
ad1d1c50 392
c3e6c235 393=head2 Enabling warnings from your shell environment
ad1d1c50 394
c3e6c235 395You can now set C<-W> from the C<PERL5OPT> environment variable
ad1d1c50 396
c3e6c235 397=head2 C<delete local>
398
399C<delete local> now allows you to lexically delete a hash entry.
400
401=head2 New support for Abstract namespace sockets
7f0da121 402
7f0da121 403Abstract namespace sockets are Linux-specific socket type that live in
404AF_UNIX family, slightly abusing it to be able to use arbitrary
405character arrays as addresses: They start with nul byte and are not
406terminated by nul byte, but with the length passed to the socket()
407system call.
ad1d1c50 408
7120b314 409=head1 Modules and Pragmata
410
7f0da121 411=head2 Dual-lifed modules moved
412
18fd877a 413Dual-lifed modules maintained primarily in the Perl core now live in dist/.
7f0da121 414Dual-lifed modules maintained primarily on CPAN now live in cpan/
415
6c79d1d2 416In previous releases of Perl, it was customary to enumerate all module
417changes in this section of the C<perldelta> file. From 5.11.0 forward
418only notable updates (such as new or deprecated modules ) will be
419listed in this section. For a complete reference to the versions of
420modules shipped in a given release of perl, please see L<Module::CoreList>.
421
5a00ee6a 422=head2 New Modules and Pragmata
423
424=over 4
425
426=item C<autodie>
427
428This is a new lexically-scoped alternative for the C<Fatal> module.
429The bundled version is 2.06_01. Note that in this release, using a string
430eval when C<autodie> is in effect can cause the autodie behaviour to leak
431into the surrounding scope. See L<autodie/"BUGS"> for more details.
432
433=item C<Compress::Raw::Bzip2>
434
435This has been added to the core (version 2.020).
436
437=item C<parent>
438
439This pragma establishes an ISA relationship with base classes at compile
440time. It provides the key feature of C<base> without the feature creep.
441
442=item C<Parse::CPAN::Meta>
443
444This has been added to the core (version 1.39).
445
446=back
447
1839a850 448=head2 Pragmata Changes
449
450=over 4
451
452=item C<overloading>
453
454See L</"The C<overloading> pragma"> above.
455
5a00ee6a 456=item C<attrs>
457
42f099ed 458The C<attrs> pragma has been removed. It had been marked as deprecated since
4595.6.0.
5a00ee6a 460
5a00ee6a 461=item C<charnames>
462
5a00ee6a 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
5a00ee6a 467=item C<feature>
468
469The meaning of the C<:5.10> and C<:5.10.X> feature bundles has
470changed slightly. The last component, if any (i.e. C<X>) is simply ignored.
471This is predicated on the assumption that new features will not, in
472general, be added to maintenance releases. So C<:5.10> and C<:5.10.X>
473have identical effect. This is a change to the behaviour documented for
4745.10.0.
475
f7fa8439 476=item C<mro>
477
478Upgraded from version 1.00 to 1.01. Performance for single inheritance is 40%
479faster - see L</"Performance Enhancements"> below.
480
481C<mro> is now implemented as an XS extension. The documented interface has not
482changed. Code relying on the implementation detail that some C<mro::>
483methods happened to be available at all times gets to "keep both pieces".
484
1839a850 485=back
486
5a00ee6a 487=head2 Updated Modules
02569b83 488
489=over 4
490
5a00ee6a 491=item C<ExtUtils::MakeMaker>
492
493Upgraded from version 6.42 to 6.55_02.
494
495Note that C<ExtUtils::MakeMaker::bytes> and C<ExtUtils::MakeMaker::vmsish>
496have been removed from this distribution.
497
5a00ee6a 498=item C<Test::Harness>
499
500Upgraded from version 2.64 to 3.17.
501
502Note that one side-effect of the 2.x to 3.x upgrade is that the
503experimental C<Test::Harness::Straps> module (and its supporting
504C<Assert>, C<Iterator>, C<Point> and C<Results> modules) have been
505removed. If you still need this, then they are available in the
506(unmaintained) C<Test-Harness-Straps> distribution on CPAN.
507
5a00ee6a 508=item C<UNIVERSAL>
509
510Upgraded from version 1.04 to 1.05.
511
eeab323f 512C<< UNIVERSAL->import() >> is now deprecated.
ad1d1c50 513
5a00ee6a 514=back
515
516=head1 Utility Changes
517
518=over 4
519
520=item F<h2ph>
521
522Now looks in C<include-fixed> too, which is a recent addition to gcc's
523search path.
524
525=item F<h2xs>
526
527No longer incorrectly treats enum values like macros (Daniel Burr).
528
529Now handles C++ style constants (C<//>) properly in enums. (A patch from
530Rainer Weikusat was used; Daniel Burr also proposed a similar fix).
531
532=item F<perl5db.pl>
533
534C<LVALUE> subroutines now work under the debugger.
535
536The debugger now correctly handles proxy constant subroutines, and
537subroutine stubs.
538
ad1d1c50 539=item F<perlbug>
540
038a5866 541F<perlbug> now uses C<%Module::CoreList::bug_tracker> to print out upstream bug
76e3c4a8 542tracker URLs.
ad1d1c50 543
544Where the user names a module that their bug report is about, and we know the
545URL for its upstream bug tracker, provide a message to the user explaining
546that the core copies the CPAN version directly, and provide the URL for
547reporting the bug directly to upstream.
548
5a00ee6a 549=item F<perlthanks>
550
3141b5e1 551Perl 5.11.0 added a new utility F<perlthanks>, which is a variant of
5a00ee6a 552F<perlbug>, but for sending non-bug-reports to the authors and maintainers
553of Perl. Getting nothing but bug reports can become a bit demoralising:
554we'll see if this changes things.
555
556=back
557
558=head1 New Documentation
559
560=over 4
561
562=item L<perlhaiku>
563
564This contains instructions on how to build perl for the Haiku platform.
565
566=item L<perlmroapi>
567
568This describes the new interface for pluggable Method Resolution Orders.
569
570=item L<perlperf>
571
572This document, by Richard Foley, provides an introduction to the use of
573performance and optimization techniques which can be used with particular
574reference to perl programs.
575
576=item L<perlrepository>
577
578This describes how to access the perl source using the I<git> version
579control system.
580
581=item L<perlthanks>
582
583This describes the new F<perlthanks> utility.
584
585=back
586
587=head1 Changes to Existing Documentation
588
76e3c4a8 589The various large F<Changes*> files (which listed every change made to perl
5a00ee6a 590over the last 18 years) have been removed, and replaced by a small file,
76e3c4a8 591also called F<Changes>, which just explains how that same information may
5a00ee6a 592be extracted from the git version control system.
593
594The file F<Porting/patching.pod> has been deleted, as it mainly described
595interacting with the old Perforce-based repository, which is now obsolete.
596Information still relevant has been moved to L<perlrepository>.
597
598L<perlapi>, L<perlintern>, L<perlmodlib> and L<perltoc> are now all
599generated at build time, rather than being shipped as part of the release.
600
c3e6c235 601=over
ad1d1c50 602
c3e6c235 603=item *
ad1d1c50 604
c3e6c235 605Documented -X overloading.
ad1d1c50 606
c3e6c235 607=item *
ad1d1c50 608
c3e6c235 609Documented that C<when()> treats specially most of the filetest operators
ad1d1c50 610
c3e6c235 611=item *
612
613Documented when as a syntax modifier
614
615=item *
616
617Eliminated "Old Perl threads tutorial", which describes 5005 threads.
618
619F<pod/perlthrtut.pod> is the same material reworked for ithreads.
620
621=item *
622
623Correct previous documentation: v-strings are not deprecated
ad1d1c50 624
625With version objects, we need them to use MODULE VERSION syntax. This
626patch removes the deprecation note.
627
c3e6c235 628=item *
629
630Added security contact information to L<perlsec>
631
632=back
7f0da121 633
5a00ee6a 634=head1 Performance Enhancements
635
c3e6c235 636
5a00ee6a 637=over 4
638
639=item *
640
641A new internal cache means that C<isa()> will often be faster.
642
643=item *
644
6f54462f 645The implementation of C<C3> Method Resolution Order has been optimised -
c3e6c235 646linearisation for classes with single inheritance is 40% faster. Performance
6f54462f 647for multiple inheritance is unchanged.
648
649=item *
650
5a00ee6a 651Under C<use locale>, the locale-relevant information is now cached on
652read-only values, such as the list returned by C<keys %hash>. This makes
653operations such as C<sort keys %hash> in the scope of C<use locale> much
654faster.
655
656=item *
657
658Empty C<DESTROY> methods are no longer called.
659
ad1d1c50 660=item *
661
7a4b5c08 662Faster C<Perl_sv_utf8_upgrade()>
ad1d1c50 663
664=item *
665
7a4b5c08 666Speed up C<keys> on empty hash
ad1d1c50 667
5a00ee6a 668=back
669
670=head1 Installation and Configuration Improvements
671
672=head2 F<ext/> reorganisation
673
674The layout of directories in F<ext> has been revised. Specifically, all
675extensions are now flat, and at the top level, with C</> in pathnames
676replaced by C<->, so that F<ext/Data/Dumper/> is now F<ext/Data-Dumper/>,
677etc. The names of the extensions as specified to F<Configure>, and as
678reported by C<%Config::Config> under the keys C<dynamic_ext>,
679C<known_extensions>, C<nonxs_ext> and C<static_ext> have not changed, and
680still use C</>. Hence this change will not have any affect once perl is
429ee0aa 681installed. C<Safe> has been split out from being part of C<Opcode>, and
c3e6c235 682C<mro> is now an extension in its own right.
429ee0aa 683
684Nearly all dual-life modules have been moved from F<lib> to F<ext>, and will
685now appear as known C<nonxs_ext>. This will made no difference to the
686structure of an installed perl, nor will the modules installed differ,
687unless you run F<Configure> with options to specify an exact list of
688extensions to build. In this case, you will rapidly become aware that you
689need to add to your list, because various modules needed to complete the
690build, such as C<ExtUtils::ParseXS>, have now become extensions, and
691without them the build will fail well before it attempts to run the
692regression tests.
5a00ee6a 693
694=head2 Configuration improvements
695
696If C<vendorlib> and C<vendorarch> are the same, then they are only added to
697C<@INC> once.
698
699C<$Config{usedevel}> and the C-level C<PERL_USE_DEVEL> are now defined if
700perl is built with C<-Dusedevel>.
701
702F<Configure> will enable use of C<-fstack-protector>, to provide protection
703against stack-smashing attacks, if the compiler supports it.
704
705F<Configure> will now determine the correct prototypes for re-entrant
706functions, and for C<gconvert>, if you are using a C++ compiler rather
707than a C compiler.
708
709On Unix, if you build from a tree containing a git repository, the
710configuration process will note the commit hash you have checked out, for
711display in the output of C<perl -v> and C<perl -V>. Unpushed local commits
712are automatically added to the list of local patches displayed by
713C<perl -V>.
714
715=head2 Compilation improvements
716
717As part of the flattening of F<ext>, all extensions on all platforms are
718built by F<make_ext.pl>. This replaces the Unix-specific
719F<ext/util/make_ext>, VMS-specific F<make_ext.com> and Win32-specific
720F<win32/buildext.pl>.
721
722=head2 Platform Specific Changes
723
724=over 4
725
726=item AIX
727
7a4b5c08 728Removed F<libbsd> for AIX 5L and 6.1. Only C<flock()> was used from F<libbsd>.
5a00ee6a 729
730Removed F<libgdbm> for AIX 5L and 6.1. The F<libgdbm> is delivered as an
c3e6c235 731optional package with the AIX Toolbox. Unfortunately the 64 bit version
5a00ee6a 732is broken.
733
734Hints changes mean that AIX 4.2 should work again.
735
736=item Cygwin
737
738On Cygwin we now strip the last number from the DLL. This has been the
739behaviour in the cygwin.com build for years. The hints files have been
740updated.
741
81afb674 742=item DomainOS
743
744Support for Apollo DomainOS was removed in Perl 5.11.0
745
5a00ee6a 746=item FreeBSD
747
748The hints files now identify the correct threading libraries on FreeBSD 7
749and later.
750
751=item Irix
752
753We now work around a bizarre preprocessor bug in the Irix 6.5 compiler:
754C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't.
755
756=item Haiku
757
758Patches from the Haiku maintainers have been merged in. Perl should now
759build on Haiku.
760
7e35aa2a 761=item MachTen
762
763Support for Tenon Intersystems MachTen Unix layer for MacOS Classic was
764removed in Perl 5.11.0
765
81afb674 766=item MiNT
767
768Support for Atari MiNT was removed in Perl 5.11.0.
769
5a00ee6a 770=item MirOS BSD
771
772Perl should now build on MirOS BSD.
773
774=item NetBSD
775
776Hints now supports versions 5.*.
777
778=item Stratus VOS
779
780Various changes from Stratus have been merged in.
781
782=item Symbian
783
784There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
785
786=item Win32
787
788Improved message window handling means that C<alarm> and C<kill> messages
789will no longer be dropped under race conditions.
790
791=item VMS
792
793Reads from the in-memory temporary files of C<PerlIO::scalar> used to fail
794if C<$/> was set to a numeric reference (to indicate record-style reads).
795This is now fixed.
796
797VMS now supports C<getgrgid>.
798
799Many improvements and cleanups have been made to the VMS file name handling
800and conversion code.
801
802Enabling the C<PERL_VMS_POSIX_EXIT> logical name now encodes a POSIX exit
803status in a VMS condition value for better interaction with GNV's bash
804shell and other utilities that depend on POSIX exit values. See
805L<perlvms/"$?"> for details.
806
76e3c4a8 807C<File::Copy> now detects Unix compatibility mode on VMS.
ad1d1c50 808
5a00ee6a 809=back
810
811=head1 Selected Bug Fixes
812
813=over 4
814
038a5866 815=item *
5a00ee6a 816
ce979e27 817C<-I> on shebang line now adds directories in front of @INC
5a00ee6a 818as documented, and as does C<-I> when specified on the command-line.
5a00ee6a 819
76e3c4a8 820=item *
5a00ee6a 821
76e3c4a8 822C<kill> is now fatal when called on non-numeric process identifiers.
5a00ee6a 823Previously, an 'undef' process identifier would be interpreted as a request to
824kill process "0", which would terminate the current process group on POSIX
825systems. Since process identifiers are always integers, killing a non-numeric
826process is now fatal.
827
828=item *
829
8305.10.0 inadvertently disabled an optimisation, which caused a measurable
831performance drop in list assignment, such as is often used to assign
832function parameters from C<@_>. The optimisation has been re-instated, and
833the performance regression fixed.
834
835=item *
836
837Fixed memory leak on C<while (1) { map 1, 1 }> [RT #53038].
838
839=item *
840
841Some potential coredumps in PerlIO fixed [RT #57322,54828].
842
843=item *
844
845The debugger now works with lvalue subroutines.
846
847=item *
848
849The debugger's C<m> command was broken on modules that defined constants
850[RT #61222].
851
852=item *
853
7a4b5c08 854C<crypt> and string complement could return tainted values for untainted
5a00ee6a 855arguments [RT #59998].
856
857=item *
858
038a5866 859The C<-i>I<.suffix> command-line switch now recreates the file using
5a00ee6a 860restricted permissions, before changing its mode to match the original
861file. This eliminates a potential race condition [RT #60904].
862
863=item *
864
865On some UNIX systems, the value in C<$?> would not have the top bit set
866(C<$? & 128>) even if the child core dumped.
867
868=item *
869
038a5866 870Under some circumstances, C<$^R> could incorrectly become undefined
5a00ee6a 871[RT #57042].
872
873=item *
874
a048364f 875In the XS API, various hash functions, when passed a pre-computed hash where
876the key is UTF-8, might result in an incorrect lookup.
5a00ee6a 877
878=item *
879
a048364f 880XS code including F<XSUB.h> before F<perl.h> gave a compile-time error
5a00ee6a 881[RT #57176].
882
883=item *
884
885C<< $object->isa('Foo') >> would report false if the package C<Foo> didn't
886exist, even if the object's C<@ISA> contained C<Foo>.
887
888=item *
889
890Various bugs in the new-to 5.10.0 mro code, triggered by manipulating
891C<@ISA>, have been found and fixed.
892
893=item *
894
895Bitwise operations on references could crash the interpreter, e.g.
896C<$x=\$y; $x |= "foo"> [RT #54956].
897
898=item *
899
900Patterns including alternation might be sensitive to the internal UTF-8
901representation, e.g.
902
903 my $byte = chr(192);
904 my $utf8 = chr(192); utf8::upgrade($utf8);
905 $utf8 =~ /$byte|X}/i; # failed in 5.10.0
906
907=item *
908
909Within UTF8-encoded Perl source files (i.e. where C<use utf8> is in
910effect), double-quoted literal strings could be corrupted where a C<\xNN>,
911C<\0NNN> or C<\N{}> is followed by a literal character with ordinal value
912greater than 255 [RT #59908].
913
914=item *
915
916C<B::Deparse> failed to correctly deparse various constructs:
917C<readpipe STRING> [RT #62428], C<CORE::require(STRING)> [RT #62488],
918C<sub foo(_)> [RT #62484].
919
920=item *
921
7a4b5c08 922Using C<setpgrp> with no arguments could corrupt the perl stack.
5a00ee6a 923
924=item *
925
926The block form of C<eval> is now specifically trappable by C<Safe> and
927C<ops>. Previously it was erroneously treated like string C<eval>.
928
929=item *
930
931In 5.10.0, the two characters C<[~> were sometimes parsed as the smart
932match operator (C<~~>) [RT #63854].
933
934=item *
935
936In 5.10.0, the C<*> quantifier in patterns was sometimes treated as
937C<{0,32767}> [RT #60034, #60464]. For example, this match would fail:
938
939 ("ab" x 32768) =~ /^(ab)*$/
940
941=item *
942
943C<shmget> was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
944
945=item *
946
947Using C<next> or C<last> to exit a C<given> block no longer produces a
948spurious warning like the following:
949
950 Exiting given via last at foo.pl line 123
951
952=item *
953
954On Windows, C<'.\foo'> and C<'..\foo'> were treated differently than
955C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492].
956
957=item *
958
959Assigning a format to a glob could corrupt the format; e.g.:
960
961 *bar=*foo{FORMAT}; # foo format now bad
962
963=item *
964
965Attempting to coerce a typeglob to a string or number could cause an
966assertion failure. The correct error message is now generated,
967C<Can't coerce GLOB to I<$type>>.
968
969=item *
970
971Under C<use filetest 'access'>, C<-x> was using the wrong access mode. This
972has been fixed [RT #49003].
973
974=item *
975
976C<length> on a tied scalar that returned a Unicode value would not be
977correct the first time. This has been fixed.
978
979=item *
980
981Using an array C<tie> inside in array C<tie> could SEGV. This has been
982fixed. [RT #51636]
983
984=item *
985
986A race condition inside C<PerlIOStdio_close()> has been identified and
987fixed. This used to cause various threading issues, including SEGVs.
988
989=item *
990
991In C<unpack>, the use of C<()> groups in scalar context was internally
992placing a list on the interpreter's stack, which manifested in various
993ways, including SEGVs. This is now fixed [RT #50256].
994
995=item *
996
997Magic was called twice in C<substr>, C<\&$x>, C<tie $x, $m> and C<chop>.
998These have all been fixed.
999
1000=item *
1001
1002A 5.10.0 optimisation to clear the temporary stack within the implicit
1003loop of C<s///ge> has been reverted, as it turned out to be the cause of
c3e6c235 1004obscure bugs in seemingly unrelated parts of the interpreter [commit
5a00ee6a 1005ef0d4e17921ee3de].
1006
1007=item *
1008
1009The line numbers for warnings inside C<elsif> are now correct.
1010
1011=item *
1012
1013The C<..> operator now works correctly with ranges whose ends are at or
1014close to the values of the smallest and largest integers.
1015
1016=item *
1017
1018C<binmode STDIN, ':raw'> could lead to segmentation faults on some platforms.
1019This has been fixed [RT #54828].
1020
1021=item *
1022
1023An off-by-one error meant that C<index $str, ...> was effectively being
1024executed as C<index "$str\0", ...>. This has been fixed [RT #53746].
1025
1026=item *
1027
1028Various leaks associated with named captures in regexes have been fixed
1029[RT #57024].
1030
1031=item *
1032
1033A weak reference to a hash would leak. This was affecting C<DBI>
1034[RT #56908].
1035
1036=item *
1037
1038Using (?|) in a regex could cause a segfault [RT #59734].
1039
1040=item *
1041
1042Use of a UTF-8 C<tr//> within a closure could cause a segfault [RT #61520].
1043
1044=item *
1045
7a4b5c08 1046Calling C<Perl_sv_chop()> or otherwise upgrading an SV could result in an
5a00ee6a 1047unaligned 64-bit access on the SPARC architecture [RT #60574].
1048
1049=item *
1050
1051In the 5.10.0 release, C<inc_version_list> would incorrectly list
1052C<5.10.*> after C<5.8.*>; this affected the C<@INC> search order
1053[RT #67628].
1054
1055=item *
1056
1057In 5.10.0, C<pack "a*", $tainted_value> returned a non-tainted value
1058[RT #52552].
1059
1060=item *
1061
1062In 5.10.0, C<printf> and C<sprintf> could produce the fatal error
1063C<panic: utf8_mg_pos_cache_update> when printing UTF-8 strings
1064[RT #62666].
1065
1066=item *
1067
1068In the 5.10.0 release, a dynamically created C<AUTOLOAD> method might be
1069missed (method cache issue) [RT #60220,60232].
1070
1071=item *
1072
1073In the 5.10.0 release, a combination of C<use feature> and C<//ee> could
1074cause a memory leak [RT #63110].
1075
1076=item *
1077
1078C<-C> on the shebang (C<#!>) line is once more permitted if it is also
1079specified on the command line. C<-C> on the shebang line used to be a
1080silent no-op I<if> it was not also on the command line, so perl 5.10.0
1081disallowed it, which broke some scripts. Now perl checks whether it is
1082also on the command line and only dies if it is not [RT #67880].
1083
1084=item *
1085
1086In 5.10.0, certain types of re-entrant regular expression could crash,
1087or cause the following assertion failure [RT #60508]:
1088
1089 Assertion rx->sublen >= (s - rx->subbeg) + i failed
1090
7f0da121 1091=item *
1092
1093Previously missing files from Unicode 5.1 Character Database are now included.
1094
01ad23f5 1095=item *
1096
1097C<TMPDIR> is now honored when opening an anonymous temporary file
1098
5a00ee6a 1099=back
1100
1101=head1 New or Changed Diagnostics
1102
1103=over 4
1104
1105=item C<panic: sv_chop %s>
1106
1107This new fatal error occurs when the C routine C<Perl_sv_chop()> was
1108passed a position that is not within the scalar's string buffer. This
1109could be caused by buggy XS code, and at this point recovery is not
1110possible.
1111
1112=item C<Can't locate package %s for the parents of %s>
1113
1114This warning has been removed. In general, it only got produced in
1115conjunction with other warnings, and removing it allowed an ISA lookup
1116optimisation to be added.
1117
1118=item C<v-string in use/require is non-portable>
1119
1120This warning has been removed.
1121
1122=item C<Deep recursion on subroutine "%s">
1123
1124It is now possible to change the depth threshold for this warning from the
1125default of 100, by recompiling the F<perl> binary, setting the C
1126pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value.
1127
1128=back
1129
1130=head1 Changed Internals
1131
1132=over 4
1133
1134=item *
1135
ef87f8cb 1136TODO: C<SVt_RV> is gone. RVs are now stored in IVs
1137
1138=item *
1139
1140TODO: REGEXPs are first class
1141
1142=item *
1143
1144TODO: OOK is reworked, such that an OOKed scalar is PV not PVIV
1145
1146=item *
1147
5a00ee6a 1148The J.R.R. Tolkien quotes at the head of C source file have been checked and
1149proper citations added, thanks to a patch from Tom Christiansen.
1150
1151=item *
1152
7a4b5c08 1153C<Perl_vcroak()> now accepts a null first argument. In addition, a full audit
5a00ee6a 1154was made of the "not NULL" compiler annotations, and those for several
1155other internal functions were corrected.
1156
1157=item *
1158
1159New macros C<dSAVEDERRNO>, C<dSAVE_ERRNO>, C<SAVE_ERRNO>, C<RESTORE_ERRNO>
1160have been added to formalise the temporary saving of the C<errno>
1161variable.
1162
1163=item *
1164
1165The function C<Perl_sv_insert_flags> has been added to augment
1166C<Perl_sv_insert>.
1167
1168=item *
1169
1170The function C<Perl_newSV_type(type)> has been added, equivalent to
1171C<Perl_newSV()> followed by C<Perl_sv_upgrade(type)>.
1172
1173=item *
1174
1175The function C<Perl_newSVpvn_flags()> has been added, equivalent to
1176C<Perl_newSVpvn()> and then performing the action relevant to the flag.
1177
1178Two flag bits are currently supported.
1179
1180=over 4
1181
1182=item C<SVf_UTF8>
1183
1184This will call C<SvUTF8_on()> for you. (Note that this does not convert an
1185sequence of ISO 8859-1 characters to UTF-8). A wrapper, C<newSVpvn_utf8()>
1186is available for this.
1187
1188=item C<SVs_TEMP>
1189
7a4b5c08 1190Call C<Perl_sv_2mortal()> on the new SV.
5a00ee6a 1191
1192=back
1193
1194There is also a wrapper that takes constant strings, C<newSVpvs_flags()>.
1195
1196=item *
1197
1198The function C<Perl_croak_xs_usage> has been added as a wrapper to
1199C<Perl_croak>.
1200
1201=item *
1202
1203The functions C<PerlIO_find_layer> and C<PerlIO_list_alloc> are now
1204exported.
1205
1206=item *
1207
1208C<PL_na> has been exterminated from the core code, replaced by local STRLEN
1209temporaries, or C<*_nolen()> calls. Either approach is faster than C<PL_na>,
1210which is a pointer deference into the interpreter structure under ithreads,
1211and a global variable otherwise.
1212
1213=item *
1214
7a4b5c08 1215C<Perl_mg_free()> used to leave freed memory accessible via C<SvMAGIC()> on
5a00ee6a 1216the scalar. It now updates the linked list to remove each piece of magic
1217as it is freed.
1218
1219=item *
1220
1221Under ithreads, the regex in C<PL_reg_curpm> is now reference counted. This
1222eliminates a lot of hackish workarounds to cope with it not being reference
1223counted.
1224
1225=item *
1226
1227C<Perl_mg_magical()> would sometimes incorrectly turn on C<SvRMAGICAL()>.
1228This has been fixed.
1229
1230=item *
1231
1232The I<public> IV and NV flags are now not set if the string value has
1233trailing "garbage". This behaviour is consistent with not setting the
1234public IV or NV flags if the value is out of range for the type.
1235
1236=item *
1237
1238SV allocation tracing has been added to the diagnostics enabled by C<-Dm>.
1239The tracing can alternatively output via the C<PERL_MEM_LOG> mechanism, if
1240that was enabled when the F<perl> binary was compiled.
1241
1242=item *
1243
d7ea0f56 1244Smartmatch resolution tracing has been added as a new diagnostic. Use C<-DM> to
1245enable it.
1246
7f0da121 1247
1248=item *
1249
1250A new debugging flag C<-DB> now dumps subroutine definitions, leaving
1251C<-Dx> for its original purpose of dumping syntax trees.
1252
d7ea0f56 1253=item *
1254
5a00ee6a 1255Uses of C<Nullav>, C<Nullcv>, C<Nullhv>, C<Nullop>, C<Nullsv> etc have been
1256replaced by C<NULL> in the core code, and non-dual-life modules, as C<NULL>
1257is clearer to those unfamiliar with the core code.
1258
1259=item *
1260
1261A macro C<MUTABLE_PTR(p)> has been added, which on (non-pedantic) gcc will
1262not cast away C<const>, returning a C<void *>. Macros C<MUTABLE_SV(av)>,
1263C<MUTABLE_SV(cv)> etc build on this, casting to C<AV *> etc without
1264casting away C<const>. This allows proper compile-time auditing of
1265C<const> correctness in the core, and helped picked up some errors (now
1266fixed).
1267
1268=item *
1269
1270Macros C<mPUSHs()> and C<mXPUSHs()> have been added, for pushing SVs on the
1271stack and mortalizing them.
1272
1273=item *
1274
1275Use of the private structure C<mro_meta> has changed slightly. Nothing
1276outside the core should be accessing this directly anyway.
1277
1278=item *
1279
76e3c4a8 1280A new tool, F<Porting/expand-macro.pl> has been added, that allows you
5a00ee6a 1281to view how a C preprocessor macro would be expanded when compiled.
1282This is handy when trying to decode the macro hell that is the perl
1283guts.
1284
1285=back
1286
1287=head1 New Tests
1288
1289Many modules updated from CPAN incorporate new tests.
1290
1291Several tests that have the potential to hang forever if they fail now
1292incorporate a "watchdog" functionality that will kill them after a timeout,
1293which helps ensure that C<make test> and C<make test_harness> run to
1294completion automatically. (Jerry Hedden).
1295
1296Some core-specific tests have been added:
1297
1298=over 4
1299
1300=item t/comp/retainedlines.t
1301
1302Check that the debugger can retain source lines from C<eval>.
1303
1304=item t/io/perlio_fail.t
1305
1306Check that bad layers fail.
1307
1308=item t/io/perlio_leaks.t
1309
1310Check that PerlIO layers are not leaking.
1311
1312=item t/io/perlio_open.t
1313
1314Check that certain special forms of open work.
1315
1316=item t/io/perlio.t
1317
1318General PerlIO tests.
1319
1320=item t/io/pvbm.t
1321
1322Check that there is no unexpected interaction between the internal types
1323C<PVBM> and C<PVGV>.
1324
1325=item t/mro/package_aliases.t
1326
1327Check that mro works properly in the presence of aliased packages.
1328
1329=item t/op/dbm.t
1330
1331Tests for C<dbmopen> and C<dbmclose>.
1332
1333=item t/op/index_thr.t
1334
1335Tests for the interaction of C<index> and threads.
1336
1337=item t/op/pat_thr.t
1338
1339Tests for the interaction of esoteric patterns and threads.
1340
1341=item t/op/qr_gc.t
1342
1343Test that C<qr> doesn't leak.
1344
1345=item t/op/reg_email_thr.t
1346
1347Tests for the interaction of regex recursion and threads.
1348
1349=item t/op/regexp_qr_embed_thr.t
1350
1351Tests for the interaction of patterns with embedded C<qr//> and threads.
1352
1353=item t/op/regexp_unicode_prop.t
1354
1355Tests for Unicode properties in regular expressions.
1356
1357=item t/op/regexp_unicode_prop_thr.t
1358
1359Tests for the interaction of Unicode properties and threads.
1360
1361=item t/op/reg_nc_tie.t
1362
1363Test the tied methods of C<Tie::Hash::NamedCapture>.
1364
eeab323f 1365=item t/op/reg_posixcc.t
5a00ee6a 1366
1367Check that POSIX character classes behave consistently.
1368
1369=item t/op/re.t
1370
1371Check that exportable C<re> functions in F<universal.c> work.
1372
1373=item t/op/setpgrpstack.t
1374
1375Check that C<setpgrp> works.
1376
1377=item t/op/substr_thr.t
1378
1379Tests for the interaction of C<substr> and threads.
1380
1381=item t/op/upgrade.t
1382
1383Check that upgrading and assigning scalars works.
1384
1385=item t/uni/lex_utf8.t
1386
1387Check that Unicode in the lexer works.
1388
1389=item t/uni/tie.t
1390
1391Check that Unicode and C<tie> work.
1392
1393=back
1394
1395=head1 Known Problems
1396
1397This is a list of some significant unfixed bugs, which are regressions
1398from either 5.10.0 or 5.8.x.
1399
1400=over 4
1401
1402=item *
1403
1404C<List::Util::first> misbehaves in the presence of a lexical C<$_>
1405(typically introduced by C<my $_> or implicitly by C<given>). The variable
1406which gets set for each iteration is the package variable C<$_>, not the
1407lexical C<$_> [RT #67694].
1408
1409A similar issue may occur in other modules that provide functions which
1410take a block as their first argument, like
1411
1412 foo { ... $_ ...} list
1413
1414=item *
1415
1416The C<charnames> pragma may generate a run-time error when a regex is
1417interpolated [RT #56444]:
1418
1419 use charnames ':full';
1420 my $r1 = qr/\N{THAI CHARACTER SARA I}/;
1421 "foo" =~ $r1; # okay
1422 "foo" =~ /$r1+/; # runtime error
1423
1424A workaround is to generate the character outside of the regex:
1425
1426 my $a = "\N{THAI CHARACTER SARA I}";
1427 my $r1 = qr/$a/;
1428
1429=item *
1430
1431Some regexes may run much more slowly when run in a child thread compared
1432with the thread the pattern was compiled into [RT #55600].
1433
5a00ee6a 1434=back
1435
1436=head1 Deprecations
1437
1438The following items are now deprecated.
1439
1440=over 4
1441
1442=item *
1443
1444C<Switch> is buggy and should be avoided. From perl 5.11.0 onwards, it is
1445intended that any use of the core version of this module will emit a
1446warning, and that the module will eventually be removed from the core
1447(probably in perl 5.14.0). See L<perlsyn/"Switch statements"> for its
1448replacement.
1449
1450=item *
1451
0f97ff05 1452The following modules will be removed from the core distribution in a future
1453release, and should be installed from CPAN instead. Distributions on CPAN
1454which require these should add them to their prerequisites. The core versions
1455of these modules warnings will issue a deprecation warning.
1456
1457=over
1458
1459=item *
1460
3f369777 1461C<Class::ISA>
1462
1463=item *
1464
0f97ff05 1465C<Pod::Plainer>
1466
3f369777 1467=item *
1468
1469C<Shell>
1470
0f97ff05 1471=back
1472
20e7cb7b 1473Currently support to install from CPAN without a I<force> is C<TODO> in CPAN
1474and CPANPLUS. This will be addressed before 5.12.0 ships.
1475
0f97ff05 1476=item *
1477
ad1d1c50 1478C<suidperl> has been removed. It used to provide a mechanism to
5a00ee6a 1479emulate setuid permission bits on systems that don't support it properly.
1480
ad1d1c50 1481=item *
1482
1483Deprecate assignment to $[
1484
1485=item *
1486
1487Remove attrs, which has been deprecated since 1999/10/02.
1488
1489=item *
1490
1491Deprecate use of the attribute :locked on subroutines.
1492
1493=item *
1494
1495Deprecate using "locked" with the attributes pragma.
1496
1497=item *
1498
1499Deprecate using "unique" with the attributes pragma.
1500
1501=item *
1502
c3e6c235 1503warn if ++ or -- are unable to change the value because it's beyond the limit of representation
ad1d1c50 1504
1505This uses a new warnings category: "imprecision".
1506
ad1d1c50 1507=item *
1508
1509Make lc/uc/lcfirst/ucfirst warn when passed undef.
1510
1511=item *
1512
1513Show constant in "Useless use of a constant in void context"
1514
1515=item *
1516
1517Make the new warning report undef constants as undef
1518
1519=item *
1520
1521Add a new warning, "Prototype after '%s'"
1522
1523=item *
1524
1525Tweak the "Illegal character in prototype" warning so it's more precise when reporting illegal characters after _
1526
1527=item *
1528
1529Unintented interpolation of $\ in regex
1530
1531=item *
1532
1533Make overflow warnings in gmtime/localtime only occur when warnings are on
1534
1535=item *
1536
1537Improve mro merging error messages.
1538
1539They are now very similar to those produced by Algorithm::C3.
1540
1541=item *
1542
1543Amelioration of the error message "Unrecognized character %s in column %d"
1544
1545Changes the error message to "Unrecognized character %s; marked by <--
1546HERE after %s<-- HERE near column %d". This should make it a little
1547simpler to spot and correct the suspicious character.
1548
1549=item *
1550
1551Explicitely point to $. when it causes an uninitialized warning for ranges in scalar context
1552
d7ea0f56 1553
c3e6c235 1554=item *
d7ea0f56 1555
1556Deprecated numerous Perl 4-era libraries:
1557
1558F<termcap.pl>, F<tainted.pl>, F<stat.pl>, F<shellwords.pl>, F<pwd.pl>,
1559F<open3.pl>, F<open2.pl>, F<newgetopt.pl>, F<look.pl>, F<find.pl>,
1560F<finddepth.pl>, F<importenv.pl>, F<hostname.pl>, F<getopts.pl>,
1561F<getopt.pl>, F<getcwd.pl>, F<flush.pl>, F<fastcwd.pl>, F<exceptions.pl>,
1562F<ctime.pl>, F<complete.pl>, F<cacheout.pl>, F<bigrat.pl>, F<bigint.pl>,
1563F<bigfloat.pl>, F<assert.pl>, F<abbrev.pl>, F<dotsh.pl>, and
1564F<timelocal.pl> are all now deprecated. Using them will incur a warning.
1565
5a00ee6a 1566=back
1567
1568=head1 Acknowledgements
1569
0cd7f36e 1570Some of the work in this release was funded by a TPF grant funded by
1571Dijkmat BV, The Netherlands.
5a00ee6a 1572
1573Steffen Mueller and David Golden in particular helped getting CPAN modules
1574polished and synchronised with their in-core equivalents.
1575
1576Craig Berry was tireless in getting maint to run under VMS, no matter how
1577many times we broke it for him.
1578
1579The other core committers contributed most of the changes, and applied most
1580of the patches sent in by the hundreds of contributors listed in F<AUTHORS>.
7120b314 1581
ad1d1c50 1582Much of the work of categorizing changes in this perldelta file was contributed
1583by the following porters using changelogger.bestpractical.com:
1584
1585Nicholas Clark, leon, shawn, alexm, rjbs, rafl, Pedro Melo, brunorc,
1586anonymous, ☄, Tom Hukins, anonymous, Jesse, dagolden, Moritz Onken,
1587Mark Fowler, chorny, anonymous, tmtm
1588
5a00ee6a 1589Finally, thanks to Larry Wall, without whom none of this would be
1590necessary.
7120b314 1591
1592=head1 Reporting Bugs
1593
1594If you find what you think is a bug, you might check the articles
1595recently posted to the comp.lang.perl.misc newsgroup and the perl
5a00ee6a 1596bug database at http://rt.perl.org/perlbug/ . There may also be
7120b314 1597information at http://www.perl.org/ , the Perl Home Page.
1598
1599If you believe you have an unreported bug, please run the B<perlbug>
1600program included with your release. Be sure to trim your bug down
1601to a tiny but sufficient test case. Your bug report, along with the
1602output of C<perl -V>, will be sent off to perlbug@perl.org to be
1603analysed by the Perl porting team.
1604
49f8307e 1605If the bug you are reporting has security implications, which make it
1606inappropriate to send to a publicly archived mailing list, then please send
1607it to perl5-security-report@perl.org. This points to a closed subscription
1608unarchived mailing list, which includes all the core committers, who be able
1609to help assess the impact of issues, figure out a resolution, and help
1610co-ordinate the release of patches to mitigate or fix the problem across all
5a00ee6a 1611platforms on which Perl is supported. Please only use this address for
1612security issues in the Perl core, not for modules independently
1613distributed on CPAN.
49f8307e 1614
7120b314 1615=head1 SEE ALSO
1616
5a00ee6a 1617The F<Changes> file for an explanation of how to view exhaustive details
1618on what changed.
7120b314 1619
1620The F<INSTALL> file for how to build Perl.
1621
1622The F<README> file for general stuff.
1623
1624The F<Artistic> and F<Copying> files for copyright information.
1625
1626=cut
ad1d1c50 1627
1628