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