perlrepository: Add example of why tests need running
[perl.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<$,> flexibility
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 locally 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-E<gt>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 =back
582
583 =head1 Changes to Existing Documentation
584
585 The various large F<Changes*> files (which listed every change made to perl
586 over the last 18 years) have been removed, and replaced by a small file,
587 also called F<Changes>, which just explains how that same information may
588 be extracted from the git version control system.
589
590 The file F<Porting/patching.pod> has been deleted, as it mainly described
591 interacting with the old Perforce-based repository, which is now obsolete.
592 Information still relevant has been moved to L<perlrepository>.
593
594 L<perlapi>, L<perlintern>, L<perlmodlib> and L<perltoc> are now all
595 generated at build time, rather than being shipped as part of the release.
596
597 =over
598
599 =item *
600
601 Documented -X overloading.
602
603 =item *
604
605 Documented that C<when()> treats specially most of the filetest operators
606
607 =item *
608
609 Documented when as a syntax modifier
610
611 =item *
612
613 Eliminated "Old Perl threads tutorial", which describes 5005 threads.
614
615 F<pod/perlthrtut.pod> is the same material reworked for ithreads.
616
617 =item *
618
619 Correct previous documentation: v-strings are not deprecated
620
621 With version objects, we need them to use MODULE VERSION syntax.  This
622 patch removes the deprecation note.
623
624 =item *
625
626 Added security contact information to L<perlsec>
627
628 =back
629
630 =head1 Performance Enhancements
631
632
633 =over 4
634
635 =item *
636
637 A new internal cache means that C<isa()> will often be faster.
638
639 =item *
640
641 The implementation of C<C3> Method Resolution Order has been optimised -
642 linearisation for classes with single inheritance is 40% faster. Performance
643 for multiple inheritance is unchanged.
644
645 =item *
646
647 Under C<use locale>, the locale-relevant information is now cached on
648 read-only values, such as the list returned by C<keys %hash>. This makes
649 operations such as C<sort keys %hash> in the scope of C<use locale> much
650 faster.
651
652 =item *
653
654 Empty C<DESTROY> methods are no longer called.
655
656 =item *
657
658 Faster C<Perl_sv_utf8_upgrade()>
659
660 =item *
661
662 Speed up C<keys> on empty hash
663
664 =back
665
666 =head1 Installation and Configuration Improvements
667
668 =head2 F<ext/> reorganisation
669
670 The layout of directories in F<ext> has been revised. Specifically, all
671 extensions are now flat, and at the top level, with C</> in pathnames
672 replaced by C<->, so that F<ext/Data/Dumper/> is now F<ext/Data-Dumper/>,
673 etc.  The names of the extensions as specified to F<Configure>, and as
674 reported by C<%Config::Config> under the keys C<dynamic_ext>,
675 C<known_extensions>, C<nonxs_ext> and C<static_ext> have not changed, and
676 still use C</>. Hence this change will not have any affect once perl is
677 installed. C<Safe> has been split out from being part of C<Opcode>, and
678 C<mro> is now an extension in its own right.
679
680 Nearly all dual-life modules have been moved from F<lib> to F<ext>, and will
681 now appear as known C<nonxs_ext>. This will made no difference to the
682 structure of an installed perl, nor will the modules installed differ,
683 unless you run F<Configure> with options to specify an exact list of
684 extensions to build. In this case, you will rapidly become aware that you
685 need to add to your list, because various modules needed to complete the
686 build, such as C<ExtUtils::ParseXS>, have now become extensions, and
687 without them the build will fail well before it attempts to run the
688 regression tests.
689
690 =head2 Configuration improvements
691
692 If C<vendorlib> and C<vendorarch> are the same, then they are only added to
693 C<@INC> once.
694
695 C<$Config{usedevel}> and the C-level C<PERL_USE_DEVEL> are now defined if
696 perl is built with  C<-Dusedevel>.
697
698 F<Configure> will enable use of C<-fstack-protector>, to provide protection
699 against stack-smashing attacks, if the compiler supports it.
700
701 F<Configure> will now determine the correct prototypes for re-entrant
702 functions, and for C<gconvert>, if you are using a C++ compiler rather
703 than a C compiler.
704
705 On Unix, if you build from a tree containing a git repository, the
706 configuration process will note the commit hash you have checked out, for
707 display in the output of C<perl -v> and C<perl -V>. Unpushed local commits
708 are automatically added to the list of local patches displayed by
709 C<perl -V>.
710
711 =head2 Compilation improvements
712
713 As part of the flattening of F<ext>, all extensions on all platforms are
714 built by F<make_ext.pl>. This replaces the Unix-specific
715 F<ext/util/make_ext>, VMS-specific F<make_ext.com> and Win32-specific
716 F<win32/buildext.pl>.
717
718 =head2 Platform Specific Changes
719
720 =over 4
721
722 =item AIX
723
724 Removed F<libbsd> for AIX 5L and 6.1. Only C<flock()> was used from F<libbsd>.
725
726 Removed F<libgdbm> for AIX 5L and 6.1. The F<libgdbm> is delivered as an
727 optional package with the AIX Toolbox. Unfortunately the 64 bit version
728 is broken.
729
730 Hints changes mean that AIX 4.2 should work again.
731
732 =item Cygwin
733
734 On Cygwin we now strip the last number from the DLL. This has been the
735 behaviour in the cygwin.com build for years. The hints files have been
736 updated.
737
738 =item DomainOS
739
740 Support for Apollo DomainOS was removed in Perl 5.11.0
741
742 =item FreeBSD
743
744 The hints files now identify the correct threading libraries on FreeBSD 7
745 and later.
746
747 =item Irix
748
749 We now work around a bizarre preprocessor bug in the Irix 6.5 compiler:
750 C<cc -E -> unfortunately goes into K&R mode, but C<cc -E file.c> doesn't.
751
752 =item Haiku
753
754 Patches from the Haiku maintainers have been merged in. Perl should now
755 build on Haiku.
756
757 =item MachTen
758
759 Support for Tenon Intersystems MachTen Unix layer for MacOS Classic was
760 removed in Perl 5.11.0
761
762 =item MiNT
763
764 Support for Atari MiNT was removed in Perl 5.11.0.
765
766 =item MirOS BSD
767
768 Perl should now build on MirOS BSD.
769
770 =item NetBSD
771
772 Hints now supports versions 5.*.
773
774 =item Stratus VOS
775
776 Various changes from Stratus have been merged in.
777
778 =item Symbian
779
780 There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
781
782 =item Win32
783
784 Improved message window handling means that C<alarm> and C<kill> messages
785 will no longer be dropped under race conditions.
786
787 =item VMS
788
789 Reads from the in-memory temporary files of C<PerlIO::scalar> used to fail
790 if C<$/> was set to a numeric reference (to indicate record-style reads).
791 This is now fixed.
792
793 VMS now supports C<getgrgid>.
794
795 Many improvements and cleanups have been made to the VMS file name handling
796 and conversion code.
797
798 Enabling the C<PERL_VMS_POSIX_EXIT> logical name now encodes a POSIX exit
799 status in a VMS condition value for better interaction with GNV's bash
800 shell and other utilities that depend on POSIX exit values.  See
801 L<perlvms/"$?"> for details.
802
803 C<File::Copy> now detects Unix compatibility mode on VMS.
804
805 =back
806
807 =head1 Selected Bug Fixes
808
809 =over 4
810
811 =item *
812
813 C<-I> on shebang line now adds directories in front of @INC
814 as documented, and as does C<-I> when specified on the command-line.
815
816 =item *
817
818 C<kill> is now fatal when called on non-numeric process identifiers.
819 Previously, an 'undef' process identifier would be interpreted as a request to
820 kill process "0", which would terminate the current process group on POSIX
821 systems.  Since process identifiers are always integers, killing a non-numeric
822 process is now fatal.
823
824 =item *
825
826 5.10.0 inadvertently disabled an optimisation, which caused a measurable
827 performance drop in list assignment, such as is often used to assign
828 function parameters from C<@_>. The optimisation has been re-instated, and
829 the performance regression fixed.
830
831 =item *
832
833 Fixed memory leak on C<while (1) { map 1, 1 }> [RT #53038].
834
835 =item *
836
837 Some potential coredumps in PerlIO fixed [RT #57322,54828].
838
839 =item *
840
841 The debugger now works with lvalue subroutines.
842
843 =item *
844
845 The debugger's C<m> command was broken on modules that defined constants
846 [RT #61222].
847
848 =item *
849
850 C<crypt> and string complement could return tainted values for untainted
851 arguments [RT #59998].
852
853 =item *
854
855 The C<-i>I<.suffix> command-line switch now recreates the file using
856 restricted permissions, before changing its mode to match the original
857 file. This eliminates a potential race condition [RT #60904].
858
859 =item *
860
861 On some Unix systems, the value in C<$?> would not have the top bit set
862 (C<$? & 128>) even if the child core dumped.
863
864 =item *
865
866 Under some circumstances, C<$^R> could incorrectly become undefined
867 [RT #57042].
868
869 =item *
870
871 In the XS API, various hash functions, when passed a pre-computed hash where
872 the key is UTF-8, might result in an incorrect lookup.
873
874 =item *
875
876 XS code including F<XSUB.h> before F<perl.h> gave a compile-time error
877 [RT #57176].
878
879 =item *
880
881 C<< $object-E<gt>isa('Foo') >> would report false if the package C<Foo> didn't
882 exist, even if the object's C<@ISA> contained C<Foo>.
883
884 =item *
885
886 Various bugs in the new-to 5.10.0 mro code, triggered by manipulating
887 C<@ISA>, have been found and fixed.
888
889 =item *
890
891 Bitwise operations on references could crash the interpreter, e.g.
892 C<$x=\$y; $x |= "foo"> [RT #54956].
893
894 =item *
895
896 Patterns including alternation might be sensitive to the internal UTF-8
897 representation, e.g.
898
899     my $byte = chr(192);
900     my $utf8 = chr(192); utf8::upgrade($utf8);
901     $utf8 =~ /$byte|X}/i;       # failed in 5.10.0
902
903 =item *
904
905 Within UTF8-encoded Perl source files (i.e. where C<use utf8> is in
906 effect), double-quoted literal strings could be corrupted where a C<\xNN>,
907 C<\0NNN> or C<\N{}> is followed by a literal character with ordinal value
908 greater than 255 [RT #59908].
909
910 =item *
911
912 C<B::Deparse> failed to correctly deparse various constructs:
913 C<readpipe STRING> [RT #62428], C<CORE::require(STRING)> [RT #62488],
914 C<sub foo(_)> [RT #62484].
915
916 =item *
917
918 Using C<setpgrp> with no arguments could corrupt the perl stack.
919
920 =item *
921
922 The block form of C<eval> is now specifically trappable by C<Safe> and
923 C<ops>.  Previously it was erroneously treated like string C<eval>.
924
925 =item *
926
927 In 5.10.0, the two characters C<[~> were sometimes parsed as the smart
928 match operator (C<~~>) [RT #63854].
929
930 =item *
931
932 In 5.10.0, the C<*> quantifier in patterns was sometimes treated as
933 C<{0,32767}> [RT #60034, #60464]. For example, this match would fail:
934
935     ("ab" x 32768) =~ /^(ab)*$/
936
937 =item *
938
939 C<shmget> was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
940
941 =item *
942
943 Using C<next> or C<last> to exit a C<given> block no longer produces a
944 spurious warning like the following:
945
946     Exiting given via last at foo.pl line 123
947
948 =item *
949
950 On Windows, C<'.\foo'> and C<'..\foo'>  were treated differently than
951 C<'./foo'> and C<'../foo'> by C<do> and C<require> [RT #63492].
952
953 =item *
954
955 Assigning a format to a glob could corrupt the format; e.g.:
956
957      *bar=*foo{FORMAT}; # foo format now bad
958
959 =item *
960
961 Attempting to coerce a typeglob to a string or number could cause an
962 assertion failure. The correct error message is now generated,
963 C<Can't coerce GLOB to I<$type>>.
964
965 =item *
966
967 Under C<use filetest 'access'>, C<-x> was using the wrong access mode. This
968 has been fixed [RT #49003].
969
970 =item *
971
972 C<length> on a tied scalar that returned a Unicode value would not be
973 correct the first time. This has been fixed.
974
975 =item *
976
977 Using an array C<tie> inside in array C<tie> could SEGV. This has been
978 fixed. [RT #51636]
979
980 =item *
981
982 A race condition inside C<PerlIOStdio_close()> has been identified and
983 fixed. This used to cause various threading issues, including SEGVs.
984
985 =item *
986
987 In C<unpack>, the use of C<()> groups in scalar context was internally
988 placing a list on the interpreter's stack, which manifested in various
989 ways, including SEGVs.  This is now fixed [RT #50256].
990
991 =item *
992
993 Magic was called twice in C<substr>, C<\&$x>, C<tie $x, $m> and C<chop>.
994 These have all been fixed.
995
996 =item *
997
998 A 5.10.0 optimisation to clear the temporary stack within the implicit
999 loop of C<s///ge> has been reverted, as it turned out to be the cause of
1000 obscure bugs in seemingly unrelated parts of the interpreter [commit
1001 ef0d4e17921ee3de].
1002
1003 =item *
1004
1005 The line numbers for warnings inside C<elsif> are now correct.
1006
1007 =item *
1008
1009 The C<..> operator now works correctly with ranges whose ends are at or
1010 close to the values of the smallest and largest integers.
1011
1012 =item *
1013
1014 C<binmode STDIN, ':raw'> could lead to segmentation faults on some platforms.
1015 This has been fixed [RT #54828].
1016
1017 =item *
1018
1019 An off-by-one error meant that C<index $str, ...> was effectively being
1020 executed as C<index "$str\0", ...>. This has been fixed [RT #53746].
1021
1022 =item *
1023
1024 Various leaks associated with named captures in regexes have been fixed
1025 [RT #57024].
1026
1027 =item *
1028
1029 A weak reference to a hash would leak. This was affecting C<DBI>
1030 [RT #56908].
1031
1032 =item *
1033
1034 Using (?|) in a regex could cause a segfault [RT #59734].
1035
1036 =item *
1037
1038 Use of a UTF-8 C<tr//> within a closure could cause a segfault [RT #61520].
1039
1040 =item *
1041
1042 Calling C<Perl_sv_chop()> or otherwise upgrading an SV could result in an
1043 unaligned 64-bit access on the SPARC architecture [RT #60574].
1044
1045 =item *
1046
1047 In the 5.10.0 release, C<inc_version_list> would incorrectly list
1048 C<5.10.*> after C<5.8.*>; this affected the C<@INC> search order
1049 [RT #67628].
1050
1051 =item *
1052
1053 In 5.10.0, C<pack "a*", $tainted_value> returned a non-tainted value
1054 [RT #52552].
1055
1056 =item *
1057
1058 In 5.10.0, C<printf> and C<sprintf> could produce the fatal error
1059 C<panic: utf8_mg_pos_cache_update> when printing UTF-8 strings
1060 [RT #62666].
1061
1062 =item *
1063
1064 In the 5.10.0 release, a dynamically created C<AUTOLOAD> method might be
1065 missed (method cache issue) [RT #60220,60232].
1066
1067 =item *
1068
1069 In the 5.10.0 release, a combination of C<use feature> and C<//ee> could
1070 cause a memory leak [RT #63110].
1071
1072 =item *
1073
1074 C<-C> on the shebang (C<#!>) line is once more permitted if it is also
1075 specified on the command line. C<-C> on the shebang line used to be a
1076 silent no-op I<if> it was not also on the command line, so perl 5.10.0
1077 disallowed it, which broke some scripts. Now perl checks whether it is
1078 also on the command line and only dies if it is not [RT #67880].
1079
1080 =item *
1081
1082 In 5.10.0, certain types of re-entrant regular expression could crash,
1083 or cause the following assertion failure [RT #60508]:
1084
1085     Assertion rx->sublen >= (s - rx->subbeg) + i failed
1086
1087 =item *
1088
1089 Previously missing files from Unicode 5.1 Character Database are now included.
1090
1091 =item *
1092
1093 C<TMPDIR> is now honored when opening an anonymous temporary file
1094
1095 =back
1096
1097 =head1 New or Changed Diagnostics
1098
1099 =over 4
1100
1101 =item C<panic: sv_chop %s>
1102
1103 This new fatal error occurs when the C routine C<Perl_sv_chop()> was
1104 passed a position that is not within the scalar's string buffer. This
1105 could be caused by buggy XS code, and at this point recovery is not
1106 possible.
1107
1108 =item C<Can't locate package %s for the parents of %s>
1109
1110 This warning has been removed. In general, it only got produced in
1111 conjunction with other warnings, and removing it allowed an ISA lookup
1112 optimisation to be added.
1113
1114 =item C<v-string in use/require is non-portable>
1115
1116 This warning has been removed.
1117
1118 =item C<Deep recursion on subroutine "%s">
1119
1120 It is now possible to change the depth threshold for this warning from the
1121 default of 100, by recompiling the F<perl> binary, setting the C
1122 pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value.
1123
1124 =back
1125
1126 =head1 Changed Internals
1127
1128 =over 4
1129
1130 =item *
1131
1132 TODO: C<SVt_RV> is gone. RVs are now stored in IVs
1133
1134 =item *
1135
1136 TODO: REGEXPs are first class
1137
1138 =item *
1139
1140 TODO: OOK is reworked, such that an OOKed scalar is PV not PVIV
1141
1142 =item *
1143
1144 The J.R.R. Tolkien quotes at the head of C source file have been checked and
1145 proper citations added, thanks to a patch from Tom Christiansen.
1146
1147 =item *
1148
1149 C<Perl_vcroak()> now accepts a null first argument. In addition, a full audit
1150 was made of the "not NULL" compiler annotations, and those for several
1151 other internal functions were corrected.
1152
1153 =item *
1154
1155 New macros C<dSAVEDERRNO>, C<dSAVE_ERRNO>, C<SAVE_ERRNO>, C<RESTORE_ERRNO>
1156 have been added to formalise the temporary saving of the C<errno>
1157 variable.
1158
1159 =item *
1160
1161 The function C<Perl_sv_insert_flags> has been added to augment
1162 C<Perl_sv_insert>.
1163
1164 =item *
1165
1166 The function C<Perl_newSV_type(type)> has been added, equivalent to
1167 C<Perl_newSV()> followed by C<Perl_sv_upgrade(type)>.
1168
1169 =item *
1170
1171 The function C<Perl_newSVpvn_flags()> has been added, equivalent to
1172 C<Perl_newSVpvn()> and then performing the action relevant to the flag.
1173
1174 Two flag bits are currently supported.
1175
1176 =over 4
1177
1178 =item C<SVf_UTF8>
1179
1180 This will call C<SvUTF8_on()> for you. (Note that this does not convert an
1181 sequence of ISO 8859-1 characters to UTF-8). A wrapper, C<newSVpvn_utf8()>
1182 is available for this.
1183
1184 =item C<SVs_TEMP>
1185
1186 Call C<Perl_sv_2mortal()> on the new SV.
1187
1188 =back
1189
1190 There is also a wrapper that takes constant strings, C<newSVpvs_flags()>.
1191
1192 =item *
1193
1194 The function C<Perl_croak_xs_usage> has been added as a wrapper to
1195 C<Perl_croak>.
1196
1197 =item *
1198
1199 The functions C<PerlIO_find_layer> and C<PerlIO_list_alloc> are now
1200 exported.
1201
1202 =item *
1203
1204 C<PL_na> has been exterminated from the core code, replaced by local STRLEN
1205 temporaries, or C<*_nolen()> calls. Either approach is faster than C<PL_na>,
1206 which is a pointer deference into the interpreter structure under ithreads,
1207 and a global variable otherwise.
1208
1209 =item *
1210
1211 C<Perl_mg_free()> used to leave freed memory accessible via C<SvMAGIC()> on
1212 the scalar. It now updates the linked list to remove each piece of magic
1213 as it is freed.
1214
1215 =item *
1216
1217 Under ithreads, the regex in C<PL_reg_curpm> is now reference counted. This
1218 eliminates a lot of hackish workarounds to cope with it not being reference
1219 counted.
1220
1221 =item *
1222
1223 C<Perl_mg_magical()> would sometimes incorrectly turn on C<SvRMAGICAL()>.
1224 This has been fixed.
1225
1226 =item *
1227
1228 The I<public> IV and NV flags are now not set if the string value has
1229 trailing "garbage". This behaviour is consistent with not setting the
1230 public IV or NV flags if the value is out of range for the type.
1231
1232 =item *
1233
1234 SV allocation tracing has been added to the diagnostics enabled by C<-Dm>.
1235 The tracing can alternatively output via the C<PERL_MEM_LOG> mechanism, if
1236 that was enabled when the F<perl> binary was compiled.
1237
1238 =item *
1239
1240 Smartmatch resolution tracing has been added as a new diagnostic. Use C<-DM> to
1241 enable it.
1242
1243
1244 =item *
1245
1246 A new debugging flag C<-DB> now dumps subroutine definitions, leaving
1247 C<-Dx> for its original purpose of dumping syntax trees.
1248
1249 =item *
1250
1251 Uses of C<Nullav>, C<Nullcv>, C<Nullhv>, C<Nullop>, C<Nullsv> etc have been
1252 replaced by C<NULL> in the core code, and non-dual-life modules, as C<NULL>
1253 is clearer to those unfamiliar with the core code.
1254
1255 =item *
1256
1257 A macro C<MUTABLE_PTR(p)> has been added, which on (non-pedantic) gcc will
1258 not cast away C<const>, returning a C<void *>. Macros C<MUTABLE_SV(av)>,
1259 C<MUTABLE_SV(cv)> etc build on this, casting to C<AV *> etc without
1260 casting away C<const>. This allows proper compile-time auditing of
1261 C<const> correctness in the core, and helped picked up some errors (now
1262 fixed).
1263
1264 =item *
1265
1266 Macros C<mPUSHs()> and C<mXPUSHs()> have been added, for pushing SVs on the
1267 stack and mortalizing them.
1268
1269 =item *
1270
1271 Use of the private structure C<mro_meta> has changed slightly. Nothing
1272 outside the core should be accessing this directly anyway.
1273
1274 =item *
1275
1276 A new tool, F<Porting/expand-macro.pl> has been added, that allows you
1277 to view how a C preprocessor macro would be expanded when compiled.
1278 This is handy when trying to decode the macro hell that is the perl
1279 guts.
1280
1281 =back
1282
1283 =head1 New Tests
1284
1285 Many modules updated from CPAN incorporate new tests.
1286
1287 Several tests that have the potential to hang forever if they fail now
1288 incorporate a "watchdog" functionality that will kill them after a timeout,
1289 which helps ensure that C<make test> and C<make test_harness> run to
1290 completion automatically. (Jerry Hedden).
1291
1292 Some core-specific tests have been added:
1293
1294 =over 4
1295
1296 =item t/comp/retainedlines.t
1297
1298 Check that the debugger can retain source lines from C<eval>.
1299
1300 =item t/io/perlio_fail.t
1301
1302 Check that bad layers fail.
1303
1304 =item t/io/perlio_leaks.t
1305
1306 Check that PerlIO layers are not leaking.
1307
1308 =item t/io/perlio_open.t
1309
1310 Check that certain special forms of open work.
1311
1312 =item t/io/perlio.t
1313
1314 General PerlIO tests.
1315
1316 =item t/io/pvbm.t
1317
1318 Check that there is no unexpected interaction between the internal types
1319 C<PVBM> and C<PVGV>.
1320
1321 =item t/mro/package_aliases.t
1322
1323 Check that mro works properly in the presence of aliased packages.
1324
1325 =item t/op/dbm.t
1326
1327 Tests for C<dbmopen> and C<dbmclose>.
1328
1329 =item t/op/index_thr.t
1330
1331 Tests for the interaction of C<index> and threads.
1332
1333 =item t/op/pat_thr.t
1334
1335 Tests for the interaction of esoteric patterns and threads.
1336
1337 =item t/op/qr_gc.t
1338
1339 Test that C<qr> doesn't leak.
1340
1341 =item t/op/reg_email_thr.t
1342
1343 Tests for the interaction of regex recursion and threads.
1344
1345 =item t/op/regexp_qr_embed_thr.t
1346
1347 Tests for the interaction of patterns with embedded C<qr//> and threads.
1348
1349 =item t/op/regexp_unicode_prop.t
1350
1351 Tests for Unicode properties in regular expressions.
1352
1353 =item t/op/regexp_unicode_prop_thr.t
1354
1355 Tests for the interaction of Unicode properties and threads.
1356
1357 =item t/op/reg_nc_tie.t
1358
1359 Test the tied methods of C<Tie::Hash::NamedCapture>.
1360
1361 =item t/op/reg_posixcc.t
1362
1363 Check that POSIX character classes behave consistently.
1364
1365 =item t/op/re.t
1366
1367 Check that exportable C<re> functions in F<universal.c> work.
1368
1369 =item t/op/setpgrpstack.t
1370
1371 Check that C<setpgrp> works.
1372
1373 =item t/op/substr_thr.t
1374
1375 Tests for the interaction of C<substr> and threads.
1376
1377 =item t/op/upgrade.t
1378
1379 Check that upgrading and assigning scalars works.
1380
1381 =item t/uni/lex_utf8.t
1382
1383 Check that Unicode in the lexer works.
1384
1385 =item t/uni/tie.t
1386
1387 Check that Unicode and C<tie> work.
1388
1389 =back
1390
1391 =head1 Known Problems
1392
1393 This is a list of some significant unfixed bugs, which are regressions
1394 from either 5.10.0 or 5.8.x.
1395
1396 =over 4
1397
1398 =item *
1399
1400 C<List::Util::first> misbehaves in the presence of a lexical C<$_>
1401 (typically introduced by C<my $_> or implicitly by C<given>). The variable
1402 which gets set for each iteration is the package variable C<$_>, not the
1403 lexical C<$_> [RT #67694].
1404
1405 A similar issue may occur in other modules that provide functions which
1406 take a block as their first argument, like
1407
1408     foo { ... $_ ...} list
1409
1410 =item *
1411
1412 The C<charnames> pragma may generate a run-time error when a regex is
1413 interpolated [RT #56444]:
1414
1415     use charnames ':full';
1416     my $r1 = qr/\N{THAI CHARACTER SARA I}/;
1417     "foo" =~ $r1;    # okay
1418     "foo" =~ /$r1+/; # runtime error
1419
1420 A workaround is to generate the character outside of the regex:
1421
1422     my $a = "\N{THAI CHARACTER SARA I}";
1423     my $r1 = qr/$a/;
1424
1425 =item *
1426
1427 Some regexes may run much more slowly when run in a child thread compared
1428 with the thread the pattern was compiled into [RT #55600].
1429
1430 =back
1431
1432 =head1 Deprecations
1433
1434 The following items are now deprecated.
1435
1436 =over 4
1437
1438 =item *
1439
1440 C<Switch> is buggy and should be avoided. From perl 5.11.0 onwards, it is
1441 intended that any use of the core version of this module will emit a
1442 warning, and that the module will eventually be removed from the core
1443 (probably in perl 5.14.0). See L<perlsyn/"Switch statements"> for its
1444 replacement.
1445
1446 =item *
1447
1448 The following modules will be removed from the core distribution in a future
1449 release, and should be installed from CPAN instead. Distributions on CPAN
1450 which require these should add them to their prerequisites. The core versions
1451 of these modules warnings will issue a deprecation warning.
1452
1453 =over
1454
1455 =item *
1456
1457 C<Class::ISA>
1458
1459 =item *
1460
1461 C<Pod::Plainer>
1462
1463 =item *
1464
1465 C<Shell>
1466
1467 =back
1468
1469 Currently support to install from CPAN without a I<force> is C<TODO> in CPAN
1470 and CPANPLUS. This will be addressed before 5.12.0 ships.
1471
1472 =item *
1473
1474 C<suidperl> has been removed. It used to provide a mechanism to
1475 emulate setuid permission bits on systems that don't support it properly.
1476
1477 =item *
1478
1479 Deprecate assignment to $[
1480
1481 =item *
1482
1483 Remove attrs, which has been deprecated since 1999/10/02.
1484
1485 =item *
1486
1487 Deprecate use of the attribute :locked on subroutines.
1488
1489 =item *
1490
1491 Deprecate using "locked" with the attributes pragma.
1492
1493 =item *
1494
1495 Deprecate using "unique" with the attributes pragma.
1496
1497 =item *
1498
1499 warn if ++ or -- are unable to change the value because it's beyond the limit of representation
1500
1501 This uses a new warnings category: "imprecision".
1502
1503 =item *
1504
1505 Make lc/uc/lcfirst/ucfirst warn when passed undef.
1506
1507 =item *
1508
1509 Show constant in "Useless use of a constant in void context"
1510
1511 =item *
1512
1513 Make the new warning report undef constants as undef
1514
1515 =item *
1516
1517 Add a new warning, "Prototype after '%s'"
1518
1519 =item *
1520
1521 Tweak the "Illegal character in prototype" warning so it's more precise when reporting illegal characters after _
1522
1523 =item *
1524
1525 Unintended interpolation of $\ in regex
1526
1527 =item *
1528
1529 Make overflow warnings in gmtime/localtime only occur when warnings are on
1530
1531 =item *
1532
1533 Improve mro merging error messages.
1534
1535 They are now very similar to those produced by Algorithm::C3.
1536
1537 =item *
1538
1539 Amelioration of the error message "Unrecognized character %s in column %d"
1540
1541 Changes the error message to "Unrecognized character %s; marked by E<lt>--
1542 HERE after %sE<lt>-- HERE near column %d". This should make it a little
1543 simpler to spot and correct the suspicious character.
1544
1545 =item *
1546
1547 Explicitely point to $. when it causes an uninitialized warning for ranges in scalar context
1548
1549
1550 =item *
1551
1552 Deprecated numerous Perl 4-era libraries:
1553
1554 F<termcap.pl>, F<tainted.pl>, F<stat.pl>, F<shellwords.pl>, F<pwd.pl>,
1555 F<open3.pl>, F<open2.pl>, F<newgetopt.pl>, F<look.pl>, F<find.pl>,
1556 F<finddepth.pl>, F<importenv.pl>, F<hostname.pl>, F<getopts.pl>,
1557 F<getopt.pl>, F<getcwd.pl>, F<flush.pl>, F<fastcwd.pl>, F<exceptions.pl>,
1558 F<ctime.pl>, F<complete.pl>, F<cacheout.pl>, F<bigrat.pl>, F<bigint.pl>,
1559 F<bigfloat.pl>, F<assert.pl>, F<abbrev.pl>, F<dotsh.pl>, and
1560 F<timelocal.pl> are all now deprecated. Using them will incur a warning.
1561
1562 =back
1563
1564 =head1 Acknowledgements
1565
1566 Some of the work in this release was funded by a TPF grant funded by
1567 Dijkmat BV, The Netherlands.
1568
1569 Steffen Mueller and David Golden in particular helped getting CPAN modules
1570 polished and synchronised with their in-core equivalents.
1571
1572 Craig Berry was tireless in getting maint to run under VMS, no matter how
1573 many times we broke it for him.
1574
1575 The other core committers contributed most of the changes, and applied most
1576 of the patches sent in by the hundreds of contributors listed in F<AUTHORS>.
1577
1578 Much of the work of categorizing changes in this perldelta file was contributed
1579 by the following porters using changelogger.bestpractical.com:
1580
1581 Nicholas Clark, leon, shawn, alexm, rjbs, rafl, Pedro Melo, brunorc,
1582 anonymous, ☄, Tom Hukins, anonymous, Jesse, dagolden, Moritz Onken,
1583 Mark Fowler, chorny, anonymous, tmtm
1584
1585 Finally, thanks to Larry Wall, without whom none of this would be
1586 necessary.
1587
1588 =head1 Reporting Bugs
1589
1590 If you find what you think is a bug, you might check the articles
1591 recently posted to the comp.lang.perl.misc newsgroup and the perl
1592 bug database at http://rt.perl.org/perlbug/ .  There may also be
1593 information at http://www.perl.org/ , the Perl Home Page.
1594
1595 If you believe you have an unreported bug, please run the B<perlbug>
1596 program included with your release.  Be sure to trim your bug down
1597 to a tiny but sufficient test case.  Your bug report, along with the
1598 output of C<perl -V>, will be sent off to perlbug@perl.org to be
1599 analysed by the Perl porting team.
1600
1601 If the bug you are reporting has security implications, which make it
1602 inappropriate to send to a publicly archived mailing list, then please send
1603 it to perl5-security-report@perl.org. This points to a closed subscription
1604 unarchived mailing list, which includes all the core committers, who be able
1605 to help assess the impact of issues, figure out a resolution, and help
1606 co-ordinate the release of patches to mitigate or fix the problem across all
1607 platforms on which Perl is supported. Please only use this address for
1608 security issues in the Perl core, not for modules independently
1609 distributed on CPAN.
1610
1611 =head1 SEE ALSO
1612
1613 The F<Changes> file for an explanation of how to view exhaustive details
1614 on what changed.
1615
1616 The F<INSTALL> file for how to build Perl.
1617
1618 The F<README> file for general stuff.
1619
1620 The F<Artistic> and F<Copying> files for copyright information.
1621
1622 =cut
1623
1624