This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Spelling correction.
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
5ed58cbd 5perldelta - what is new for perl v5.18.0
e128ab2c 6
4eabcf70 7=head1 DESCRIPTION
6db9054f 8
e612b5a0 9This document describes differences between the v5.16.0 release and the v5.18.0
e08634c5 10release.
6db9054f 11
e612b5a0
RS
12If you are upgrading from an earlier release such as v5.14.0, first read
13L<perl5160delta>, which describes differences between v5.14.0 and v5.16.0.
3f01b192 14
5ed58cbd 15=head1 Core Enhancements
3f01b192 16
5ed58cbd 17=head2 New mechanism for experimental features
82d98f72 18
5ed58cbd 19Newly-added experimental features will now require this incantation:
82d98f72 20
5ed58cbd
RS
21 no warnings "experimental::feature_name";
22 use feature "feature_name"; # would warn without the prev line
23
24There is a new warnings category, called "experimental", containing
25warnings that the L<feature> pragma emits when enabling experimental
26features.
27
28Newly-added experimental features will also be given special warning IDs,
29which consist of "experimental::" followed by the name of the feature. (The
30plan is to extend this mechanism eventually to all warnings, to allow them
31to be enabled or disabled individually, and not just by category.)
32
33By saying
34
35 no warnings "experimental::feature_name";
36
37you are taking responsibility for any breakage that future changes to, or
38removal of, the feature may cause.
39
1ea0ff56
RS
40Since some features (like C<~~> or C<my $_>) now emit experimental warnings,
41and you may want to disable them in code that is also run on perls that do not
42recognize these warning categories, consider using the C<if> pragma like this:
43
5c46a73f 44 no if $] >= 5.018, 'warnings', "experimental::feature_name";
1ea0ff56 45
5ed58cbd
RS
46Existing experimental features may begin emitting these warnings, too. Please
47consult L<perlexperiment> for information on which features are considered
48experimental.
49
50=head2 Hash overhaul
51
e612b5a0 52Changes to the implementation of hashes in perl v5.18.0 will be one of the most
484d8ba1
DG
53visible changes to the behavior of existing code.
54
8e74b2ed 55By default, two distinct hash variables with identical keys and values may now
484d8ba1
DG
56provide their contents in a different order where it was previously identical.
57
58When encountering these changes, the key to cleaning up from them is to accept
59that B<hashes are unordered collections> and to act accordingly.
5ed58cbd
RS
60
61=head3 Hash randomization
62
63The seed used by Perl's hash function is now random. This means that the
64order which keys/values will be returned from functions like C<keys()>,
65C<values()>, and C<each()> will differ from run to run.
66
67This change was introduced to make Perl's hashes more robust to algorithmic
68complexity attacks, and also because we discovered that it exposes hash
69ordering dependency bugs and makes them easier to track down.
70
71Toolchain maintainers might want to invest in additional infrastructure to
72test for things like this. Running tests several times in a row and then
73comparing results will make it easier to spot hash order dependencies in
74code. Authors are strongly encouraged not to expose the key order of
75Perl's hashes to insecure audiences.
76
77Further, every hash has its own iteration order, which should make it much
78more difficult to determine what the current hash seed is.
79
0f2be12f
RS
80=head3 New hash functions
81
e612b5a0 82Perl v5.18 includes support for multiple hash functions, and changed
0f2be12f
RS
83the default (to ONE_AT_A_TIME_HARD), you can choose a different
84algorithm by defining a symbol at compile time. For a current list,
e612b5a0 85consult the F<INSTALL> document. Note that as of Perl v5.18 we can
0f2be12f
RS
86only recommend use of the default or SIPHASH. All the others are
87known to have security issues and are for research purposes only.
5ed58cbd 88
f105b7be 89=head3 PERL_HASH_SEED environment variable now takes a hex value
5ed58cbd 90
484d8ba1
DG
91C<PERL_HASH_SEED> no longer accepts an integer as a parameter;
92instead the value is expected to be a binary value encoded in a hex
93string, such as "0xf5867c55039dc724". This is to make the
94infrastructure support hash seeds of arbitrary lengths, which might
ad94908e 95exceed that of an integer. (SipHash uses a 16 byte seed.)
5ed58cbd 96
c40c48bb
RS
97=head3 PERL_PERTURB_KEYS environment variable added
98
f105b7be 99The C<PERL_PERTURB_KEYS> environment variable allows one to control the level of
c40c48bb
RS
100randomization applied to C<keys> and friends.
101
f105b7be 102When C<PERL_PERTURB_KEYS> is 0, perl will not randomize the key order at all. The
c40c48bb
RS
103chance that C<keys> changes due to an insert will be the same as in previous
104perls, basically only when the bucket size is changed.
105
f105b7be 106When C<PERL_PERTURB_KEYS> is 1, perl will randomize keys in a non-repeatable
c40c48bb
RS
107way. The chance that C<keys> changes due to an insert will be very high. This
108is the most secure and default mode.
109
f105b7be
KE
110When C<PERL_PERTURB_KEYS> is 2, perl will randomize keys in a repeatable way.
111Repeated runs of the same program should produce the same output every time.
c40c48bb 112
f105b7be
KE
113C<PERL_HASH_SEED> implies a non-default C<PERL_PERTURB_KEYS> setting. Setting
114C<PERL_HASH_SEED=0> (exactly one 0) implies C<PERL_PERTURB_KEYS=0> (hash key
115randomization disabled); settng C<PERL_HASH_SEED> to any other value implies
116C<PERL_PERTURB_KEYS=2> (deterministic and repeatable hash key randomization).
117Specifying C<PERL_PERTURB_KEYS> explicitly to a different level overrides this
c40c48bb
RS
118behavior.
119
5ed58cbd
RS
120=head3 Hash::Util::hash_seed() now returns a string
121
122Hash::Util::hash_seed() now returns a string instead of an integer. This
123is to make the infrastructure support hash seeds of arbitrary lengths
ad94908e 124which might exceed that of an integer. (SipHash uses a 16 byte seed.)
5ed58cbd
RS
125
126=head3 Output of PERL_HASH_SEED_DEBUG has been changed
127
128The environment variable PERL_HASH_SEED_DEBUG now makes perl show both the
f105b7be 129hash function perl was built with, I<and> the seed, in hex, in use for that
5ed58cbd
RS
130process. Code parsing this output, should it exist, must change to accommodate
131the new format. Example of the new format:
132
133 $ PERL_HASH_SEED_DEBUG=1 ./perl -e1
134 HASH_FUNCTION = MURMUR3 HASH_SEED = 0x1476bb9f
135
136=head2 Upgrade to Unicode 6.2
137
2e7bc647 138Perl now supports Unicode 6.2. A list of changes from Unicode
5ed58cbd
RS
1396.1 is at L<http://www.unicode.org/versions/Unicode6.2.0>.
140
141=head2 Character name aliases may now include non-Latin1-range characters
142
143It is possible to define your own names for characters for use in
144C<\N{...}>, C<charnames::vianame()>, etc. These names can now be
145comprised of characters from the whole Unicode range. This allows for
146names to be in your native language, and not just English. Certain
147restrictions apply to the characters that may be used (you can't define
148a name that has punctuation in it, for example). See L<charnames/CUSTOM
149ALIASES>.
150
151=head2 New DTrace probes
152
153The following new DTrace probes have been added:
14731ad1 154
337fb649 155=over 4
14731ad1 156
82d98f72 157=item *
14731ad1 158
5ed58cbd
RS
159C<op-entry>
160
161=item *
162
163C<loading-file>
164
165=item *
166
167C<loaded-file>
168
169=back
170
171=head2 C<${^LAST_FH}>
172
173This new variable provides access to the filehandle that was last read.
174This is the handle used by C<$.> and by C<tell> and C<eof> without
175arguments.
176
177=head2 Regular Expression Set Operations
178
179This is an B<experimental> feature to allow matching against the union,
180intersection, etc., of sets of code points, similar to
181L<Unicode::Regex::Set>. It can also be used to extend C</x> processing
182to [bracketed] character classes, and as a replacement of user-defined
183properties, allowing more complex expressions than they do. See
184L<perlrecharclass/Extended Bracketed Character Classes>.
185
186=head2 Lexical subroutines
187
188This new feature is still considered B<experimental>. To enable it:
189
190 use 5.018;
191 no warnings "experimental::lexical_subs";
192 use feature "lexical_subs";
193
194You can now declare subroutines with C<state sub foo>, C<my sub foo>, and
195C<our sub foo>. (C<state sub> requires that the "state" feature be
196enabled, unless you write it as C<CORE::state sub foo>.)
197
198C<state sub> creates a subroutine visible within the lexical scope in which
199it is declared. The subroutine is shared between calls to the outer sub.
200
201C<my sub> declares a lexical subroutine that is created each time the
202enclosing block is entered. C<state sub> is generally slightly faster than
203C<my sub>.
204
205C<our sub> declares a lexical alias to the package subroutine of the same
206name.
207
208For more information, see L<perlsub/Lexical Subroutines>.
209
210=head2 Computed Labels
211
212The loop controls C<next>, C<last> and C<redo>, and the special C<dump>
213operator, now allow arbitrary expressions to be used to compute labels at run
214time. Previously, any argument that was not a constant was treated as the
215empty string.
216
217=head2 More CORE:: subs
218
219Several more built-in functions have been added as subroutines to the
220CORE:: namespace - namely, those non-overridable keywords that can be
221implemented without custom parsers: C<defined>, C<delete>, C<exists>,
222C<glob>, C<pos>, C<protoytpe>, C<scalar>, C<split>, C<study>, and C<undef>.
223
224As some of these have prototypes, C<prototype('CORE::...')> has been
225changed to not make a distinction between overridable and non-overridable
226keywords. This is to make C<prototype('CORE::pos')> consistent with
227C<prototype(&CORE::pos)>.
228
229=head2 C<kill> with negative signal names
230
231C<kill> has always allowed a negative signal number, which kills the
232process group instead of a single process. It has also allowed signal
233names. But it did not behave consistently, because negative signal names
234were treated as 0. Now negative signals names like C<-INT> are supported
235and treated the same way as -2 [perl #112990].
236
237=head1 Security
238
239=head2 C<Storable> security warning in documentation
240
241The documentation for C<Storable> now includes a section which warns readers
242of the danger of accepting Storable documents from untrusted sources. The
243short version is that deserializing certain types of data can lead to loading
244modules and other code execution. This is documented behavior and wanted
245behavior, but this opens an attack vector for malicious entities.
246
247=head2 C<Locale::Maketext> allowed code injection via a malicious template
248
249If users could provide a translation string to Locale::Maketext, this could be
250used to invoke arbitrary Perl subroutines available in the current process.
251
252This has been fixed, but it is still possible to invoke any method provided by
253C<Locale::Maketext> itself or a subclass that you are using. One of these
254methods in turn will invoke the Perl core's C<sprintf> subroutine.
255
256In summary, allowing users to provide translation strings without auditing
257them is a bad idea.
258
259This vulnerability is documented in CVE-2012-6329.
260
261=head2 Avoid calling memset with a negative count
262
263Poorly written perl code that allows an attacker to specify the count to perl's
264C<x> string repeat operator can already cause a memory exhaustion
e612b5a0 265denial-of-service attack. A flaw in versions of perl before v5.15.5 can escalate
5ed58cbd
RS
266that into a heap buffer overrun; coupled with versions of glibc before 2.16, it
267possibly allows the execution of arbitrary code.
268
269The flaw addressed to this commit has been assigned identifier CVE-2012-5195
270and was researched by Tim Brown.
271
272=head1 Incompatible Changes
273
274=head2 See also: hash overhaul
275
276Some of the changes in the L<hash overhaul|/"Hash overhaul"> are not fully
277compatible with previous versions of perl. Please read that section.
278
279=head2 An unknown character name in C<\N{...}> is now a syntax error
280
281Previously, it warned, and the Unicode REPLACEMENT CHARACTER was
282substituted. Unicode now recommends that this situation be a syntax
283error. Also, the previous behavior led to some confusing warnings and
284behaviors, and since the REPLACEMENT CHARACTER has no use other than as
285a stand-in for some unknown character, any code that has this problem is
286buggy.
287
288=head2 Formerly deprecated characters in C<\N{}> character name aliases are now errors.
289
290Since v5.12.0, it has been deprecated to use certain characters in
291user-defined C<\N{...}> character names. These now cause a syntax
292error. For example, it is now an error to begin a name with a digit,
293such as in
294
295 my $undraftable = "\N{4F}"; # Syntax error!
296
237b9c6d 297or to have commas anywhere in the name. See L<charnames/CUSTOM ALIASES>.
5ed58cbd
RS
298
299=head2 C<\N{BELL}> now refers to U+1F514 instead of U+0007
300
301Unicode 6.0 reused the name "BELL" for a different code point than it
302traditionally had meant. Since Perl v5.14, use of this name still
303referred to U+0007, but would raise a deprecation warning. Now, "BELL"
304refers to U+1F514, and the name for U+0007 is "ALERT". All the
305functions in L<charnames> have been correspondingly updated.
306
307=head2 New Restrictions in Multi-Character Case-Insensitive Matching in Regular Expression Bracketed Character Classes
308
309Unicode has now withdrawn their previous recommendation for regular
310expressions to automatically handle cases where a single character can
237b9c6d 311match multiple characters case-insensitively, for example, the letter
5ed58cbd
RS
312LATIN SMALL LETTER SHARP S and the sequence C<ss>. This is because
313it turns out to be impracticable to do this correctly in all
314circumstances. Because Perl has tried to do this as best it can, it
315will continue to do so. (We are considering an option to turn it off.)
316However, a new restriction is being added on such matches when they
317occur in [bracketed] character classes. People were specifying
318things such as C</[\0-\xff]/i>, and being surprised that it matches the
319two character sequence C<ss> (since LATIN SMALL LETTER SHARP S occurs in
320this range). This behavior is also inconsistent with using a
321property instead of a range: C<\p{Block=Latin1}> also includes LATIN
322SMALL LETTER SHARP S, but C</[\p{Block=Latin1}]/i> does not match C<ss>.
323The new rule is that for there to be a multi-character case-insensitive
324match within a bracketed character class, the character must be
325explicitly listed, and not as an end point of a range. This more
326closely obeys the Principle of Least Astonishment. See
327L<perlrecharclass/Bracketed Character Classes>. Note that a bug [perl
328#89774], now fixed as part of this change, prevented the previous
329behavior from working fully.
330
331=head2 Explicit rules for variable names and identifiers
332
c6c6975e
RS
333Due to an oversight, single character variable names in v5.16 were
334completely unrestricted. This opened the door to several kinds of
335insanity. As of v5.18, these now follow the rules of other identifiers,
336in addition to accepting characters that match the C<\p{POSIX_Punct}>
337property.
5ed58cbd
RS
338
339There are no longer any differences in the parsing of identifiers
340specified as C<$...> or C<${...}>; previously, they were dealt with in
341different parts of the core, and so had slightly different behavior. For
342instance, C<${foo:bar}> was a legal variable name. Since they are now
343both parsed by the same code, that is no longer the case.
344
345=head2 C<\s> in regular expressions now matches a Vertical Tab
346
347No one could recall why C<\s> didn't match C<\cK>, the vertical tab.
348Now it does. Given the extreme rarity of that character, very little
349breakage is expected.
350
351=head2 C</(?{})/> and C</(??{})/> have been heavily reworked
352
353The implementation of this feature has been almost completely rewritten.
354Although its main intent is to fix bugs, some behaviors, especially
355related to the scope of lexical variables, will have changed. This is
356described more fully in the L</Selected Bug Fixes> section.
357
358=head2 Stricter parsing of substitution replacement
359
360It is no longer possible to abuse the way the parser parses C<s///e> like
361this:
362
363 %_=(_,"Just another ");
364 $_="Perl hacker,\n";
365 s//_}->{_/e;print
366
367=head2 C<given> now aliases the global C<$_>
368
369Instead of assigning to an implicit lexical C<$_>, C<given> now makes the
370global C<$_> an alias for its argument, just like C<foreach>. However, it
371still uses lexical C<$_> if there is lexical C<$_> in scope (again, just like
372C<foreach>) [perl #114020].
373
64a74324
RS
374=head2 The smartmatch family of features are now experimental
375
376Smart match, added in v5.10.0 and significantly revised in v5.10.1, has been
377a regular point of complaint. Although there are a number of ways in which
378it is useful, it has also proven problematic and confusing for both users and
379implementors of Perl. There have been a number of proposals on how to best
380address the problem. It is clear that smartmatch is almost certainly either
381going to change or go away in the future. Relying on its current behavior
382is not recommended.
383
384Warnings will now be issued when the parser sees C<~~>, C<given>, or C<when>.
385To disable these warnings, you can add this line to the appropriate scope:
386
387 no if $] >= 5.018, "experimental::smartmatch";
388
389Consider, though, replacing the use of these features, as they may change
390behavior again before becoming stable.
391
5ed58cbd
RS
392=head2 Lexical C<$_> is now experimental
393
e612b5a0 394Since it was introduced in Perl v5.10, it has caused much confusion with no
5ed58cbd
RS
395obvious solution:
396
397=over
829397b9
TC
398
399=item *
400
5ed58cbd
RS
401Various modules (e.g., List::Util) expect callback routines to use the
402global C<$_>. C<use List::Util 'first'; my $_; first { $_ == 1 } @list>
403does not work as one would expect.
71e6aba6
RS
404
405=item *
406
5ed58cbd
RS
407A C<my $_> declaration earlier in the same file can cause confusing closure
408warnings.
71e6aba6
RS
409
410=item *
411
5ed58cbd
RS
412The "_" subroutine prototype character allows called subroutines to access
413your lexical C<$_>, so it is not really private after all.
2426c394 414
71e6aba6
RS
415=item *
416
5ed58cbd
RS
417Nevertheless, subroutines with a "(@)" prototype and methods cannot access
418the caller's lexical C<$_>, unless they are written in XS.
71e6aba6
RS
419
420=item *
421
5ed58cbd
RS
422But even XS routines cannot access a lexical C<$_> declared, not in the
423calling subroutine, but in an outer scope, iff that subroutine happened not
424to mention C<$_> or use any operators that default to C<$_>.
425
426=back
427
428It is our hope that lexical C<$_> can be rehabilitated, but this may
429cause changes in its behavior. Please use it with caution until it
430becomes stable.
431
432=head2 readline() with C<$/ = \N> now reads N characters, not N bytes
433
434Previously, when reading from a stream with I/O layers such as
435C<encoding>, the readline() function, otherwise known as the C<< <> >>
436operator, would read I<N> bytes from the top-most layer. [perl #79960]
437
438Now, I<N> characters are read instead.
439
440There is no change in behaviour when reading from streams with no
441extra layers, since bytes map exactly to characters.
442
443=head2 Overridden C<glob> is now passed one argument
444
445C<glob> overrides used to be passed a magical undocumented second argument
446that identified the caller. Nothing on CPAN was using this, and it got in
447the way of a bug fix, so it was removed. If you really need to identify
448the caller, see L<Devel::Callsite> on CPAN.
449
450=head2 Here-doc parsing
451
452The body of a here-document inside a quote-like operator now always begins
453on the line after the "<<foo" marker. Previously, it was documented to
454begin on the line following the containing quote-like operator, but that
455was only sometimes the case [perl #114040].
456
457=head2 Alphanumeric operators must now be separated from the closing
458delimiter of regular expressions
459
460You may no longer write something like:
461
462 m/a/and 1
463
464Instead you must write
465
466 m/a/ and 1
467
468with whitespace separating the operator from the closing delimiter of
469the regular expression. Not having whitespace has resulted in a
470deprecation warning since Perl v5.14.0.
471
472=head2 qw(...) can no longer be used as parentheses
473
474C<qw> lists used to fool the parser into thinking they were always
475surrounded by parentheses. This permitted some surprising constructions
476such as C<foreach $x qw(a b c) {...}>, which should really be written
477C<foreach $x (qw(a b c)) {...}>. These would sometimes get the lexer into
478the wrong state, so they didn't fully work, and the similar C<foreach qw(a
479b c) {...}> that one might expect to be permitted never worked at all.
480
481This side effect of C<qw> has now been abolished. It has been deprecated
e612b5a0 482since Perl v5.13.11. It is now necessary to use real parentheses
5ed58cbd
RS
483everywhere that the grammar calls for them.
484
485=head2 Interaction of lexical and default warnings
486
487Turning on any lexical warnings used first to disable all default warnings
488if lexical warnings were not already enabled:
489
490 $*; # deprecation warning
491 use warnings "void";
492 $#; # void warning; no deprecation warning
493
f105b7be 494Now, the C<debugging>, C<deprecated>, C<glob>, C<inplace> and C<malloc> warnings
5ed58cbd
RS
495categories are left on when turning on lexical warnings (unless they are
496turned off by C<no warnings>, of course).
497
498This may cause deprecation warnings to occur in code that used to be free
499of warnings.
500
501Those are the only categories consisting only of default warnings. Default
f105b7be
KE
502warnings in other categories are still disabled by C<< use warnings "category" >>,
503as we do not yet have the infrastructure for controlling
5ed58cbd
RS
504individual warnings.
505
506=head2 C<state sub> and C<our sub>
507
508Due to an accident of history, C<state sub> and C<our sub> were equivalent
509to a plain C<sub>, so one could even create an anonymous sub with
510C<our sub { ... }>. These are now disallowed outside of the "lexical_subs"
511feature. Under the "lexical_subs" feature they have new meanings described
512in L<perlsub/Lexical Subroutines>.
513
514=head2 Defined values stored in environment are forced to byte strings
515
516A value stored in an environment variable has always been stringified. In this
4f5e76eb 517release, it is converted to be only a byte string. First, it is forced to be
5ed58cbd
RS
518only a string. Then if the string is utf8 and the equivalent of
519C<utf8::downgrade()> works, that result is used; otherwise, the equivalent of
520C<utf8::encode()> is used, and a warning is issued about wide characters
521(L</Diagnostics>).
522
523=head2 C<require> dies for unreadable files
524
525When C<require> encounters an unreadable file, it now dies. It used to
526ignore the file and continue searching the directories in C<@INC>
527[perl #113422].
528
529=head2 C<gv_fetchmeth_*> and SUPER
530
531The various C<gv_fetchmeth_*> XS functions used to treat a package whose
f105b7be
KE
532named ended with C<::SUPER> specially. A method lookup on the C<Foo::SUPER>
533package would be treated as a C<SUPER> method lookup on the C<Foo> package. This
534is no longer the case. To do a C<SUPER> lookup, pass the C<Foo> stash and the
535C<GV_SUPER> flag.
5ed58cbd
RS
536
537=head2 C<split>'s first argument is more consistently interpreted
538
e612b5a0 539After some changes earlier in v5.17, C<split>'s behavior has been
5ed58cbd
RS
540simplified: if the PATTERN argument evaluates to a literal string
541containing one space, it is treated the way that a I<literal> string
542containing one space once was.
543
544=head1 Deprecations
545
546=head2 Deprecated modules
547
548The following modules will be removed from the core distribution in a
549future release, and should be installed from CPAN instead. Distributions
550on CPAN which require these should add them to their prerequisites.
f105b7be 551The core versions of these modules will issue C<"deprecated">-category
5ed58cbd
RS
552warnings.
553
554You can silence these deprecation warnings by installing the modules
555in question from CPAN.
556
557=over
558
559=item L<Archive::Extract>
560
561=item L<B::Lint>
562
563=item L<B::Lint::Debug>
564
565=item L<CPANPLUS> and all included C<CPANPLUS::*> modules
566
567=item L<Devel::InnerPackage>
568
569=item L<encoding>
570
571=item L<Log::Message>
572
573=item L<Log::Message::Config>
574
575=item L<Log::Message::Handlers>
576
577=item L<Log::Message::Item>
578
579=item L<Log::Message::Simple>
580
581=item L<Module::Pluggable>
582
583=item L<Module::Pluggable::Object>
584
585=item L<Object::Accessor>
586
587=item L<Pod::LaTeX>
588
589=item L<Term::UI>
590
591=item L<Term::UI::History>
592
593=back
594
595=head2 Deprecated Utilities
596
597The following utilities will be removed from the core distribution in a
598future release as their associated modules have been deprecated. They
599will remain available with the applicable CPAN distribution.
600
601=over
602
603=item L<cpanp>
604
605=item C<cpanp-run-perl>
606
607=item L<cpan2dist>
608
609These items are part of the C<CPANPLUS> distribution.
610
611=item L<pod2latex>
612
613This item is part of the C<Pod::LaTeX> distribution.
614
615=back
616
617=head2 PL_sv_objcount
618
619This interpreter-global variable used to track the total number of
620Perl objects in the interpreter. It is no longer maintained and will
e612b5a0 621be removed altogether in Perl v5.20.
5ed58cbd
RS
622
623=head2 Five additional characters should be escaped in patterns with C</x>
624
625When a regular expression pattern is compiled with C</x>, Perl treats 6
626characters as white space to ignore, such as SPACE and TAB. However,
627Unicode recommends 11 characters be treated thusly. We will conform
628with this in a future Perl version. In the meantime, use of any of the
629missing characters will raise a deprecation warning, unless turned off.
630The five characters are:
f105b7be
KE
631
632 U+0085 NEXT LINE,
633 U+200E LEFT-TO-RIGHT MARK,
634 U+200F RIGHT-TO-LEFT MARK,
635 U+2028 LINE SEPARATOR,
636
5ed58cbd 637and
f105b7be
KE
638
639 U+2029 PARAGRAPH SEPARATOR.
5ed58cbd
RS
640
641=head2 User-defined charnames with surprising whitespace
642
643A user-defined character name with trailing or multiple spaces in a row is
644likely a typo. This now generates a warning when defined, on the assumption
645that uses of it will be unlikely to include the excess whitespace.
646
647=head2 Various XS-callable functions are now deprecated
648
649All the functions used to classify characters will be removed from a
650future version of Perl, and should not be used. With participating C
651compilers (e.g., gcc), compiling any file that uses any of these will
652generate a warning. These were not intended for public use; there are
653equivalent, faster, macros for most of them.
e612b5a0 654
2e7bc647 655See L<perlapi/Character classes>. The complete list is:
e612b5a0 656
5ed58cbd
RS
657C<is_uni_alnum>, C<is_uni_alnumc>, C<is_uni_alnumc_lc>,
658C<is_uni_alnum_lc>, C<is_uni_alpha>, C<is_uni_alpha_lc>,
659C<is_uni_ascii>, C<is_uni_ascii_lc>, C<is_uni_blank>,
660C<is_uni_blank_lc>, C<is_uni_cntrl>, C<is_uni_cntrl_lc>,
661C<is_uni_digit>, C<is_uni_digit_lc>, C<is_uni_graph>,
662C<is_uni_graph_lc>, C<is_uni_idfirst>, C<is_uni_idfirst_lc>,
663C<is_uni_lower>, C<is_uni_lower_lc>, C<is_uni_print>,
664C<is_uni_print_lc>, C<is_uni_punct>, C<is_uni_punct_lc>,
665C<is_uni_space>, C<is_uni_space_lc>, C<is_uni_upper>,
666C<is_uni_upper_lc>, C<is_uni_xdigit>, C<is_uni_xdigit_lc>,
667C<is_utf8_alnum>, C<is_utf8_alnumc>, C<is_utf8_alpha>,
668C<is_utf8_ascii>, C<is_utf8_blank>, C<is_utf8_char>,
669C<is_utf8_cntrl>, C<is_utf8_digit>, C<is_utf8_graph>,
670C<is_utf8_idcont>, C<is_utf8_idfirst>, C<is_utf8_lower>,
671C<is_utf8_mark>, C<is_utf8_perl_space>, C<is_utf8_perl_word>,
672C<is_utf8_posix_digit>, C<is_utf8_print>, C<is_utf8_punct>,
673C<is_utf8_space>, C<is_utf8_upper>, C<is_utf8_xdigit>,
674C<is_utf8_xidcont>, C<is_utf8_xidfirst>.
675
676In addition these three functions that have never worked properly are
677deprecated:
678C<to_uni_lower_lc>, C<to_uni_title_lc>, and C<to_uni_upper_lc>.
679
f105b7be 680=head2 Certain rare uses of backslashes within regexes are now deprecated
5ed58cbd
RS
681
682There are three pairs of characters that Perl recognizes as
683metacharacters in regular expression patterns: C<{}>, C<[]>, and C<()>.
684These can be used as well to delimit patterns, as in:
685
686 m{foo}
687 s(foo)(bar)
688
689Since they are metacharacters, they have special meaning to regular
690expression patterns, and it turns out that you can't turn off that
691special meaning by the normal means of preceding them with a backslash,
f105b7be 692if you use them, paired, within a pattern delimited by them. For
5ed58cbd
RS
693example, in
694
695 m{foo\{1,3\}}
696
697the backslashes do not change the behavior, and this matches
698S<C<"f o">> followed by one to three more occurrences of C<"o">.
699
700Usages like this, where they are interpreted as metacharacters, are
701exceedingly rare; we think there are none, for example, in all of CPAN.
702Hence, this deprecation should affect very little code. It does give
703notice, however, that any such code needs to change, which will in turn
704allow us to change the behavior in future Perl versions so that the
705backslashes do have an effect, and without fear that we are silently
706breaking any existing code.
707
d5f315e8
KW
708=head2 Splitting the tokens C<(?> and C<(*> in regular expressions
709
710A deprecation warning is now raised if the C<(> and C<?> are separated
711by white space or comments in C<(?...)> regular expression constructs.
712Similarly, if the C<(> and C<*> are separated in C<(*VERB...)>
713constructs.
714
e0a1dec5
LT
715=head2 Pre-PerlIO IO implementations
716
717Perl supports being built without PerlIO proper, using a stdio or sfio
718wrapper instead. A perl build like this will not support IO layers and
719thus Unicode IO, making it rather handicapped.
720
721PerlIO supports a C<stdio> layer if stdio use is desired, and similarly a
722sfio layer could be produced.
723
5ed58cbd
RS
724=head1 Future Deprecations
725
726=over
71e6aba6
RS
727
728=item *
729
4263dd11 730Platforms without support infrastructure
5ed58cbd
RS
731
732Both Windows CE and z/OS have been historically under-maintained, and are
733currently neither successfully building nor regularly being smoke tested.
734Efforts are underway to change this situation, but it should not be taken for
735granted that the platforms are safe and supported. If they do not become
736buildable and regularly smoked, support for them may be actively removed in
737future releases. If you have an interest in these platforms and you can lend
738your time, expertise, or hardware to help support these platforms, please let
739the perl development effort know by emailing C<perl5-porters@perl.org>.
740
741Some platforms that appear otherwise entirely dead are also on the short list
e612b5a0 742for removal between now and v5.20.0:
5ed58cbd
RS
743
744=over
745
746=item DG/UX
747
748=item NeXT
749
750=back
1993add8 751
ec985017
RS
752We also think it likely that current versions of Perl will no longer
753build AmigaOS, DJGPP, NetWare (natively), OS/2 and Plan 9. If you
754are using Perl on such a platform and have an interest in ensuring
755Perl's future on them, please contact us.
756
757We believe that Perl has long been unable to build on mixed endian
ad94908e 758architectures (such as PDP-11s), and intend to remove any remaining
ec985017
RS
759support code. Similarly, code supporting the long umaintained GNU
760dld will be removed soon if no-one makes themselves known as an
761active user.
762
1993add8
RS
763=item *
764
5ed58cbd
RS
765Swapping of $< and $>
766
767For more information about this future deprecation, see L<the relevant RT
768ticket|https://rt.perl.org/rt3/Ticket/Display.html?id=96212>.
71e6aba6
RS
769
770=item *
771
5ed58cbd 772C<microperl>, long broken and of unclear present purpose, will be removed.
71e6aba6
RS
773
774=item *
775
5ed58cbd
RS
776Revamping C<< "\Q" >> semantics in double-quotish strings when combined with
777other escapes.
778
779There are several bugs and inconsistencies involving combinations
780of C<\Q> and escapes like C<\x>, C<\L>, etc., within a C<\Q...\E> pair.
781These need to be fixed, and doing so will necessarily change current
782behavior. The changes have not yet been settled.
71e6aba6 783
d5f315e8
KW
784=item *
785
786Use of C<$^>, where C<^> stands for any actual (non-printing) C0 control
787character will be disallowed in a future Perl version. Use C<${^}>
788instead (where again C<^> stands for a control character),
789or better, C<$^A> , where C<^> this time is a caret (CIRCUMFLEX ACCENT),
790and C<A> stands for any of the characters listed at the end of
791L<perlebcdic/OPERATOR DIFFERENCES>.
792
337fb649 793=back
2426c394 794
5ed58cbd
RS
795=head1 Performance Enhancements
796
797=over 4
2426c394 798
5ed58cbd 799=item *
2426c394 800
5ed58cbd
RS
801Lists of lexical variable declarations (C<my($x, $y)>) are now optimised
802down to a single op and are hence faster than before.
2426c394 803
5ed58cbd 804=item *
2426c394 805
5ed58cbd
RS
806A new C preprocessor define C<NO_TAINT_SUPPORT> was added that, if set,
807disables Perl's taint support altogether. Using the -T or -t command
808line flags will cause a fatal error. Beware that both core tests as
809well as many a CPAN distribution's tests will fail with this change. On
810the upside, it provides a small performance benefit due to reduced
811branching.
2426c394 812
5ed58cbd
RS
813B<Do not enable this unless you know exactly what you are getting yourself
814into.>
815
816=item *
817
818C<pack> with constant arguments is now constant folded in most cases
819[perl #113470].
820
821=item *
822
823Speed up in regular expression matching against Unicode properties. The
824largest gain is for C<\X>, the Unicode "extended grapheme cluster." The
825gain for it is about 35% - 40%. Bracketed character classes, e.g.,
826C<[0-9\x{100}]> containing code points above 255 are also now faster.
827
828=item *
829
830On platforms supporting it, several former macros are now implemented as static
831inline functions. This should speed things up slightly on non-GCC platforms.
832
833=item *
834
66f62cf6
RS
835The optimisation of hashes in boolean context has been extended to
836affect C<scalar(%hash)>, C<%hash ? ... : ...>, and C<sub { %hash || ... }>.
5ed58cbd
RS
837
838=item *
839
f105b7be 840Filetest operators manage the stack in a fractionally more efficient manner.
5ed58cbd
RS
841
842=item *
843
844Globs used in a numeric context are now numified directly in most cases,
f105b7be 845rather than being numified via stringification.
5ed58cbd
RS
846
847=item *
848
849The C<x> repetition operator is now folded to a single constant at compile
850time if called in scalar context with constant operands and no parentheses
851around the left operand.
852
853=back
854
855=head1 Modules and Pragmata
856
857=head2 New Modules and Pragmata
2426c394 858
337fb649 859=over 4
982110e0 860
82d98f72 861=item *
2426c394 862
5ed58cbd
RS
863L<Config::Perl::V> version 0.16 has been added as a dual-lifed module.
864It provides structured data retrieval of C<perl -V> output including
865information only known to the C<perl> binary and not available via L<Config>.
866
867=back
868
869=head2 Updated Modules and Pragmata
870
9863976f 871For a complete list of updates, run:
5ed58cbd 872
f105b7be 873 $ corelist --diff 5.16.0 5.18.0
5ed58cbd 874
e612b5a0 875You can substitute your favorite version in place of C<5.16.0>, too.
5ed58cbd 876
357b01df
AAS
877=over
878
879=item *
880
606e21ea 881L<Archive::Extract> has been upgraded to 0.68.
357b01df
AAS
882
883Work around an edge case on Linux with Busybox's unzip.
884
885=item *
886
606e21ea 887L<Archive::Tar> has been upgraded to 1.90.
357b01df
AAS
888
889ptar now supports the -T option as well as dashless options
890[rt.cpan.org #75473], [rt.cpan.org #75475].
891
892Auto-encode filenames marked as UTF-8 [rt.cpan.org #75474].
893
894Don't use C<tell> on L<IO::Zlib> handles [rt.cpan.org #64339].
895
896Don't try to C<chown> on symlinks.
897
898=item *
899
606e21ea 900L<autodie> has been upgraded to 2.13.
357b01df
AAS
901
902C<autodie> now plays nicely with the 'open' pragma.
903
904=item *
905
606e21ea 906L<B> has been upgraded to 1.42.
357b01df
AAS
907
908The C<stashoff> method of COPs has been added. This provides access to an
909internal field added in perl 5.16 under threaded builds [perl #113034].
910
911C<B::COP::stashpv> now supports UTF-8 package names and embedded NULs.
912
913All C<CVf_*> and C<GVf_*>
914and more SV-related flag values are now provided as constants in the C<B::>
915namespace and available for export. The default export list has not changed.
916
917This makes the module work with the new pad API.
918
919=item *
920
606e21ea 921L<B::Concise> has been upgraded to 0.95.
357b01df
AAS
922
923The C<-nobanner> option has been fixed, and C<format>s can now be dumped.
924When passed a sub name to dump, it will check also to see whether it
925is the name of a format. If a sub and a format share the same name,
926it will dump both.
927
928This adds support for the new C<OpMAYBE_TRUEBOOL> and C<OPpTRUEBOOL> flags.
929
930=item *
931
606e21ea 932L<B::Debug> has been upgraded to 1.18.
357b01df
AAS
933
934This adds support (experimentally) for C<B::PADLIST>, which will be
935added in Perl 5.17.4.
936
937=item *
938
606e21ea 939L<B::Deparse> has been upgraded to 1.20.
357b01df
AAS
940
941Avoid warning when run under C<perl -w>.
942
943It now deparses
944loop controls with the correct precedence, and multiple statements in a
945C<format> line are also now deparsed correctly.
946
947This release suppresses trailing semicolons in formats.
948
949This release adds stub deparsing for lexical subroutines.
950
951It no longer dies when deparsing C<sort> without arguments. It now
952correctly omits the comma for C<system $prog @args> and C<exec $prog
953@args>.
954
955=item *
956
606e21ea 957L<bignum>, L<bigint> and L<bigrat> have been upgraded to 0.33.
357b01df
AAS
958
959The overrides for C<hex> and C<oct> have been rewritten, eliminating
960several problems, and making one incompatible change:
961
962=over
963
964=item *
965
966Formerly, whichever of C<use bigint> or C<use bigrat> was compiled later
967would take precedence over the other, causing C<hex> and C<oct> not to
968respect the other pragma when in scope.
969
970=item *
971
972Using any of these three pragmata would cause C<hex> and C<oct> anywhere
973else in the program to evalute their arguments in list context and prevent
974them from inferring $_ when called without arguments.
975
976=item *
977
978Using any of these three pragmata would make C<oct("1234")> return 1234
979(for any number not beginning with 0) anywhere in the program. Now "1234"
980is translated from octal to decimal, whether within the pragma's scope or
981not.
982
983=item *
984
985The global overrides that facilitate lexical use of C<hex> and C<oct> now
986respect any existing overrides that were in place before the new overrides
987were installed, falling back to them outside of the scope of C<use bignum>.
988
989=item *
990
991C<use bignum "hex">, C<use bignum "oct"> and similar invocations for bigint
992and bigrat now export a C<hex> or C<oct> function, instead of providing a
993global override.
994
995=back
996
997=item *
998
a0932e7e 999L<Carp> has been upgraded to 1.29.
357b01df
AAS
1000
1001Carp is no longer confused when C<caller> returns undef for a package that
1002has been deleted.
1003
1004The C<longmess()> and C<shortmess()> functions are now documented.
1005
1006=item *
1007
606e21ea 1008L<CGI> has been upgraded to 3.63.
357b01df
AAS
1009
1010Unrecognized HTML escape sequences are now handled better, problematic
1011trailing newlines are no longer inserted after E<lt>formE<gt> tags
1012by C<startform()> or C<start_form()>, and bogus "Insecure Dependency"
1013warnings appearing with some versions of perl are now worked around.
1014
1015=item *
1016
606e21ea 1017L<Class::Struct> has been upgraded to 0.64.
357b01df
AAS
1018
1019The constructor now respects overridden accessor methods [perl #29230].
1020
1021=item *
1022
606e21ea 1023L<Compress::Raw::Bzip2> has been upgraded to 2.060.
357b01df
AAS
1024
1025The misuse of Perl's "magic" API has been fixed.
1026
1027=item *
1028
606e21ea 1029L<Compress::Raw::Zlib> has been upgraded to 2.060.
357b01df
AAS
1030
1031Upgrade bundled zlib to version 1.2.7.
1032
1033Fix build failures on Irix, Solaris, and Win32, and also when building as C++
1034[rt.cpan.org #69985], [rt.cpan.org #77030], [rt.cpan.org #75222].
1035
1036The misuse of Perl's "magic" API has been fixed.
1037
1038C<compress()>, C<uncompress()>, C<memGzip()> and C<memGunzip()> have
1039been speeded up by making parameter validation more efficient.
1040
1041=item *
1042
606e21ea 1043L<CPAN::Meta::Requirements> has been upgraded to 2.122.
357b01df
AAS
1044
1045Treat undef requirements to C<from_string_hash> as 0 (with a warning).
1046
1047Added C<requirements_for_module> method.
1048
1049=item *
1050
606e21ea 1051L<CPANPLUS> has been upgraded to 0.9135.
357b01df
AAS
1052
1053Allow adding F<blib/script> to PATH.
1054
1055Save the history between invocations of the shell.
1056
1057Handle multiple C<makemakerargs> and C<makeflags> arguments better.
1058
1059This resolves issues with the SQLite source engine.
1060
1061=item *
1062
606e21ea 1063L<Data::Dumper> has been upgraded to 2.145.
357b01df
AAS
1064
1065It has been optimized to only build a seen-scalar hash as necessary,
1066thereby speeding up serialization drastically.
1067
1068Additional tests were added in order to improve statement, branch, condition
1069and subroutine coverage. On the basis of the coverage analysis, some of the
1070internals of Dumper.pm were refactored. Almost all methods are now
1071documented.
1072
1073=item *
1074
606e21ea 1075L<DB_File> has been upgraded to 1.827.
357b01df
AAS
1076
1077The main Perl module no longer uses the C<"@_"> construct.
1078
1079=item *
1080
606e21ea 1081L<Devel::Peek> has been upgraded to 1.11.
357b01df
AAS
1082
1083This fixes compilation with C++ compilers and makes the module work with
1084the new pad API.
1085
1086=item *
1087
606e21ea 1088L<Digest::MD5> has been upgraded to 2.52.
357b01df
AAS
1089
1090Fix C<Digest::Perl::MD5> OO fallback [rt.cpan.org #66634].
1091
1092=item *
1093
606e21ea 1094L<Digest::SHA> has been upgraded to 5.84.
357b01df
AAS
1095
1096This fixes a double-free bug, which might have caused vulnerabilities
1097in some cases.
1098
1099=item *
1100
606e21ea 1101L<DynaLoader> has been upgraded to 1.18.
357b01df
AAS
1102
1103This is due to a minor code change in the XS for the VMS implementation.
1104
1105This fixes warnings about using C<CODE> sections without an C<OUTPUT>
1106section.
1107
1108=item *
1109
606e21ea 1110L<Encode> has been upgraded to 2.49.
357b01df
AAS
1111
1112The Mac alias x-mac-ce has been added, and various bugs have been fixed
1113in Encode::Unicode, Encode::UTF7 and Encode::GSM0338.
1114
1115=item *
1116
606e21ea 1117L<Env> has been upgraded to 1.04.
357b01df
AAS
1118
1119Its SPLICE implementation no longer misbehaves in list context.
1120
1121=item *
1122
606e21ea 1123L<ExtUtils::CBuilder> has been upgraded to 0.280210.
357b01df
AAS
1124
1125Manifest files are now correctly embedded for those versions of VC++ which
1126make use of them. [perl #111782, #111798].
1127
1128A list of symbols to export can now be passed to C<link()> when on
1129Windows, as on other OSes [perl #115100].
1130
1131=item *
1132
606e21ea 1133L<ExtUtils::ParseXS> has been upgraded to 3.18.
357b01df
AAS
1134
1135The generated C code now avoids unnecessarily incrementing
1136C<PL_amagic_generation> on Perl versions where it's done automatically
1137(or on current Perl where the variable no longer exists).
1138
1139This avoids a bogus warning for initialised XSUB non-parameters [perl
1140#112776].
1141
1142=item *
1143
606e21ea 1144L<File::Copy> has been upgraded to 2.26.
357b01df
AAS
1145
1146C<copy()> no longer zeros files when copying into the same directory,
1147and also now fails (as it has long been documented to do) when attempting
1148to copy a file over itself.
1149
1150=item *
1151
606e21ea 1152L<File::DosGlob> has been upgraded to 1.10.
357b01df
AAS
1153
1154The internal cache of file names that it keeps for each caller is now
1155freed when that caller is freed. This means
1156C<< use File::DosGlob 'glob'; eval 'scalar <*>' >> no longer leaks memory.
1157
1158=item *
1159
606e21ea 1160L<File::Fetch> has been upgraded to 0.38.
357b01df
AAS
1161
1162Added the 'file_default' option for URLs that do not have a file
1163component.
1164
1165Use C<File::HomeDir> when available, and provide C<PERL5_CPANPLUS_HOME> to
1166override the autodetection.
1167
1168Always re-fetch F<CHECKSUMS> if C<fetchdir> is set.
1169
1170=item *
1171
606e21ea 1172L<File::Find> has been upgraded to 1.23.
357b01df
AAS
1173
1174This fixes inconsistent unixy path handling on VMS.
1175
1176Individual files may now appear in list of directories to be searched
1177[perl #59750].
1178
1179=item *
1180
606e21ea 1181L<File::Glob> has been upgraded to 1.20.
357b01df
AAS
1182
1183File::Glob has had exactly the same fix as File::DosGlob. Since it is
1184what Perl's own C<glob> operator itself uses (except on VMS), this means
1185C<< eval 'scalar <*>' >> no longer leaks.
1186
1187A space-separated list of patterns return long lists of results no longer
1188results in memory corruption or crashes. This bug was introduced in
1189Perl 5.16.0. [perl #114984]
1190
1191=item *
1192
606e21ea 1193L<File::Spec::Unix> has been upgraded to 3.40.
357b01df
AAS
1194
1195C<abs2rel> could produce incorrect results when given two relative paths or
1196the root directory twice [perl #111510].
1197
1198=item *
1199
606e21ea 1200L<File::stat> has been upgraded to 1.07.
357b01df
AAS
1201
1202C<File::stat> ignores the L<filetest> pragma, and warns when used in
1203combination therewith. But it was not warning for C<-r>. This has been
1204fixed [perl #111640].
1205
1206C<-p> now works, and does not return false for pipes [perl #111638].
1207
1208Previously C<File::stat>'s overloaded C<-x> and C<-X> operators did not give
1209the correct results for directories or executable files when running as
1210root. They had been treating executable permissions for root just like for
1211any other user, performing group membership tests I<etc> for files not owned
1212by root. They now follow the correct Unix behaviour - for a directory they
1213are always true, and for a file if any of the three execute permission bits
1214are set then they report that root can execute the file. Perl's builtin
1215C<-x> and C<-X> operators have always been correct.
1216
1217=item *
1218
606e21ea 1219L<File::Temp> has been upgraded to 0.23
357b01df
AAS
1220
1221Fixes various bugs involving directory removal. Defers unlinking tempfiles if
1222the initial unlink fails, which fixes problems on NFS.
1223
1224=item *
1225
606e21ea 1226L<GDBM_File> has been upgraded to 1.15.
357b01df
AAS
1227
1228The undocumented optional fifth parameter to C<TIEHASH> has been
1229removed. This was intended to provide control of the callback used by
1230C<gdbm*> functions in case of fatal errors (such as filesystem problems),
1231but did not work (and could never have worked). No code on CPAN even
1232attempted to use it. The callback is now always the previous default,
1233C<croak>. Problems on some platforms with how the C<C> C<croak> function
1234is called have also been resolved.
1235
1236=item *
1237
606e21ea 1238L<Hash::Util> has been upgraded to 0.15.
357b01df
AAS
1239
1240C<hash_unlocked> and C<hashref_unlocked> now returns true if the hash is
1241unlocked, instead of always returning false [perl #112126].
1242
1243C<hash_unlocked>, C<hashref_unlocked>, C<lock_hash_recurse> and
1244C<unlock_hash_recurse> are now exportable [perl #112126].
1245
1246Two new functions, C<hash_locked> and C<hashref_locked>, have been added.
1247Oddly enough, these two functions were already exported, even though they
1248did not exist [perl #112126].
1249
1250=item *
1251
606e21ea 1252L<HTTP::Tiny> has been upgraded to 0.025.
357b01df
AAS
1253
1254Add SSL verification features [github #6], [github #9].
1255
1256Include the final URL in the response hashref.
1257
1258Add C<local_address> option.
1259
1260This improves SSL support.
1261
1262=item *
1263
606e21ea 1264L<IO> has been upgraded to 1.28.
357b01df
AAS
1265
1266C<sync()> can now be called on read-only file handles [perl #64772].
1267
1268L<IO::Socket> tries harder to cache or otherwise fetch socket
1269information.
1270
1271=item *
1272
606e21ea 1273L<IPC::Cmd> has been upgraded to 0.80.
357b01df
AAS
1274
1275Use C<POSIX::_exit> instead of C<exit> in C<run_forked> [rt.cpan.org #76901].
1276
1277=item *
1278
606e21ea 1279L<IPC::Open3> has been upgraded to 1.13.
357b01df
AAS
1280
1281The C<open3()> function no longer uses C<POSIX::close()> to close file
1282descriptors since that breaks the ref-counting of file descriptors done by
1283PerlIO in cases where the file descriptors are shared by PerlIO streams,
1284leading to attempts to close the file descriptors a second time when
1285any such PerlIO streams are closed later on.
1286
1287=item *
1288
606e21ea 1289L<Locale::Codes> has been upgraded to 3.25.
357b01df
AAS
1290
1291It includes some new codes.
1292
1293=item *
1294
606e21ea 1295L<Memoize> has been upgraded to 1.03.
357b01df
AAS
1296
1297Fix the C<MERGE> cache option.
1298
1299=item *
1300
606e21ea 1301L<Module::Build> has been upgraded to 0.4003.
357b01df
AAS
1302
1303Fixed bug where modules without C<$VERSION> might have a version of '0' listed
1304in 'provides' metadata, which will be rejected by PAUSE.
1305
1306Fixed bug in PodParser to allow numerals in module names.
1307
1308Fixed bug where giving arguments twice led to them becoming arrays, resulting
1309in install paths like F<ARRAY(0xdeadbeef)/lib/Foo.pm>.
1310
1311A minor bug fix allows markup to be used around the leading "Name" in
1312a POD "abstract" line, and some documentation improvements have been made.
1313
1314=item *
1315
606e21ea 1316L<Module::CoreList> has been upgraded to 2.90
357b01df
AAS
1317
1318Version information is now stored as a delta, which greatly reduces the
1319size of the F<CoreList.pm> file.
1320
1321This restores compatibility with older versions of perl and cleans up
1322the corelist data for various modules.
1323
1324=item *
1325
606e21ea 1326L<Module::Load::Conditional> has been upgraded to 0.54.
357b01df
AAS
1327
1328Fix use of C<requires> on perls installed to a path with spaces.
1329
1330Various enhancements include the new use of Module::Metadata.
1331
1332=item *
1333
606e21ea 1334L<Module::Metadata> has been upgraded to 1.000011.
357b01df
AAS
1335
1336The creation of a Module::Metadata object for a typical module file has
1337been sped up by about 40%, and some spurious warnings about C<$VERSION>s
1338have been suppressed.
1339
1340=item *
1341
606e21ea 1342L<Module::Pluggable> has been upgraded to 4.7.
357b01df
AAS
1343
1344Amongst other changes, triggers are now allowed on events, which gives
1345a powerful way to modify behaviour.
1346
1347=item *
1348
606e21ea 1349L<Net::Ping> has been upgraded to 2.41.
357b01df
AAS
1350
1351This fixes some test failures on Windows.
1352
1353=item *
1354
606e21ea 1355L<Opcode> has been upgraded to 1.25.
357b01df
AAS
1356
1357Reflect the removal of the boolkeys opcode and the addition of the
1358clonecv, introcv and padcv opcodes.
1359
1360=item *
1361
606e21ea 1362L<overload> has been upgraded to 1.22.
357b01df
AAS
1363
1364C<no overload> now warns for invalid arguments, just like C<use overload>.
1365
1366=item *
1367
606e21ea 1368L<PerlIO::encoding> has been upgraded to 0.16.
357b01df
AAS
1369
1370This is the module implementing the ":encoding(...)" I/O layer. It no
1371longer corrupts memory or crashes when the encoding back-end reallocates
1372the buffer or gives it a typeglob or shared hash key scalar.
1373
1374=item *
1375
606e21ea 1376L<PerlIO::scalar> has been upgraded to 0.16.
357b01df
AAS
1377
1378The buffer scalar supplied may now only contain code pounts 0xFF or
1379lower. [perl #109828]
1380
1381=item *
1382
606e21ea 1383L<Perl::OSType> has been upgraded to 1.003.
357b01df
AAS
1384
1385This fixes a bug detecting the VOS operating system.
1386
1387=item *
1388
606e21ea 1389L<Pod::Html> has been upgraded to 1.18.
357b01df
AAS
1390
1391The option C<--libpods> has been reinstated. It is deprecated, and its use
1392does nothing other than issue a warning that it is no longer supported.
1393
1394Since the HTML files generated by pod2html claim to have a UTF-8 charset,
1395actually write the files out using UTF-8 [perl #111446].
1396
1397=item *
1398
606e21ea 1399L<Pod::Simple> has been upgraded to 3.28.
357b01df
AAS
1400
1401Numerous improvements have been made, mostly to Pod::Simple::XHTML,
1402which also has a compatibility change: the C<codes_in_verbatim> option
1403is now disabled by default. See F<cpan/Pod-Simple/ChangeLog> for the
1404full details.
1405
1406=item *
1407
606e21ea 1408L<re> has been upgraded to 0.23
357b01df
AAS
1409
1410Single character [class]es like C</[s]/> or C</[s]/i> are now optimized
1411as if they did not have the brackets, i.e. C</s/> or C</s/i>.
1412
1413See note about C<op_comp> in the L</Internal Changes> section below.
1414
1415=item *
1416
606e21ea 1417L<Safe> has been upgraded to 2.35.
357b01df
AAS
1418
1419Fix interactions with C<Devel::Cover>.
1420
1421Don't eval code under C<no strict>.
1422
1423=item *
1424
606e21ea 1425L<Scalar::Util> has been upgraded to version 1.27.
357b01df
AAS
1426
1427Fix an overloading issue with C<sum>.
1428
1429C<first> and C<reduce> now check the callback first (so C<&first(1)> is
1430disallowed).
1431
1432Fix C<tainted> on magical values [rt.cpan.org #55763].
1433
1434Fix C<sum> on previously magical values [rt.cpan.org #61118].
1435
1436Fix reading past the end of a fixed buffer [rt.cpan.org #72700].
1437
1438=item *
1439
606e21ea 1440L<Search::Dict> has been upgraded to 1.07.
357b01df
AAS
1441
1442No longer require C<stat> on filehandles.
1443
1444Use C<fc> for casefolding.
1445
1446=item *
1447
606e21ea 1448L<Socket> has been upgraded to 2.009.
357b01df
AAS
1449
1450Constants and functions required for IP multicast source group membership
1451have been added.
1452
1453C<unpack_sockaddr_in()> and C<unpack_sockaddr_in6()> now return just the IP
1454address in scalar context, and C<inet_ntop()> now guards against incorrect
1455length scalars being passed in.
1456
1457This fixes an uninitialized memory read.
1458
1459=item *
1460
606e21ea 1461L<Storable> has been upgraded to 2.41.
357b01df
AAS
1462
1463Modifying C<$_[0]> within C<STORABLE_freeze> no longer results in crashes
1464[perl #112358].
1465
1466An object whose class implements C<STORABLE_attach> is now thawed only once
1467when there are multiple references to it in the structure being thawed
1468[perl #111918].
1469
1470Restricted hashes were not always thawed correctly [perl #73972].
1471
1472Storable would croak when freezing a blessed REF object with a
1473C<STORABLE_freeze()> method [perl #113880].
1474
1475It can now freeze and thaw vstrings correctly. This causes a slight
1476incompatible change in the storage format, so the format version has
1477increased to 2.9.
1478
1479This contains various bugfixes, including compatibility fixes for older
1480versions of Perl and vstring handling.
1481
1482=item *
1483
606e21ea 1484L<Sys::Syslog> has been upgraded to 0.32.
357b01df
AAS
1485
1486This contains several bug fixes relating to C<getservbyname()>,
1487C<setlogsock()>and log levels in C<syslog()>, together with fixes for
1488Windows, Haiku-OS and GNU/kFreeBSD. See F<cpan/Sys-Syslog/Changes>
1489for the full details.
1490
1491=item *
1492
606e21ea 1493L<Term::ANSIColor> has been upgraded to 4.02.
357b01df
AAS
1494
1495Add support for italics.
1496
1497Improve error handling.
1498
1499=item *
1500
606e21ea 1501L<Term::ReadLine> has been upgraded to 1.10. This fixes the
357b01df
AAS
1502use of the B<cpan> and B<cpanp> shells on Windows in the event that the current
1503drive happens to contain a F<\dev\tty> file.
1504
1505=item *
1506
606e21ea 1507L<Test::Harness> has been upgraded to 3.26.
357b01df
AAS
1508
1509Fix glob semantics on Win32 [rt.cpan.org #49732].
1510
1511Don't use C<Win32::GetShortPathName> when calling perl [rt.cpan.org #47890].
1512
1513Ignore -T when reading shebang [rt.cpan.org #64404].
1514
1515Handle the case where we don't know the wait status of the test more
1516gracefully.
1517
1518Make the test summary 'ok' line overridable so that it can be changed to a
1519plugin to make the output of prove idempotent.
1520
1521Don't run world-writable files.
1522
1523=item *
1524
606e21ea 1525L<Text::Tabs> and L<Text::Wrap> have been upgraded to
357b01df
AAS
15262012.0818. Support for Unicode combining characters has been added to them
1527both.
1528
1529=item *
1530
606e21ea 1531L<threads::shared> has been upgraded to 1.31.
357b01df
AAS
1532
1533This adds the option to warn about or ignore attempts to clone structures
1534that can't be cloned, as opposed to just unconditionally dying in
1535that case.
1536
1537This adds support for dual-valued values as created by
1538L<Scalar::Util::dualvar|Scalar::Util/"dualvar NUM, STRING">.
1539
1540=item *
1541
606e21ea 1542L<Tie::StdHandle> has been upgraded to 4.3.
357b01df
AAS
1543
1544C<READ> now respects the offset argument to C<read> [perl #112826].
1545
1546=item *
1547
606e21ea 1548L<Time::Local> has been upgraded to 1.2300.
357b01df
AAS
1549
1550Seconds values greater than 59 but less than 60 no longer cause
1551C<timegm()> and C<timelocal()> to croak.
1552
1553=item *
1554
606e21ea 1555L<Unicode::UCD> has been upgraded to 0.53.
357b01df
AAS
1556
1557This adds a function L<all_casefolds()|Unicode::UCD/all_casefolds()>
1558that returns all the casefolds.
1559
1560=item *
1561
606e21ea 1562L<Win32> has been upgraded to 0.47.
357b01df
AAS
1563
1564New APIs have been added for getting and setting the current code page.
1565
1566=back
1567
1568
5ed58cbd
RS
1569=head2 Removed Modules and Pragmata
1570
32b79602 1571=over
33392251
BF
1572
1573=item *
1574
5ed58cbd
RS
1575L<Version::Requirements> has been removed from the core distribution. It is
1576available under a different name: L<CPAN::Meta::Requirements>.
2426c394 1577
337fb649 1578=back
2426c394 1579
5ed58cbd 1580=head1 Documentation
19718730 1581
5ed58cbd
RS
1582=head2 Changes to Existing Documentation
1583
1584=head3 L<perlcheat>
82d98f72 1585
5a6a30f4 1586=over 4
b7c7d786 1587
5ed58cbd
RS
1588=item *
1589
1590L<perlcheat> has been reorganized, and a few new sections were added.
1591
1592=back
1593
1594=head3 L<perldata>
1595
1596=over 4
82d98f72 1597
5ed58cbd 1598=item *
d2d1e842 1599
5ed58cbd
RS
1600Now explicitly documents the behaviour of hash initializer lists that
1601contain duplicate keys.
f355e93d 1602
5a6a30f4 1603=back
f355e93d 1604
5ed58cbd 1605=head3 L<perldiag>
19718730 1606
19718730 1607=over 4
e14ac59b 1608
5ed58cbd
RS
1609=item *
1610
1611The explanation of symbolic references being prevented by "strict refs"
1612now doesn't assume that the reader knows what symbolic references are.
1613
1614=back
9f351b45 1615
5ed58cbd 1616=head3 L<perlfaq>
9f351b45 1617
5ed58cbd 1618=over 4
9f351b45 1619
5ed58cbd 1620=item *
7cf3104f 1621
5ed58cbd 1622L<perlfaq> has been synchronized with version 5.0150040 from CPAN.
12719193 1623
6253ee75 1624=back
216cf7fc 1625
5ed58cbd 1626=head3 L<perlfunc>
f5b73711 1627
5ed58cbd
RS
1628=over 4
1629
1630=item *
a75569c0 1631
5ed58cbd 1632The return value of C<pipe> is now documented.
a75569c0 1633
5ed58cbd 1634=item *
a75569c0 1635
5ed58cbd
RS
1636Clarified documentation of C<our>.
1637
1638=back
1639
1640=head3 L<perlop>
1641
1642=over 4
1643
1644=item *
1645
1646Loop control verbs (C<dump>, C<goto>, C<next>, C<last> and C<redo>) have always
1647had the same precedence as assignment operators, but this was not documented
1648until now.
1649
1650=back
1651
1652=head3 Diagnostics
1653
1654The following additions or changes have been made to diagnostic output,
1655including warnings and fatal error messages. For the complete list of
1656diagnostic messages, see L<perldiag>.
1657
5ed58cbd
RS
1658=head2 New Diagnostics
1659
5ed58cbd
RS
1660=head3 New Errors
1661
1662=over 4
1663
1664=item *
1665
1666L<Unterminated delimiter for here document|perldiag/"Unterminated delimiter for here document">
1667
1668This message now occurs when a here document label has an initial quotation
1669mark but the final quotation mark is missing.
1670
1671This replaces a bogus and misleading error message about not finding the label
1672itself [perl #114104].
1673
1674=item *
1675
1676L<panic: child pseudo-process was never scheduled|perldiag/"panic: child pseudo-process was never scheduled">
1677
1678This error is thrown when a child pseudo-process in the ithreads implementation
1679on Windows was not scheduled within the time period allowed and therefore was
1680not able to initialize properly [perl #88840].
1681
1682=item *
1683
1684L<Group name must start with a non-digit word character in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Group name must start with a non-digit word character in regex; marked by <-- HERE in m/%s/">
1685
1686This error has been added for C<(?&0)>, which is invalid. It used to
1687produce an incomprehensible error message [perl #101666].
1688
1689=item *
1690
1691L<Can't use an undefined value as a subroutine reference|perldiag/"Can't use an undefined value as %s reference">
1692
1693Calling an undefined value as a subroutine now produces this error message.
1694It used to, but was accidentally disabled, first in Perl 5.004 for
e612b5a0 1695non-magical variables, and then in Perl v5.14 for magical (e.g., tied)
5ed58cbd
RS
1696variables. It has now been restored. In the mean time, undef was treated
1697as an empty string [perl #113576].
1698
1699=item *
1700
1701L<Experimental "%s" subs not enabled|perldiag/"Experimental "%s" subs not enabled">
1702
1703To use lexical subs, you must first enable them:
1704
1705 no warnings 'experimental::lexical_subs';
1706 use feature 'lexical_subs';
1707 my sub foo { ... }
1708
1709=back
1710
1711=head3 New Warnings
1712
1713=over 4
1714
1715=item *
1716
5ed58cbd
RS
1717Strings with code points over 0xFF may not be mapped into in-memory file
1718handles
1719
1720=item *
1721
1722L<'%s' resolved to '\o{%s}%d'|perldiag/"'%s' resolved to '\o{%s}%d'">
1723
1724=item *
1725
1726L<'Trailing white-space in a charnames alias definition is deprecated'|perldiag/"Trailing white-space in a charnames alias definition is deprecated">
1727
1728=item *
1729
1730L<'A sequence of multiple spaces in a charnames alias definition is deprecated'|perldiag/"A sequence of multiple spaces in a charnames alias definition is deprecated">
1731
1732=item *
1733
1734L<'Passing malformed UTF-8 to "%s" is deprecated'|perldiag/"Passing malformed UTF-8 to "%s" is deprecated">
1735
1736=item *
1737
1738L<Subroutine "&%s" is not available|perldiag/"Subroutine "&%s" is not available">
1739
1740(W closure) During compilation, an inner named subroutine or eval is
1741attempting to capture an outer lexical subroutine that is not currently
1742available. This can happen for one of two reasons. First, the lexical
1743subroutine may be declared in an outer anonymous subroutine that has not
1744yet been created. (Remember that named subs are created at compile time,
1745while anonymous subs are created at run-time.) For example,
1746
1747 sub { my sub a {...} sub f { \&a } }
1748
1749At the time that f is created, it can't capture the current the "a" sub,
1750since the anonymous subroutine hasn't been created yet. Conversely, the
1751following won't give a warning since the anonymous subroutine has by now
1752been created and is live:
1753
1754 sub { my sub a {...} eval 'sub f { \&a }' }->();
1755
1756The second situation is caused by an eval accessing a variable that has
1757gone out of scope, for example,
1758
1759 sub f {
1760 my sub a {...}
1761 sub { eval '\&a' }
1762 }
1763 f()->();
1764
1765Here, when the '\&a' in the eval is being compiled, f() is not currently
1766being executed, so its &a is not available for capture.
1767
1768=item *
1769
1770L<"%s" subroutine &%s masks earlier declaration in same %s|perldiag/"%s" subroutine &%s masks earlier declaration in same %s>
1771
1772(W misc) A "my" or "state" subroutine has been redeclared in the
1773current scope or statement, effectively eliminating all access to
1774the previous instance. This is almost always a typographical error.
1775Note that the earlier subroutine will still exist until the end of
1776the scope or until all closure references to it are destroyed.
1777
1778=item *
1779
1780L<The %s feature is experimental|perldiag/"The %s feature is experimental">
1781
1782(S experimental) This warning is emitted if you enable an experimental
1783feature via C<use feature>. Simply suppress the warning if you want
1784to use the feature, but know that in doing so you are taking the risk
1785of using an experimental feature which may change or be removed in a
1786future Perl version:
1787
1788 no warnings "experimental::lexical_subs";
1789 use feature "lexical_subs";
1790
1791=item *
1792
1793L<sleep(%u) too large|perldiag/"sleep(%u) too large">
1794
1795(W overflow) You called C<sleep> with a number that was larger than it can
1796reliably handle and C<sleep> probably slept for less time than requested.
1797
1798=item *
1799
1800L<Wide character in setenv|perldiag/"Wide character in %s">
1801
1802Attempts to put wide characters into environment variables via C<%ENV> now
1803provoke this warning.
1804
1805=item *
1806
1807"L<Invalid negative number (%s) in chr|perldiag/"Invalid negative number (%s) in chr">"
1808
1809C<chr()> now warns when passed a negative value [perl #83048].
1810
1811=item *
1812
1813"L<Integer overflow in srand|perldiag/"Integer overflow in srand">"
1814
1815C<srand()> now warns when passed a value that doesn't fit in a C<UV> (since the
1816value will be truncated rather than overflowing) [perl #40605].
1817
1818=item *
1819
1820"L<-i used with no filenames on the command line, reading from STDIN|perldiag/"-i used with no filenames on the command line, reading from STDIN">"
1821
1822Running perl with the C<-i> flag now warns if no input files are provided on
1823the command line [perl #113410].
1824
1825=back
1826
1827=head2 Changes to Existing Diagnostics
1828
1829=over 4
1830
1831=item *
1832
1833L<$* is no longer supported|perldiag/"$* is no longer supported">
1834
1835The warning that use of C<$*> and C<$#> is no longer supported is now
1836generated for every location that references them. Previously it would fail
1837to be generated if another variable using the same typeglob was seen first
1838(e.g. C<@*> before C<$*>), and would not be generated for the second and
1839subsequent uses. (It's hard to fix the failure to generate warnings at all
1840without also generating them every time, and warning every time is
1841consistent with the warnings that C<$[> used to generate.)
1842
1843=item *
1844
1845The warnings for C<\b{> and C<\B{> were added. They are a deprecation
1846warning which should be turned off by that category. One should not
1847have to turn off regular regexp warnings as well to get rid of these.
1848
1849=item *
1850
1851L<Constant(%s): Call to &{$^H{%s}} did not return a defined value|perldiag/Constant(%s): Call to &{$^H{%s}} did not return a defined value>
1852
1853Constant overloading that returns C<undef> results in this error message.
1854For numeric constants, it used to say "Constant(undef)". "undef" has been
1855replaced with the number itself.
1856
1857=item *
1858
1859The error produced when a module cannot be loaded now includes a hint that
1860the module may need to be installed: "Can't locate hopping.pm in @INC (you
1861may need to install the hopping module) (@INC contains: ...)"
1862
1863=item *
1864
1865L<vector argument not supported with alpha versions|perldiag/vector argument not supported with alpha versions>
1866
1867This warning was not suppressable, even with C<no warnings>. Now it is
1868suppressible, and has been moved from the "internal" category to the
1869"printf" category.
1870
1871=item *
1872
1873C<< Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/ >>
1874
1875This fatal error has been turned into a warning that reads:
1876
1877L<< Quantifier {n,m} with n > m can't match in regex | perldiag/Quantifier {n,m} with n > m can't match in regex >>
1878
1879(W regexp) Minima should be less than or equal to maxima. If you really want
1880your regexp to match something 0 times, just put {0}.
1881
1882=item *
1883
1884The "Runaway prototype" warning that occurs in bizarre cases has been
1885removed as being unhelpful and inconsistent.
1886
1887=item *
1888
1889The "Not a format reference" error has been removed, as the only case in
1890which it could be triggered was a bug.
1891
1892=item *
1893
1894The "Unable to create sub named %s" error has been removed for the same
1895reason.
1896
1897=item *
1898
1899The 'Can't use "my %s" in sort comparison' error has been downgraded to a
1900warning, '"my %s" used in sort comparison' (with 'state' instead of 'my'
1901for state variables). In addition, the heuristics for guessing whether
1902lexical $a or $b has been misused have been improved to generate fewer
1903false positives. Lexical $a and $b are no longer disallowed if they are
1904outside the sort block. Also, a named unary or list operator inside the
1905sort block no longer causes the $a or $b to be ignored [perl #86136].
1906
1907=back
1908
1909=head1 Utility Changes
1910
1911=head3 L<h2xs>
1912
1913=over 4
1914
1915=item *
1916
1917F<h2xs> no longer produces invalid code for empty defines. [perl #20636]
1918
1919=back
1920
1921=head1 Configuration and Compilation
1922
1923=over 4
1924
1925=item *
1926
1927Added C<useversionedarchname> option to Configure
1928
1929When set, it includes 'api_versionstring' in 'archname'. E.g.
1930x86_64-linux-5.13.6-thread-multi. It is unset by default.
1931
1932This feature was requested by Tim Bunce, who observed that
f105b7be 1933C<INSTALL_BASE> creates a library structure that does not
5ed58cbd
RS
1934differentiate by perl version. Instead, it places architecture
1935specific files in "$install_base/lib/perl5/$archname". This makes
f105b7be 1936it difficult to use a common C<INSTALL_BASE> library path with
5ed58cbd
RS
1937multiple versions of perl.
1938
f105b7be 1939By setting C<-Duseversionedarchname>, the $archname will be
c2959982 1940distinct for architecture I<and> API version, allowing mixed use of
f105b7be 1941C<INSTALL_BASE>.
5ed58cbd
RS
1942
1943=item *
1944
ff772877
RS
1945Add a C<PERL_NO_INLINE_FUNCTIONS> option
1946
f105b7be 1947If C<PERL_NO_INLINE_FUNCTIONS> is defined, don't include "inline.h"
ff772877
RS
1948
1949This permits test code to include the perl headers for definitions without
1950creating a link dependency on the perl library (which may not exist yet).
1951
1952=item *
1953
5ed58cbd
RS
1954Configure will honour the external C<MAILDOMAIN> environment variable, if set.
1955
1956=item *
1957
1958C<installman> no longer ignores the silent option
1959
1960=item *
1961
1962Both C<META.yml> and C<META.json> files are now included in the distribution.
1963
1964=item *
1965
1966F<Configure> will now correctly detect C<isblank()> when compiling with a C++
1967compiler.
1968
1969=item *
1970
1971The pager detection in F<Configure> has been improved to allow responses which
1972specify options after the program name, e.g. B</usr/bin/less -R>, if the user
1973accepts the default value. This helps B<perldoc> when handling ANSI escapes
1974[perl #72156].
1975
1976=back
1977
1978=head1 Testing
1979
1980=over 4
1981
1982=item *
1983
1984The test suite now has a section for tests that require very large amounts
1985of memory. These tests won't run by default; they can be enabled by
1986setting the C<PERL_TEST_MEMORY> environment variable to the number of
1987gibibytes of memory that may be safely used.
1988
1989=back
1990
1991=head1 Platform Support
1992
1993=head2 Discontinued Platforms
1994
1995=over 4
1996
1997=item BeOS
1998
1999BeOS was an operating system for personal computers developed by Be Inc,
2000initially for their BeBox hardware. The OS Haiku was written as an open
2001source replacement for/continuation of BeOS, and its perl port is current and
2002actively maintained.
2003
2004=item UTS Global
2005
2006Support code relating to UTS global has been removed. UTS was a mainframe
2007version of System V created by Amdahl, subsequently sold to UTS Global. The
e612b5a0 2008port has not been touched since before Perl v5.8.0, and UTS Global is now
5ed58cbd
RS
2009defunct.
2010
2011=item VM/ESA
2012
2013Support for VM/ESA has been removed. The port was tested on 2.3.0, which
2014IBM ended service on in March 2002. 2.4.0 ended service in June 2003, and
2015was superseded by Z/VM. The current version of Z/VM is V6.2.0, and scheduled
2016for end of service on 2015/04/30.
2017
2018=item MPE/IX
2019
2020Support for MPE/IX has been removed.
2021
2022=item EPOC
2023
2024Support code relating to EPOC has been removed. EPOC was a family of
2025operating systems developed by Psion for mobile devices. It was the
2026predecessor of Symbian. The port was last updated in April 2002.
2027
2028=item Rhapsody
2029
2030Support for Rhapsody has been removed.
2031
2032=back
2033
2034=head2 Platform-Specific Notes
2035
2036=head3 AIX
2037
2038Configure now always adds C<-qlanglvl=extc99> to the CC flags on AIX when
2039using xlC. This will make it easier to compile a number of XS-based modules
2040that assume C99 [perl #113778].
2041
2042=head3 clang++
2043
2044There is now a workaround for a compiler bug that prevented compiling
e612b5a0 2045with clang++ since Perl v5.15.7 [perl #112786].
5ed58cbd
RS
2046
2047=head3 C++
2048
2049When compiling the Perl core as C++ (which is only semi-supported), the
2050mathom functions are now compiled as C<extern "C">, to ensure proper
2051binary compatibility. (However, binary compatibility isn't generally
2052guaranteed anyway in the situations where this would matter.)
2053
2054=head3 Darwin
2055
2056Stop hardcoding an alignment on 8 byte boundaries to fix builds using
2057-Dusemorebits.
2058
2059=head3 Haiku
2060
2061Perl should now work out of the box on Haiku R1 Alpha 4.
2062
2063=head3 MidnightBSD
2064
2065C<libc_r> was removed from recent versions of MidnightBSD and older versions
2066work better with C<pthread>. Threading is now enabled using C<pthread> which
2067corrects build errors with threading enabled on 0.4-CURRENT.
2068
2069=head3 Solaris
2070
2071In Configure, avoid running sed commands with flags not supported on Solaris.
2072
2073=head3 VMS
2074
2075=over
2076
2077=item *
2078
2079Where possible, the case of filenames and command-line arguments is now
2080preserved by enabling the CRTL features C<DECC$EFS_CASE_PRESERVE> and
2081C<DECC$ARGV_PARSE_STYLE> at start-up time. The latter only takes effect
2082when extended parse is enabled in the process from which Perl is run.
2083
2084=item *
2085
2086The character set for Extended Filename Syntax (EFS) is now enabled by default
2087on VMS. Among other things, this provides better handling of dots in directory
05f5908f 2088names, multiple dots in filenames, and spaces in filenames. To obtain the old
5ed58cbd
RS
2089behavior, set the logical name C<DECC$EFS_CHARSET> to C<DISABLE>.
2090
2091=item *
2092
05f5908f 2093Fixed linking on builds configured with C<-Dusemymalloc=y>.
5ed58cbd
RS
2094
2095=item *
2096
05f5908f
CB
2097Experimental support for building Perl with the HP C++ compiler is available
2098by configuring with C<-Dusecxx>.
5ed58cbd
RS
2099
2100=item *
2101
2102All C header files from the top-level directory of the distribution are now
2103installed on VMS, providing consistency with a long-standing practice on other
2104platforms. Previously only a subset were installed, which broke non-core
2105extension builds for extensions that depended on the missing include files.
2106
2107=item *
2108
2109Quotes are now removed from the command verb (but not the parameters) for
2110commands spawned via C<system>, backticks, or a piped C<open>. Previously,
2111quotes on the verb were passed through to DCL, which would fail to recognize
2112the command. Also, if the verb is actually a path to an image or command
2113procedure on an ODS-5 volume, quoting it now allows the path to contain spaces.
2114
2115=item *
2116
2117The B<a2p> build has been fixed for the HP C++ compiler on OpenVMS.
2118
2119=back
2120
2121=head3 Win32
2122
2123=over
2124
2125=item *
2126
2127Perl can now be built using Microsoft's Visual C++ 2012 compiler by specifying
2128CCTYPE=MSVC110 (or MSVC110FREE if you are using the free Express edition for
2129Windows Desktop) in F<win32/Makefile>.
2130
2131=item *
2132
f105b7be 2133The option to build without C<USE_SOCKETS_AS_HANDLES> has been removed.
5ed58cbd
RS
2134
2135=item *
2136
2137Fixed a problem where perl could crash while cleaning up threads (including the
2138main thread) in threaded debugging builds on Win32 and possibly other platforms
2139[perl #114496].
2140
2141=item *
2142
2143A rare race condition that would lead to L<sleep|perlfunc/sleep> taking more
2144time than requested, and possibly even hanging, has been fixed [perl #33096].
2145
2146=item *
2147
2148C<link> on Win32 now attempts to set C<$!> to more appropriate values
2149based on the Win32 API error code. [perl #112272]
2150
2151Perl no longer mangles the environment block, e.g. when launching a new
2152sub-process, when the environment contains non-ASCII characters. Known
2153problems still remain, however, when the environment contains characters
2154outside of the current ANSI codepage (e.g. see the item about Unicode in
2155C<%ENV> in L<http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/todo.pod>).
2156[perl #113536]
2157
2158=item *
2159
2160Building perl with some Windows compilers used to fail due to a problem
2161with miniperl's C<glob> operator (which uses the C<perlglob> program)
2162deleting the PATH environment variable [perl #113798].
2163
2164=item *
2165
f105b7be 2166A new makefile option, C<USE_64_BIT_INT>, has been added to the Windows
5ed58cbd
RS
2167makefiles. Set this to "define" when building a 32-bit perl if you want
2168it to use 64-bit integers.
2169
2170Machine code size reductions, already made to the DLLs of XS modules in
e612b5a0 2171Perl v5.17.2, have now been extended to the perl DLL itself.
5ed58cbd 2172
e612b5a0 2173Building with VC++ 6.0 was inadvertently broken in Perl v5.17.2 but has
5ed58cbd
RS
2174now been fixed again.
2175
2176=back
2177
2178=head3 WinCE
2179
2180Building on WinCE is now possible once again, although more work is required
2181to fully restore a clean build.
2182
2183=head1 Internal Changes
2184
2185=over
2186
2187=item *
2188
4263dd11 2189Synonyms for the misleadingly named C<av_len()> have been created:
5ed58cbd
RS
2190C<av_top_index()> and C<av_tindex>. All three of these return the
2191number of the highest index in the array, not the number of elements it
2192contains.
2193
2194=item *
2195
2196SvUPGRADE() is no longer an expression. Originally this macro (and its
2197underlying function, sv_upgrade()) were documented as boolean, although
2198in reality they always croaked on error and never returned false. In 2005
2199the documentation was updated to specify a void return value, but
2200SvUPGRADE() was left always returning 1 for backwards compatibility. This
2201has now been removed, and SvUPGRADE() is now a statement with no return
2202value.
2203
2204So this is now a syntax error:
2205
2206 if (!SvUPGRADE(sv)) { croak(...); }
2207
2208If you have code like that, simply replace it with
2209
2210 SvUPGRADE(sv);
2211
237b9c6d 2212or to avoid compiler warnings with older perls, possibly
5ed58cbd
RS
2213
2214 (void)SvUPGRADE(sv);
2215
2216=item *
2217
2218Perl has a new copy-on-write mechanism that allows any SvPOK scalar to be
2219upgraded to a copy-on-write scalar. A reference count on the string buffer
d16360cf
RS
2220is stored in the string buffer itself. This feature is B<not enabled by
2221default>.
5ed58cbd 2222
d16360cf
RS
2223It can be enabled in a perl build by running F<Configure> with
2224B<-Accflags=-DPERL_NEW_COPY_ON_WRITE>, and we would encourage XS authors
2225to try their code with such an enabled perl, and provide feedback.
2226Unfortunately, there is not yet a good guide to updating XS code to cope
2227with COW. Until such a document is available, consult the perl5-porters
2228mailing list.
5ed58cbd 2229
d16360cf
RS
2230It breaks a few XS modules by allowing copy-on-write scalars to go
2231through code paths that never encountered them before.
5ed58cbd
RS
2232
2233=item *
2234
2235Copy-on-write no longer uses the SvFAKE and SvREADONLY flags. Hence,
2236SvREADONLY indicates a true read-only SV.
2237
2238Use the SvIsCOW macro (as before) to identify a copy-on-write scalar.
2239
2240=item *
2241
f105b7be 2242C<PL_glob_index> is gone.
5ed58cbd
RS
2243
2244=item *
2245
2246The private Perl_croak_no_modify has had its context parameter removed. It is
2247now has a void prototype. Users of the public API croak_no_modify remain
2248unaffected.
2249
2250=item *
2251
2252Copy-on-write (shared hash key) scalars are no longer marked read-only.
2253C<SvREADONLY> returns false on such an SV, but C<SvIsCOW> still returns
2254true.
2255
2256=item *
2257
2258A new op type, C<OP_PADRANGE> has been introduced. The perl peephole
2259optimiser will, where possible, substitute a single padrange op for a
2260pushmark followed by one or more pad ops, and possibly also skipping list
2261and nextstate ops. In addition, the op can carry out the tasks associated
f105b7be 2262with the RHS of a C<< my(...) = @_ >> assignment, so those ops may be optimised
5ed58cbd
RS
2263away too.
2264
2265=item *
2266
2267Case-insensitive matching inside a [bracketed] character class with a
2268multi-character fold no longer excludes one of the possibilities in the
2269circumstances that it used to. [perl #89774].
2270
2271=item *
2272
2273C<PL_formfeed> has been removed.
2274
2275=item *
2276
2277The regular expression engine no longer reads one byte past the end of the
2278target string. While for all internally well-formed scalars this should
2279never have been a problem, this change facilitates clever tricks with
2280string buffers in CPAN modules. [perl #73542]
2281
2282=item *
2283
2284Inside a BEGIN block, C<PL_compcv> now points to the currently-compiling
2285subroutine, rather than the BEGIN block itself.
2286
2287=item *
2288
2289C<mg_length> has been deprecated.
2290
2291=item *
2292
2293C<sv_len> now always returns a byte count and C<sv_len_utf8> a character
2294count. Previously, C<sv_len> and C<sv_len_utf8> were both buggy and would
2295sometimes returns bytes and sometimes characters. C<sv_len_utf8> no longer
be12dd22 2296assumes that its argument is in UTF-8. Neither of these creates UTF-8 caches
5ed58cbd
RS
2297for tied or overloaded values or for non-PVs any more.
2298
2299=item *
2300
2301C<sv_mortalcopy> now copies string buffers of shared hash key scalars when
2302called from XS modules [perl #79824].
2303
2304=item *
2305
2306C<RXf_SPLIT> and C<RXf_SKIPWHITE> are no longer used. They are now
2307#defined as 0.
2308
2309=item *
2310
2311The new C<RXf_MODIFIES_VARS> flag can be set by custom regular expression
2312engines to indicate that the execution of the regular expression may cause
2313variables to be modified. This lets C<s///> know to skip certain
2314optimisations. Perl's own regular expression engine sets this flag for the
2315special backtracking verbs that set $REGMARK and $REGERROR.
2316
2317=item *
2318
2319The APIs for accessing lexical pads have changed considerably.
2320
2321C<PADLIST>s are now longer C<AV>s, but their own type instead.
2322C<PADLIST>s now contain a C<PAD> and a C<PADNAMELIST> of C<PADNAME>s,
2323rather than C<AV>s for the pad and the list of pad names. C<PAD>s,
2324C<PADNAMELIST>s, and C<PADNAME>s are to be accessed as such through the
2325newly added pad API instead of the plain C<AV> and C<SV> APIs. See
2326L<perlapi> for details.
2327
2328=item *
2329
2330In the regex API, the numbered capture callbacks are passed an index
2331indicating what match variable is being accessed. There are special
2332index values for the C<$`, $&, $&> variables. Previously the same three
2333values were used to retrieve C<${^PREMATCH}, ${^MATCH}, ${^POSTMATCH}>
2334too, but these have now been assigned three separate values. See
2335L<perlreapi/Numbered capture callbacks>.
2336
2337=item *
2338
2339C<PL_sawampersand> was previously a boolean indicating that any of
2340C<$`, $&, $&> had been seen; it now contains three one-bit flags
2341indicating the presence of each of the variables individually.
2342
2343=item *
2344
2345The C<CV *> typemap entry now supports C<&{}> overloading and typeglobs,
2346just like C<&{...}> [perl #96872].
2347
2348=item *
2349
2350The C<SVf_AMAGIC> flag to indicate overloading is now on the stash, not the
2351object. It is now set automatically whenever a method or @ISA changes, so
2352its meaning has changed, too. It now means "potentially overloaded". When
2353the overload table is calculated, the flag is automatically turned off if
2354there is no overloading, so there should be no noticeable slowdown.
2355
2356The staleness of the overload tables is now checked when overload methods
2357are invoked, rather than during C<bless>.
2358
2359"A" magic is gone. The changes to the handling of the C<SVf_AMAGIC> flag
2360eliminate the need for it.
2361
2362C<PL_amagic_generation> has been removed as no longer necessary. For XS
2363modules, it is now a macro alias to C<PL_na>.
2364
2365The fallback overload setting is now stored in a stash entry separate from
2366overloadedness itself.
2367
2368=item *
2369
2370The character-processing code has been cleaned up in places. The changes
2371should be operationally invisible.
2372
2373=item *
2374
e612b5a0 2375The C<study> function was made a no-op in v5.16. It was simply disabled via
5ed58cbd
RS
2376a C<return> statement; the code was left in place. Now the code supporting
2377what C<study> used to do has been removed.
2378
2379=item *
2380
2381Under threaded perls, there is no longer a separate PV allocated for every
2382COP to store its package name (C<< cop->stashpv >>). Instead, there is an
2383offset (C<< cop->stashoff >>) into the new C<PL_stashpad> array, which
2384holds stash pointers.
2385
2386=item *
2387
2388In the pluggable regex API, the C<regexp_engine> struct has acquired a new
2389field C<op_comp>, which is currently just for perl's internal use, and
f105b7be 2390should be initialized to NULL by other regex plugin modules.
5ed58cbd
RS
2391
2392=item *
2393
7779650e 2394A new function C<alloccopstash> has been added to the API, but is considered
5ed58cbd
RS
2395experimental. See L<perlapi>.
2396
2397=item *
2398
2399Perl used to implement get magic in a way that would sometimes hide bugs in
4263dd11 2400code that could call mg_get() too many times on magical values. This hiding of
5ed58cbd
RS
2401errors no longer occurs, so long-standing bugs may become visible now. If
2402you see magic-related errors in XS code, check to make sure it, together
2403with the Perl API functions it uses, calls mg_get() only once on SvGMAGICAL()
2404values.
2405
2406=item *
2407
2408OP allocation for CVs now uses a slab allocator. This simplifies
2409memory management for OPs allocated to a CV, so cleaning up after a
2410compilation error is simpler and safer [perl #111462][perl #112312].
2411
2412=item *
2413
f105b7be 2414C<PERL_DEBUG_READONLY_OPS> has been rewritten to work with the new slab
5ed58cbd
RS
2415allocator, allowing it to catch more violations than before.
2416
2417=item *
2418
f105b7be
KE
2419The old slab allocator for ops, which was only enabled for C<PERL_IMPLICIT_SYS>
2420and C<PERL_DEBUG_READONLY_OPS>, has been retired.
5ed58cbd
RS
2421
2422=back
2423
2424=head1 Selected Bug Fixes
2425
2426=over 4
2427
2428=item *
2429
2430Here-doc terminators no longer require a terminating newline character when
2431they occur at the end of a file. This was already the case at the end of a
2432string eval [perl #65838].
2433
2434=item *
2435
f105b7be 2436C<-DPERL_GLOBAL_STRUCT> builds now free the global struct B<after>
5ed58cbd
RS
2437they've finished using it.
2438
2439=item *
2440
2441A trailing '/' on a path in @INC will no longer have an additional '/'
2442appended.
2443
2444=item *
2445
2446The C<:crlf> layer now works when unread data doesn't fit into its own
2447buffer. [perl #112244].
2448
2449=item *
2450
2451C<ungetc()> now handles UTF-8 encoded data. [perl #116322].
2452
2453=item *
2454
2455A bug in the core typemap caused any C types that map to the T_BOOL core
2456typemap entry to not be set, updated, or modified when the T_BOOL variable was
2457used in an OUTPUT: section with an exception for RETVAL. T_BOOL in an INPUT:
2458section was not affected. Using a T_BOOL return type for an XSUB (RETVAL)
2459was not affected. A side effect of fixing this bug is, if a T_BOOL is specified
2460in the OUTPUT: section (which previous did nothing to the SV), and a read only
2461SV (literal) is passed to the XSUB, croaks like "Modification of a read-only
2462value attempted" will happen. [perl #115796]
2463
2464=item *
2465
2466On many platforms, providing a directory name as the script name caused perl
2467to do nothing and report success. It should now universally report an error
2468and exit nonzero. [perl #61362]
2469
2470=item *
2471
2472C<sort {undef} ...> under fatal warnings no longer crashes. It had
e612b5a0 2473begun crashing in Perl v5.16.
5ed58cbd
RS
2474
2475=item *
2476
2477Stashes blessed into each other
2478(C<bless \%Foo::, 'Bar'; bless \%Bar::, 'Foo'>) no longer result in double
e612b5a0 2479frees. This bug started happening in Perl v5.16.
5ed58cbd
RS
2480
2481=item *
2482
2483Numerous memory leaks have been fixed, mostly involving fatal warnings and
2484syntax errors.
2485
2486=item *
2487
2488Some failed regular expression matches such as C<'f' =~ /../g> were not
2489resetting C<pos>. Also, "match-once" patterns (C<m?...?g>) failed to reset
2490it, too, when invoked a second time [perl #23180].
2491
2492=item *
2493
2494Accessing C<$&> after a pattern match now works if it had not been seen
2495before the match. I.e., this applies to C<${'&'}> (under C<no strict>) and
2496C<eval '$&'>. The same applies to C<$'> and C<$`> [perl #4289].
2497
2498=item *
2499
2500Several bugs involving C<local *ISA> and C<local *Foo::> causing stale
2501MRO caches have been fixed.
2502
2503=item *
2504
2505Defining a subroutine when its typeglob has been aliased no longer results
e612b5a0 2506in stale method caches. This bug was introduced in Perl v5.10.
5ed58cbd
RS
2507
2508=item *
2509
2510Localising a typeglob containing a subroutine when the typeglob's package
2511has been deleted from its parent stash no longer produces an error. This
e612b5a0 2512bug was introduced in Perl v5.14.
5ed58cbd
RS
2513
2514=item *
2515
2516Under some circumstances, C<local *method=...> would fail to reset method
2517caches upon scope exit.
2518
2519=item *
2520
2521C</[.foo.]/> is no longer an error, but produces a warning (as before) and
2522is treated as C</[.fo]/> [perl #115818].
2523
2524=item *
2525
2526C<goto $tied_var> now calls FETCH before deciding what type of goto
2527(subroutine or label) this is.
2528
2529=item *
2530
2531Renaming packages through glob assignment
2532(C<*Foo:: = *Bar::; *Bar:: = *Baz::>) in combination with C<m?...?> and
2533C<reset> no longer makes threaded builds crash.
2534
2535=item *
2536
2537A number of bugs related to assigning a list to hash have been fixed. Many of
2538these involve lists with repeated keys like C<(1, 1, 1, 1)>.
2539
2540=over 4
2541
2542=item *
2543
2544The expression C<scalar(%h = (1, 1, 1, 1))> now returns C<4>, not C<2>.
2545
2546=item *
2547
2548The return value of C<%h = (1, 1, 1)> in list context was wrong. Previously
2549this would return C<(1, undef, 1)>, now it returns C<(1, undef)>.
2550
2551=item *
2552
2553Perl now issues the same warning on C<($s, %h) = (1, {})> as it does for
2554C<(%h) = ({})>, "Reference found where even-sized list expected".
2555
2556=item *
2557
2558A number of additional edge cases in list assignment to hashes were
2559corrected. For more details see commit 23b7025ebc.
2560
2561=back
2562
2563=item *
2564
2565Attributes applied to lexical variables no longer leak memory.
2566[perl #114764]
2567
2568=item *
2569
2570C<dump>, C<goto>, C<last>, C<next>, C<redo> or C<require> followed by a
2571bareword (or version) and then an infix operator is no longer a syntax
2572error. It used to be for those infix operators (like C<+>) that have a
2573different meaning where a term is expected. [perl #105924]
2574
2575=item *
2576
2577C<require a::b . 1> and C<require a::b + 1> no longer produce erroneous
2578ambiguity warnings. [perl #107002]
2579
2580=item *
2581
2582Class method calls are now allowed on any string, and not just strings
2583beginning with an alphanumeric character. [perl #105922]
2584
2585=item *
2586
2587An empty pattern created with C<qr//> used in C<m///> no longer triggers
2588the "empty pattern reuses last pattern" behaviour. [perl #96230]
2589
2590=item *
2591
2592Tying a hash during iteration no longer results in a memory leak.
2593
2594=item *
2595
2596Freeing a tied hash during iteration no longer results in a memory leak.
2597
2598=item *
2599
2600List assignment to a tied array or hash that dies on STORE no longer
2601results in a memory leak.
2602
2603=item *
2604
2605If the hint hash (C<%^H>) is tied, compile-time scope entry (which copies
2606the hint hash) no longer leaks memory if FETCH dies. [perl #107000]
2607
2608=item *
2609
2610Constant folding no longer inappropriately triggers the special
2611C<split " "> behaviour. [perl #94490]
2612
2613=item *
2614
2615C<defined scalar(@array)>, C<defined do { &foo }>, and similar constructs
2616now treat the argument to C<defined> as a simple scalar. [perl #97466]
2617
2618=item *
2619
2620Running a custom debugging that defines no C<*DB::DB> glob or provides a
2621subroutine stub for C<&DB::DB> no longer results in a crash, but an error
2622instead. [perl #114990]
2623
2624=item *
2625
2626C<reset ""> now matches its documentation. C<reset> only resets C<m?...?>
2627patterns when called with no argument. An empty string for an argument now
2628does nothing. (It used to be treated as no argument.) [perl #97958]
2629
2630=item *
2631
2632C<printf> with an argument returning an empty list no longer reads past the
2633end of the stack, resulting in erratic behaviour. [perl #77094]
2634
2635=item *
2636
2637C<--subname> no longer produces erroneous ambiguity warnings.
2638[perl #77240]
2639
2640=item *
2641
2642C<v10> is now allowed as a label or package name. This was inadvertently
e612b5a0 2643broken when v-strings were added in Perl v5.6. [perl #56880]
5ed58cbd
RS
2644
2645=item *
2646
2647C<length>, C<pos>, C<substr> and C<sprintf> could be confused by ties,
2648overloading, references and typeglobs if the stringification of such
be12dd22 2649changed the internal representation to or from UTF-8. [perl #114410]
5ed58cbd
RS
2650
2651=item *
2652
2653utf8::encode now calls FETCH and STORE on tied variables. utf8::decode now
2654calls STORE (it was already calling FETCH).
2655
2656=item *
2657
2658C<$tied =~ s/$non_utf8/$utf8/> no longer loops infinitely if the tied
2659variable returns a Latin-1 string, shared hash key scalar, or reference or
2ae351f8 2660typeglob that stringifies as ASCII or Latin-1. This was a regression from
e612b5a0 2661v5.12.
5ed58cbd
RS
2662
2663=item *
2664
2665C<s///> without /e is now better at detecting when it needs to forego
2666certain optimisations, fixing some buggy cases:
2667
2668=over
2669
2670=item *
2671
2672Match variables in certain constructs (C<&&>, C<||>, C<..> and others) in
2673the replacement part; e.g., C<s/(.)/$l{$a||$1}/g>. [perl #26986]
2674
2675=item *
2676
2677Aliases to match variables in the replacement.
2678
2679=item *
2680
2681C<$REGERROR> or C<$REGMARK> in the replacement. [perl #49190]
2682
2683=item *
2684
2685An empty pattern (C<s//$foo/>) that causes the last-successful pattern to
2686be used, when that pattern contains code blocks that modify the variables
2687in the replacement.
2688
2689=back
2690
2691=item *
2692
2693The taintedness of the replacement string no longer affects the taintedness
2694of the return value of C<s///e>.
2695
2696=item *
2697
2698The C<$|> autoflush variable is created on-the-fly when needed. If this
2699happened (e.g., if it was mentioned in a module or eval) when the
2700currently-selected filehandle was a typeglob with an empty IO slot, it used
2701to crash. [perl #115206]
2702
2703=item *
2704
2705Line numbers at the end of a string eval are no longer off by one.
2706[perl #114658]
2707
2708=item *
2709
2710@INC filters (subroutines returned by subroutines in @INC) that set $_ to a
2711copy-on-write scalar no longer cause the parser to modify that string
2712buffer in place.
2713
2714=item *
2715
2716C<length($object)> no longer returns the undefined value if the object has
2717string overloading that returns undef. [perl #115260]
2718
2719=item *
2720
2721The use of C<PL_stashcache>, the stash name lookup cache for method calls, has
2722been restored,
2723
2724Commit da6b625f78f5f133 in August 2011 inadvertently broke the code that looks
2725up values in C<PL_stashcache>. As it's a only cache, quite correctly everything
2726carried on working without it.
2727
2728=item *
2729
e612b5a0 2730The error "Can't localize through a reference" had disappeared in v5.16.0
5ed58cbd 2731when C<local %$ref> appeared on the last line of an lvalue subroutine.
e612b5a0 2732This error disappeared for C<\local %$ref> in perl v5.8.1. It has now
5ed58cbd
RS
2733been restored.
2734
2735=item *
2736
2737The parsing of here-docs has been improved significantly, fixing several
2738parsing bugs and crashes and one memory leak, and correcting wrong
2739subsequent line numbers under certain conditions.
2740
2741=item *
2742
2743Inside an eval, the error message for an unterminated here-doc no longer
2744has a newline in the middle of it [perl #70836].
2745
2746=item *
2747
2748A substitution inside a substitution pattern (C<s/${s|||}//>) no longer
2749confuses the parser.
2750
2751=item *
2752
2753It may be an odd place to allow comments, but C<s//"" # hello/e> has
2754always worked, I<unless> there happens to be a null character before the
2755first #. Now it works even in the presence of nulls.
2756
2757=item *
2758
2759An invalid range in C<tr///> or C<y///> no longer results in a memory leak.
2760
2761=item *
2762
2763String eval no longer treats a semicolon-delimited quote-like operator at
2764the very end (C<eval 'q;;'>) as a syntax error.
2765
2766=item *
2767
2768C<< warn {$_ => 1} + 1 >> is no longer a syntax error. The parser used to
2769get confused with certain list operators followed by an anonymous hash and
2770then an infix operator that shares its form with a unary operator.
2771
2772=item *
2773
2774C<(caller $n)[6]> (which gives the text of the eval) used to return the
2775actual parser buffer. Modifying it could result in crashes. Now it always
2776returns a copy. The string returned no longer has "\n;" tacked on to the
2777end. The returned text also includes here-doc bodies, which used to be
2778omitted.
2779
2780=item *
2781
be12dd22
RS
2782Reset the UTF-8 position cache when accessing magical variables to avoid the
2783string buffer and the UTF-8 position cache getting out of sync
5ed58cbd
RS
2784[perl #114410].
2785
2786=item *
2787
be12dd22
RS
2788Various cases of get magic being called twice for magical UTF-8
2789strings have been fixed.
5ed58cbd
RS
2790
2791=item *
2792
2793This code (when not in the presence of C<$&> etc)
2794
2795 $_ = 'x' x 1_000_000;
2796 1 while /(.)/;
2797
2798used to skip the buffer copy for performance reasons, but suffered from C<$1>
2799etc changing if the original string changed. That's now been fixed.
2800
2801=item *
2802
2803Perl doesn't use PerlIO anymore to report out of memory messages, as PerlIO
2804might attempt to allocate more memory.
2805
2806=item *
2807
2808In a regular expression, if something is quantified with C<{n,m}> where
2809C<S<n E<gt> m>>, it can't possibly match. Previously this was a fatal
2810error, but now is merely a warning (and that something won't match).
2811[perl #82954].
2812
2813=item *
2814
2815It used to be possible for formats defined in subroutines that have
2816subsequently been undefined and redefined to close over variables in the
2817wrong pad (the newly-defined enclosing sub), resulting in crashes or
2818"Bizarre copy" errors.
2819
2820=item *
2821
2822Redefinition of XSUBs at run time could produce warnings with the wrong
2823line number.
2824
2825=item *
2826
2827The %vd sprintf format does not support version objects for alpha versions.
2828It used to output the format itself (%vd) when passed an alpha version, and
2829also emit an "Invalid conversion in printf" warning. It no longer does,
2830but produces the empty string in the output. It also no longer leaks
2831memory in this case.
2832
2833=item *
2834
2835C<< $obj->SUPER::method >> calls in the main package could fail if the
2836SUPER package had already been accessed by other means.
2837
2838=item *
2839
f105b7be 2840Stash aliasing (C<< *foo:: = *bar:: >>) no longer causes SUPER calls to ignore
5ed58cbd
RS
2841changes to methods or @ISA or use the wrong package.
2842
2843=item *
2844
2845Method calls on packages whose names end in ::SUPER are no longer treated
2846as SUPER method calls, resulting in failure to find the method.
2847Furthermore, defining subroutines in such packages no longer causes them to
2848be found by SUPER method calls on the containing package [perl #114924].
2849
2850=item *
2851
2852C<\w> now matches the code points U+200C (ZERO WIDTH NON-JOINER) and U+200D
2853(ZERO WIDTH JOINER). C<\W> no longer matches these. This change is because
2854Unicode corrected their definition of what C<\w> should match.
2855
2856=item *
2857
2858C<dump LABEL> no longer leaks its label.
2859
2860=item *
2861
2862Constant folding no longer changes the behaviour of functions like C<stat()>
2863and C<truncate()> that can take either filenames or handles.
2864C<stat 1 ? foo : bar> nows treats its argument as a file name (since it is an
2865arbitrary expression), rather than the handle "foo".
2866
2867=item *
2868
2869C<truncate FOO, $len> no longer falls back to treating "FOO" as a file name if
e612b5a0 2870the filehandle has been deleted. This was broken in Perl v5.16.0.
5ed58cbd
RS
2871
2872=item *
2873
2874Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no
2875longer cause double frees or panic messages.
2876
2877=item *
2878
2879C<s///> now turns vstrings into plain strings when performing a substitution,
2880even if the resulting string is the same (C<s/a/a/>).
2881
2882=item *
2883
2884Prototype mismatch warnings no longer erroneously treat constant subs as having
2885no prototype when they actually have "".
2886
2887=item *
2888
2889Constant subroutines and forward declarations no longer prevent prototype
2890mismatch warnings from omitting the sub name.
2891
2892=item *
2893
2894C<undef> on a subroutine now clears call checkers.
2895
2896=item *
2897
e612b5a0 2898The C<ref> operator started leaking memory on blessed objects in Perl v5.16.0.
5ed58cbd
RS
2899This has been fixed [perl #114340].
2900
2901=item *
2902
2903C<use> no longer tries to parse its arguments as a statement, making
2904C<use constant { () };> a syntax error [perl #114222].
2905
2906=item *
2907
2908On debugging builds, "uninitialized" warnings inside formats no longer cause
2909assertion failures.
2910
2911=item *
2912
2913On debugging builds, subroutines nested inside formats no longer cause
2914assertion failures [perl #78550].
2915
2916=item *
2917
2918Formats and C<use> statements are now permitted inside formats.
2919
2920=item *
2921
2922C<print $x> and C<sub { print $x }-E<gt>()> now always produce the same output.
2923It was possible for the latter to refuse to close over $x if the variable was
2924not active; e.g., if it was defined outside a currently-running named
2925subroutine.
2926
2927=item *
2928
2929Similarly, C<print $x> and C<print eval '$x'> now produce the same output.
2930This also allows "my $x if 0" variables to be seen in the debugger [perl
2931#114018].
2932
2933=item *
2934
2935Formats called recursively no longer stomp on their own lexical variables, but
2936each recursive call has its own set of lexicals.
2937
2938=item *
2939
2940Attempting to free an active format or the handle associated with it no longer
2941results in a crash.
2942
2943=item *
2944
2945Format parsing no longer gets confused by braces, semicolons and low-precedence
2946operators. It used to be possible to use braces as format delimiters (instead
2947of C<=> and C<.>), but only sometimes. Semicolons and low-precedence operators
2948in format argument lines no longer confuse the parser into ignoring the line's
2949return value. In format argument lines, braces can now be used for anonymous
2950hashes, instead of being treated always as C<do> blocks.
2951
2952=item *
2953
2954Formats can now be nested inside code blocks in regular expressions and other
2955quoted constructs (C</(?{...})/> and C<qq/${...}/>) [perl #114040].
2956
2957=item *
2958
2959Formats are no longer created after compilation errors.
2960
2961=item *
2962
2963Under debugging builds, the B<-DA> command line option started crashing in Perl
e612b5a0 2964v5.16.0. It has been fixed [perl #114368].
5ed58cbd
RS
2965
2966=item *
2967
2968A potential deadlock scenario involving the premature termination of a pseudo-
2969forked child in a Windows build with ithreads enabled has been fixed. This
2970resolves the common problem of the F<t/op/fork.t> test hanging on Windows [perl
2971#88840].
2972
2973=item *
2974
5ed58cbd
RS
2975The code which generates errors from C<require()> could potentially read one or
2976two bytes before the start of the filename for filenames less than three bytes
2977long and ending C</\.p?\z/>. This has now been fixed. Note that it could
2978never have happened with module names given to C<use()> or C<require()> anyway.
2979
2980=item *
2981
2982The handling of pathnames of modules given to C<require()> has been made
2983thread-safe on VMS.
2984
2985=item *
2986
d85cd26b
RS
2987Non-blocking sockets have been fixed on VMS.
2988
2989=item *
2990
5ed58cbd
RS
2991A bug in the compilation of a C</(?{})/> expression which affected the TryCatch
2992test suite has been fixed [perl #114242].
2993
2994=item *
2995
2996Pod can now be nested in code inside a quoted construct outside of a string
2997eval. This used to work only within string evals [perl #114040].
2998
2999=item *
3000
3001C<goto ''> now looks for an empty label, producing the "goto must have
3002label" error message, instead of exiting the program [perl #111794].
3003
3004=item *
3005
3006C<goto "\0"> now dies with "Can't find label" instead of "goto must have
3007label".
3008
3009=item *
3010
3011The C function C<hv_store> used to result in crashes when used on C<%^H>
3012[perl #111000].
3013
3014=item *
3015
3016A call checker attached to a closure prototype via C<cv_set_call_checker>
3017is now copied to closures cloned from it. So C<cv_set_call_checker> now
3018works inside an attribute handler for a closure.
3019
3020=item *
3021
3022Writing to C<$^N> used to have no effect. Now it croaks with "Modification
3023of a read-only value" by default, but that can be overridden by a custom
3024regular expression engine, as with C<$1> [perl #112184].
3025
3026=item *
3027
3028C<undef> on a control character glob (C<undef *^H>) no longer emits an
3029erroneous warning about ambiguity [perl #112456].
3030
3031=item *
3032
3033For efficiency's sake, many operators and built-in functions return the
3034same scalar each time. Lvalue subroutines and subroutines in the CORE::
3035namespace were allowing this implementation detail to leak through.
3036C<print &CORE::uc("a"), &CORE::uc("b")> used to print "BB". The same thing
3037would happen with an lvalue subroutine returning the return value of C<uc>.
3038Now the value is copied in such cases.
3039
3040=item *
3041
3042C<method {}> syntax with an empty block or a block returning an empty list
3043used to crash or use some random value left on the stack as its invocant.
3044Now it produces an error.
3045
3046=item *
3047
3048C<vec> now works with extremely large offsets (E<gt>2 GB) [perl #111730].
3049
3050=item *
3051
3052Changes to overload settings now take effect immediately, as do changes to
3053inheritance that affect overloading. They used to take effect only after
3054C<bless>.
3055
3056Objects that were created before a class had any overloading used to remain
3057non-overloaded even if the class gained overloading through C<use overload>
3058or @ISA changes, and even after C<bless>. This has been fixed
3059[perl #112708].
3060
3061=item *
3062
3063Classes with overloading can now inherit fallback values.
3064
3065=item *
3066
3067Overloading was not respecting a fallback value of 0 if there were
3068overloaded objects on both sides of an assignment operator like C<+=>
3069[perl #111856].
3070
3071=item *
3072
3073C<pos> now croaks with hash and array arguments, instead of producing
3074erroneous warnings.
3075
3076=item *
3077
3078C<while(each %h)> now implies C<while(defined($_ = each %h))>, like
3079C<readline> and C<readdir>.
3080
3081=item *
3082
3083Subs in the CORE:: namespace no longer crash after C<undef *_> when called
3084with no argument list (C<&CORE::time> with no parentheses).
3085
3086=item *
3087
3088C<unpack> no longer produces the "'/' must follow a numeric type in unpack"
3089error when it is the data that are at fault [perl #60204].
3090
3091=item *
3092
3093C<join> and C<"@array"> now call FETCH only once on a tied C<$">
3094[perl #8931].
3095
3096=item *
3097
3098Some subroutine calls generated by compiling core ops affected by a
3099C<CORE::GLOBAL> override had op checking performed twice. The checking
3100is always idempotent for pure Perl code, but the double checking can
3101matter when custom call checkers are involved.
3102
3103=item *
3104
3105A race condition used to exist around fork that could cause a signal sent to
3106the parent to be handled by both parent and child. Signals are now blocked
3107briefly around fork to prevent this from happening [perl #82580].
3108
3109=item *
3110
3111The implementation of code blocks in regular expressions, such as C<(?{})>
3112and C<(??{})>, has been heavily reworked to eliminate a whole slew of bugs.
3113The main user-visible changes are:
3114
3115=over 4
3116
3117=item *
3118
3119Code blocks within patterns are now parsed in the same pass as the
3120surrounding code; in particular it is no longer necessary to have balanced
3121braces: this now works:
3122
3123 /(?{ $x='{' })/
3124
3125This means that this error message is no longer generated:
3126
3127 Sequence (?{...}) not terminated or not {}-balanced in regex
3128
3129but a new error may be seen:
3130
3131 Sequence (?{...}) not terminated with ')'
3132
3133In addition, literal code blocks within run-time patterns are only
3134compiled once, at perl compile-time:
3135
3136 for my $p (...) {
3137 # this 'FOO' block of code is compiled once,
3138 # at the same time as the surrounding 'for' loop
3139 /$p{(?{FOO;})/;
3140 }
3141
3142=item *
3143
3144Lexical variables are now sane as regards scope, recursion and closure
3145behavior. In particular, C</A(?{B})C/> behaves (from a closure viewpoint)
3146exactly like C</A/ && do { B } && /C/>, while C<qr/A(?{B})C/> is like
3147C<sub {/A/ && do { B } && /C/}>. So this code now works how you might
3148expect, creating three regexes that match 0, 1, and 2:
3149
3150 for my $i (0..2) {
3151 push @r, qr/^(??{$i})$/;
3152 }
3153 "1" =~ $r[1]; # matches
3154
3155=item *
3156
3157The C<use re 'eval'> pragma is now only required for code blocks defined
3158at runtime; in particular in the following, the text of the C<$r> pattern is
3159still interpolated into the new pattern and recompiled, but the individual
3160compiled code-blocks within C<$r> are reused rather than being recompiled,
3161and C<use re 'eval'> isn't needed any more:
3162
3163 my $r = qr/abc(?{....})def/;
3164 /xyz$r/;
3165
3166=item *
3167
3168Flow control operators no longer crash. Each code block runs in a new
3169dynamic scope, so C<next> etc. will not see
3170any enclosing loops. C<return> returns a value
3171from the code block, not from any enclosing subroutine.
3172
3173=item *
3174
3175Perl normally caches the compilation of run-time patterns, and doesn't
3176recompile if the pattern hasn't changed, but this is now disabled if
3177required for the correct behavior of closures. For example:
3178
3179 my $code = '(??{$x})';
3180 for my $x (1..3) {
3181 # recompile to see fresh value of $x each time
3182 $x =~ /$code/;
3183 }
3184
3185=item *
3186
3187The C</msix> and C<(?msix)> etc. flags are now propagated into the return
3188value from C<(??{})>; this now works:
3189
3190 "AB" =~ /a(??{'b'})/i;
3191
3192=item *
3193
3194Warnings and errors will appear to come from the surrounding code (or for
3195run-time code blocks, from an eval) rather than from an C<re_eval>:
3196
3197 use re 'eval'; $c = '(?{ warn "foo" })'; /$c/;
3198 /(?{ warn "foo" })/;
3199
3200formerly gave:
3201
3202 foo at (re_eval 1) line 1.
3203 foo at (re_eval 2) line 1.
3204
3205and now gives:
3206
3207 foo at (eval 1) line 1.
3208 foo at /some/prog line 2.
3209
3210=back
3211
3212=item *
3213
2e7bc647
KW
3214Perl now can be recompiled to use any Unicode version. In v5.16, it
3215worked on Unicodes 6.0 and 6.1, but there were various bugs if earlier
3216releases were used; the older the release the more problems.
5ed58cbd
RS
3217
3218=item *
3219
3220C<vec> no longer produces "uninitialized" warnings in lvalue context
3221[perl #9423].
3222
3223=item *
3224
3225An optimization involving fixed strings in regular expressions could cause
3226a severe performance penalty in edge cases. This has been fixed
3227[perl #76546].
3228
3229=item *
3230
3231In certain cases, including empty subpatterns within a regular expression (such
3232as C<(?:)> or C<(?:|)>) could disable some optimizations. This has been fixed.
3233
3234=item *
3235
3236The "Can't find an opnumber" message that C<prototype> produces when passed
3237a string like "CORE::nonexistent_keyword" now passes UTF-8 and embedded
3238NULs through unchanged [perl #97478].
3239
3240=item *
3241
3242C<prototype> now treats magical variables like C<$1> the same way as
3243non-magical variables when checking for the CORE:: prefix, instead of
3244treating them as subroutine names.
3245
3246=item *
3247
3248Under threaded perls, a runtime code block in a regular expression could
3249corrupt the package name stored in the op tree, resulting in bad reads
3250in C<caller>, and possibly crashes [perl #113060].
3251
3252=item *
3253
3254Referencing a closure prototype (C<\&{$_[1]}> in an attribute handler for a
3255closure) no longer results in a copy of the subroutine (or assertion
3256failures on debugging builds).
3257
3258=item *
3259
3260C<eval '__PACKAGE__'> now returns the right answer on threaded builds if
3261the current package has been assigned over (as in
3262C<*ThisPackage:: = *ThatPackage::>) [perl #78742].
3263
3264=item *
3265
3266If a package is deleted by code that it calls, it is possible for C<caller>
3267to see a stack frame belonging to that deleted package. C<caller> could
3268crash if the stash's memory address was reused for a scalar and a
3269substitution was performed on the same scalar [perl #113486].
3270
3271=item *
3272
3273C<UNIVERSAL::can> no longer treats its first argument differently
3274depending on whether it is a string or number internally.
3275
3276=item *
3277
3278C<open> with C<< <& >> for the mode checks to see whether the third argument is
3279a number, in determining whether to treat it as a file descriptor or a handle
3280name. Magical variables like C<$1> were always failing the numeric check and
3281being treated as handle names.
3282
3283=item *
3284
3285C<warn>'s handling of magical variables (C<$1>, ties) has undergone several
3286fixes. C<FETCH> is only called once now on a tied argument or a tied C<$@>
3287[perl #97480]. Tied variables returning objects that stringify as "" are
3288no longer ignored. A tied C<$@> that happened to return a reference the
3289I<previous> time it was used is no longer ignored.
3290
3291=item *
3292
3293C<warn ""> now treats C<$@> with a number in it the same way, regardless of
3294whether it happened via C<$@=3> or C<$@="3">. It used to ignore the
3295former. Now it appends "\t...caught", as it has always done with
3296C<$@="3">.
3297
3298=item *
3299
3300Numeric operators on magical variables (e.g., S<C<$1 + 1>>) used to use
3301floating point operations even where integer operations were more appropriate,
3302resulting in loss of accuracy on 64-bit platforms [perl #109542].
3303
3304=item *
3305
3306Unary negation no longer treats a string as a number if the string happened
3307to be used as a number at some point. So, if C<$x> contains the string "dogs",
3308C<-$x> returns "-dogs" even if C<$y=0+$x> has happened at some point.
3309
3310=item *
3311
e612b5a0 3312In Perl v5.14, C<-'-10'> was fixed to return "10", not "+10". But magical
5ed58cbd
RS
3313variables (C<$1>, ties) were not fixed till now [perl #57706].
3314
3315=item *
3316
3317Unary negation now treats strings consistently, regardless of the internal
3318C<UTF8> flag.
3319
3320=item *
3321
3322A regression introduced in Perl v5.16.0 involving
3323C<tr/I<SEARCHLIST>/I<REPLACEMENTLIST>/> has been fixed. Only the first
3324instance is supposed to be meaningful if a character appears more than
3325once in C<I<SEARCHLIST>>. Under some circumstances, the final instance
3326was overriding all earlier ones. [perl #113584]
3327
3328=item *
3329
3330Regular expressions like C<qr/\87/> previously silently inserted a NUL
3331character, thus matching as if it had been written C<qr/\00087/>. Now it
3332matches as if it had been written as C<qr/87/>, with a message that the
3333sequence C<"\8"> is unrecognized.
3334
3335=item *
3336
3337C<__SUB__> now works in special blocks (C<BEGIN>, C<END>, etc.).
3338
3339=item *
3340
3341Thread creation on Windows could theoretically result in a crash if done
3342inside a C<BEGIN> block. It still does not work properly, but it no longer
3343crashes [perl #111610].
3344
3345=item *
3346
3347C<\&{''}> (with the empty string) now autovivifies a stub like any other
3348sub name, and no longer produces the "Unable to create sub" error
3349[perl #94476].
3350
3351=item *
3352
3353A regression introduced in v5.14.0 has been fixed, in which some calls
3354to the C<re> module would clobber C<$_> [perl #113750].
3355
3356=item *
3357
3358C<do FILE> now always either sets or clears C<$@>, even when the file can't be
3359read. This ensures that testing C<$@> first (as recommended by the
3360documentation) always returns the correct result.
3361
3362=item *
3363
3364The array iterator used for the C<each @array> construct is now correctly
237b9c6d
SK
3365reset when C<@array> is cleared [perl #75596]. This happens, for example, when
3366the array is globally assigned to, as in C<@array = (...)>, but not when its
5ed58cbd
RS
3367B<values> are assigned to. In terms of the XS API, it means that C<av_clear()>
3368will now reset the iterator.
3369
3370This mirrors the behaviour of the hash iterator when the hash is cleared.
3371
3372=item *
3373
3374C<< $class->can >>, C<< $class->isa >>, and C<< $class->DOES >> now return
3375correct results, regardless of whether that package referred to by C<$class>
3376exists [perl #47113].
3377
3378=item *
3379
3380Arriving signals no longer clear C<$@> [perl #45173].
3381
3382=item *
3383
3384Allow C<my ()> declarations with an empty variable list [perl #113554].
3385
3386=item *
3387
3388During parsing, subs declared after errors no longer leave stubs
3389[perl #113712].
3390
3391=item *
3392
3393Closures containing no string evals no longer hang on to their containing
3394subroutines, allowing variables closed over by outer subroutines to be
3395freed when the outer sub is freed, even if the inner sub still exists
3396[perl #89544].
3397
3398=item *
3399
3400Duplication of in-memory filehandles by opening with a "<&=" or ">&=" mode
e612b5a0 3401stopped working properly in v5.16.0. It was causing the new handle to
5ed58cbd
RS
3402reference a different scalar variable. This has been fixed [perl #113764].
3403
3404=item *
3405
3406C<qr//> expressions no longer crash with custom regular expression engines
3407that do not set C<offs> at regular expression compilation time
3408[perl #112962].
3409
3410=item *
3411
3412C<delete local> no longer crashes with certain magical arrays and hashes
3413[perl #112966].
3414
3415=item *
3416
3417C<local> on elements of certain magical arrays and hashes used not to
3418arrange to have the element deleted on scope exit, even if the element did
3419not exist before C<local>.
3420
3421=item *
3422
3423C<scalar(write)> no longer returns multiple items [perl #73690].
3424
3425=item *
3426
3427String to floating point conversions no longer misparse certain strings under
3428C<use locale> [perl #109318].
3429
3430=item *
3431
3432C<@INC> filters that die no longer leak memory [perl #92252].
3433
3434=item *
3435
3436The implementations of overloaded operations are now called in the correct
3437context. This allows, among other things, being able to properly override
3438C<< <> >> [perl #47119].
3439
3440=item *
3441
3442Specifying only the C<fallback> key when calling C<use overload> now behaves
3443properly [perl #113010].
3444
3445=item *
3446
3447C<< sub foo { my $a = 0; while ($a) { ... } } >> and
3448C<< sub foo { while (0) { ... } } >> now return the same thing [perl #73618].
3449
3450=item *
3451
3452String negation now behaves the same under C<use integer;> as it does
3453without [perl #113012].
3454
3455=item *
3456
3457C<chr> now returns the Unicode replacement character (U+FFFD) for -1,
3458regardless of the internal representation. -1 used to wrap if the argument
3459was tied or a string internally.
3460
3461=item *
3462
3463Using a C<format> after its enclosing sub was freed could crash as of
e612b5a0 3464perl v5.12.0, if the format referenced lexical variables from the outer sub.
5ed58cbd
RS
3465
3466=item *
3467
3468Using a C<format> after its enclosing sub was undefined could crash as of
e612b5a0 3469perl v5.10.0, if the format referenced lexical variables from the outer sub.
5ed58cbd
RS
3470
3471=item *
3472
3473Using a C<format> defined inside a closure, which format references
3474lexical variables from outside, never really worked unless the C<write>
e612b5a0 3475call was directly inside the closure. In v5.10.0 it even started crashing.
5ed58cbd
RS
3476Now the copy of that closure nearest the top of the call stack is used to
3477find those variables.
3478
3479=item *
3480
3481Formats that close over variables in special blocks no longer crash if a
3482stub exists with the same name as the special block before the special
3483block is compiled.
3484
3485=item *
3486
3487The parser no longer gets confused, treating C<eval foo ()> as a syntax
3488error if preceded by C<print;> [perl #16249].
3489
3490=item *
3491
3492The return value of C<syscall> is no longer truncated on 64-bit platforms
3493[perl #113980].
3494
3495=item *
3496
3497Constant folding no longer causes C<print 1 ? FOO : BAR> to print to the
3498FOO handle [perl #78064].
3499
3500=item *
3501
3502C<do subname> now calls the named subroutine and uses the file name it
3503returns, instead of opening a file named "subname".
3504
3505=item *
3506
3507Subroutines looked up by rv2cv check hooks (registered by XS modules) are
3508now taken into consideration when determining whether C<foo bar> should be
3509the sub call C<foo(bar)> or the method call C<< "bar"->foo >>.
3510
3511=item *
3512
3513C<CORE::foo::bar> is no longer treated specially, allowing global overrides
3514to be called directly via C<CORE::GLOBAL::uc(...)> [perl #113016].
3515
3516=item *
3517
3518Calling an undefined sub whose typeglob has been undefined now produces the
3519customary "Undefined subroutine called" error, instead of "Not a CODE
3520reference".
3521
3522=item *
3523
3524Two bugs involving @ISA have been fixed. C<*ISA = *glob_without_array> and
3525C<undef *ISA; @{*ISA}> would prevent future modifications to @ISA from
3526updating the internal caches used to look up methods. The
e612b5a0 3527*glob_without_array case was a regression from Perl v5.12.
5ed58cbd
RS
3528
3529=item *
3530
3531Regular expression optimisations sometimes caused C<$> with C</m> to
3532produce failed or incorrect matches [perl #114068].
3533
3534=item *
3535
3536C<__SUB__> now works in a C<sort> block when the enclosing subroutine is
3537predeclared with C<sub foo;> syntax [perl #113710].
3538
3539=item *
3540
3541Unicode properties only apply to Unicode code points, which leads to
3542some subtleties when regular expressions are matched against
3543above-Unicode code points. There is a warning generated to draw your
3544attention to this. However, this warning was being generated
3545inappropriately in some cases, such as when a program was being parsed.
3546Non-Unicode matches such as C<\w> and C<[:word;]> should not generate the
3547warning, as their definitions don't limit them to apply to only Unicode
3548code points. Now the message is only generated when matching against
3549C<\p{}> and C<\P{}>. There remains a bug, [perl #114148], for the very
3550few properties in Unicode that match just a single code point. The
3551warning is not generated if they are matched against an above-Unicode
3552code point.
3553
3554=item *
3555
3556Uninitialized warnings mentioning hash elements would only mention the
3557element name if it was not in the first bucket of the hash, due to an
3558off-by-one error.
3559
3560=item *
3561
3562A regular expression optimizer bug could cause multiline "^" to behave
3563incorrectly in the presence of line breaks, such that
3564C<"/\n\n" =~ m#\A(?:^/$)#im> would not match [perl #115242].
3565
3566=item *
3567
3568Failed C<fork> in list context no longer corrupts the stack.
3569C<@a = (1, 2, fork, 3)> used to gobble up the 2 and assign C<(1, undef, 3)>
3570if the C<fork> call failed.
3571
3572=item *
3573
3574Numerous memory leaks have been fixed, mostly involving tied variables that
3575die, regular expression character classes and code blocks, and syntax
3576errors.
3577
3578=item *
3579
3580Assigning a regular expression (C<${qr//}>) to a variable that happens to
3581hold a floating point number no longer causes assertion failures on
3582debugging builds.
3583
3584=item *
3585
3586Assigning a regular expression to a scalar containing a number no longer
f105b7be 3587causes subsequent numification to produce random numbers.
5ed58cbd
RS
3588
3589=item *
3590
3591Assigning a regular expression to a magic variable no longer wipes away the
e612b5a0 3592magic. This was a regression from v5.10.
5ed58cbd
RS
3593
3594=item *
3595
3596Assigning a regular expression to a blessed scalar no longer results in
e612b5a0 3597crashes. This was also a regression from v5.10.
5ed58cbd
RS
3598
3599=item *
3600
3601Regular expression can now be assigned to tied hash and array elements with
3602flattening into strings.
3603
3604=item *
3605
f105b7be 3606Numifying a regular expression no longer results in an uninitialized
5ed58cbd
RS
3607warning.
3608
3609=item *
3610
3611Negative array indices no longer cause EXISTS methods of tied variables to
e612b5a0 3612be ignored. This was a regression from v5.12.
5ed58cbd
RS
3613
3614=item *
3615
3616Negative array indices no longer result in crashes on arrays tied to
3617non-objects.
3618
3619=item *
3620
be12dd22
RS
3621C<$byte_overload .= $utf8> no longer results in doubly-encoded UTF-8 if the
3622left-hand scalar happened to have produced a UTF-8 string the last time
5ed58cbd
RS
3623overloading was invoked.
3624
3625=item *
3626
3627C<goto &sub> now uses the current value of @_, instead of using the array
3628the subroutine was originally called with. This means
3629C<local @_ = (...); goto &sub> now works [perl #43077].
3630
3631=item *
3632
3633If a debugger is invoked recursively, it no longer stomps on its own
3634lexical variables. Formerly under recursion all calls would share the same
3635set of lexical variables [perl #115742].
3636
3637=item *
3638
3639C<*_{ARRAY}> returned from a subroutine no longer spontaneously
3640becomes empty.
3641
3642=back
3643
3644=head1 Known Problems
3645
3646=over 4
3647
3648=item *
3649
7f50b25b 3650There are no known regressions. Please report any bugs you find!
5ed58cbd
RS
3651
3652=back
3653
32b79602
RS
3654=head1 Obituary
3655
3656Hojung Yoon (AMORETTE), 24, of Seoul, South Korea, went to his long rest
3657on May 8, 2013 with llama figurine and autographed TIMTOADY card. He
3658was a brilliant young Perl 5 & 6 hacker and a devoted member of
55c6e7a8 3659Seoul.pm. He programmed Perl, talked Perl, ate Perl, and loved Perl. We
32b79602
RS
3660believe that he is still programming in Perl with his broken IBM laptop
3661somewhere. He will be missed.
3662
5ed58cbd 3663=head1 Acknowledgements
a75569c0 3664
dd38235c
RS
3665Perl v5.18.0 represents approximately 12 months of development since
3666Perl v5.16.0 and contains approximately 400,000 lines of changes across
36672,100 files from 113 authors.
3668
3669Perl continues to flourish into its third decade thanks to a vibrant
3670community of users and developers. The following people are known to
3671have contributed the improvements that became Perl v5.18.0:
3672
3673Aaron Crane, Aaron Trevena, Abhijit Menon-Sen, Adrian M. Enache, Alan
3674Haggai Alavi, Alexandr Ciornii, Andrew Tam, Andy Dougherty, Anton Nikishaev,
3675Aristotle Pagaltzis, Augustina Blair, Bob Ernst, Brad Gilbert, Breno G. de
3676Oliveira, Brian Carlson, Brian Fraser, Charlie Gonzalez, Chip Salzenberg, Chris
3677'BinGOs' Williams, Christian Hansen, Colin Kuskie, Craig A. Berry, Dagfinn
3678Ilmari Mannsåker, Daniel Dragan, Daniel Perrett, Darin McBride, Dave Rolsky,
3679David Golden, David Leadbeater, David Mitchell, David Nicol, Dominic
3680Hargreaves, E. Choroba, Eric Brine, Evan Miller, Father Chrysostomos, Florian
3681Ragwitz, François Perrad, George Greer, Goro Fuji, H.Merijn Brand, Herbert
3682Breunung, Hugo van der Sanden, Igor Zaytsev, James E Keenan, Jan Dubois,
3683Jasmine Ahuja, Jerry D. Hedden, Jess Robinson, Jesse Luehrs, Joaquin Ferrero,
3684Joel Berger, John Goodyear, John Peacock, Karen Etheridge, Karl Williamson,
3685Karthik Rajagopalan, Kent Fredric, Leon Timmermans, Lucas Holt, Lukas Mai,
3686Marcus Holland-Moritz, Markus Jansen, Martin Hasch, Matthew Horsfall, Max
3687Maischein, Michael G Schwern, Michael Schroeder, Moritz Lenz, Nicholas Clark,
3688Niko Tyni, Oleg Nesterov, Patrik Hägglund, Paul Green, Paul Johnson, Paul
3689Marquess, Peter Martini, Rafael Garcia-Suarez, Reini Urban, Renee Baecker,
3690Rhesa Rozendaal, Ricardo Signes, Robin Barker, Ronald J. Kimball, Ruslan
3691Zakirov, Salvador Fandiño, Sawyer X, Scott Lanning, Sergey Alekseev, Shawn M
3692Moore, Shirakata Kentaro, Shlomi Fish, Sisyphus, Smylers, Steffen Müller,
3693Steve Hay, Steve Peters, Steven Schubiger, Sullivan Beck, Sven Strickroth,
3694Sébastien Aperghis-Tramoni, Thomas Sibley, Tobias Leich, Tom Wyant, Tony Cook,
3695Vadim Konovalov, Vincent Pit, Volker Schatz, Walt Mankowski, Yves Orton,
3696Zefram.
3697
3698The list above is almost certainly incomplete as it is automatically generated
3699from version control history. In particular, it does not include the names of
3700the (very much appreciated) contributors who reported issues to the Perl bug
3701tracker.
3702
3703Many of the changes included in this version originated in the CPAN modules
3704included in Perl's core. We're grateful to the entire CPAN community for
3705helping Perl to flourish.
3706
3707For a more complete list of all of Perl's historical contributors, please see
3708the F<AUTHORS> file in the Perl source distribution.
f5b73711 3709
44691e6f
AB
3710=head1 Reporting Bugs
3711
e08634c5
SH
3712If you find what you think is a bug, you might check the articles recently
3713posted to the comp.lang.perl.misc newsgroup and the perl bug database at
3714http://rt.perl.org/perlbug/ . There may also be information at
3715http://www.perl.org/ , the Perl Home Page.
44691e6f 3716
e08634c5
SH
3717If you believe you have an unreported bug, please run the L<perlbug> program
3718included with your release. Be sure to trim your bug down to a tiny but
3719sufficient test case. Your bug report, along with the output of C<perl -V>,
3720will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
3721
3722If the bug you are reporting has security implications, which make it
e08634c5
SH
3723inappropriate to send to a publicly archived mailing list, then please send it
3724to perl5-security-report@perl.org. This points to a closed subscription
3725unarchived mailing list, which includes all the core committers, who will be
3726able to help assess the impact of issues, figure out a resolution, and help
f9001595 3727co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
3728platforms on which Perl is supported. Please only use this address for
3729security issues in the Perl core, not for modules independently distributed on
3730CPAN.
44691e6f
AB
3731
3732=head1 SEE ALSO
3733
e08634c5
SH
3734The F<Changes> file for an explanation of how to view exhaustive details on
3735what changed.
44691e6f
AB
3736
3737The F<INSTALL> file for how to build Perl.
3738
3739The F<README> file for general stuff.
3740
3741The F<Artistic> and F<Copying> files for copyright information.
3742
3743=cut