Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
c68523cb | 5 | perldelta - what is new for perl v5.20.0 |
e128ab2c | 6 | |
4eabcf70 | 7 | =head1 DESCRIPTION |
6db9054f | 8 | |
c68523cb RS |
9 | This document describes differences between the 5.18.0 release and the |
10 | 5.20.0 release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.16.0, first read | |
13 | L<perl5180delta>, which describes differences between 5.16.0 and 5.18.0. | |
6db9054f | 14 | |
c68523cb | 15 | =head1 Core Enhancements |
22730142 | 16 | |
c68523cb | 17 | =head2 Experimental Subroutine signatures |
0d0bc230 | 18 | |
c68523cb RS |
19 | Declarative syntax to unwrap argument list into lexical variables. |
20 | C<sub foo ($a,$b) {...}> checks the number of arguments and puts the | |
21 | arguments into lexical variables. Signatures are not equivalent to | |
22 | the existing idiom of C<sub foo { my($a,$b) = @_; ... }>. Signatures | |
23 | are only available by enabling a non-default feature, and generate | |
24 | warnings about being experimental. The syntactic clash with | |
25 | prototypes is managed by disabling the short prototype syntax when | |
26 | signatures are enabled. | |
87776862 | 27 | |
c68523cb RS |
28 | See L<perlsub/Signatures> for details. |
29 | ||
30 | =head2 C<sub>s now take a C<prototype> attribute | |
31 | ||
32 | When declaring or defining a C<sub>, the prototype can now be specified inside | |
33 | of a C<prototype> attribute instead of in parens following the name. | |
34 | ||
35 | For example, C<sub foo($$){}> could be rewritten as | |
36 | C<sub foo : prototype($$){}>. | |
37 | ||
38 | =head2 More consistent prototype parsing | |
39 | ||
40 | Multiple semicolons in subroutine prototypes have long been tolerated and | |
41 | treated as a single semicolon. There was one case where this did not | |
42 | happen. A subroutine whose prototype begins with "*" or ";*" can affect | |
43 | whether a bareword is considered a method name or sub call. This now | |
44 | applies also to ";;;*". | |
45 | ||
46 | Whitespace has long been allowed inside subroutine prototypes, so | |
47 | C<sub( $ $ )> is equivalent to C<sub($$)>, but until now it was stripped | |
48 | when the subroutine was parsed. Hence, whitespace was I<not> allowed in | |
49 | prototypes set by C<Scalar::Util::set_prototype>. Now it is permitted, | |
50 | and the parser no longer strips whitespace. This means | |
51 | C<prototype &mysub> returns the original prototype, whitespace and all. | |
52 | ||
53 | =head2 C<rand> now uses a consistent random number generator | |
54 | ||
55 | Previously perl would use a platform specific random number generator, varying | |
56 | between the libc rand(), random() or drand48(). | |
57 | ||
58 | This meant that the quality of perl's random numbers would vary from platform | |
59 | to platform, from the 15 bits of rand() on Windows to 48-bits on POSIX | |
60 | platforms such as Linux with drand48(). | |
61 | ||
62 | Perl now uses its own internal drand48() implementation on all platforms. This | |
63 | does not make perl's C<rand> cryptographically secure. [perl #115928] | |
64 | ||
65 | =head2 New slice syntax | |
66 | ||
67 | The new C<%hash{...}> and C<%array[...]> syntax returns a list of key/value (or | |
68 | index/value) pairs. See L<perldata/"Key/Value Hash Slices">. | |
69 | ||
70 | =head2 Experimental Postfix Dereferencing | |
71 | ||
72 | When the C<postderef> feature is in effect, the following syntactical | |
73 | equivalencies are set up: | |
74 | ||
75 | $sref->$*; # same as ${ $sref } # interpolates | |
76 | $aref->@*; # same as @{ $aref } # interpolates | |
77 | $href->%*; # same as %{ $href } | |
78 | $cref->&*; # same as &{ $cref } | |
79 | $gref->**; # same as *{ $gref } | |
80 | ||
81 | $aref->$#*; # same as $#{ $aref } | |
82 | ||
83 | $gref->*{ $slot }; # same as *{ $gref }{ $slot } | |
84 | ||
85 | $aref->@[ ... ]; # same as @$aref[ ... ] # interpolates | |
86 | $href->@{ ... }; # same as @$href{ ... } # interpolates | |
87 | $aref->%[ ... ]; # same as %$aref[ ... ] | |
88 | $href->%{ ... }; # same as %$href{ ... } | |
89 | ||
90 | Those marked as interpolating only interpolate if the associated | |
91 | C<postderef_qq> feature is also enabled. This feature is B<experimental> and | |
92 | will trigger C<experimental::postderef>-category warnings when used, unless | |
93 | they are suppressed. | |
94 | ||
95 | For more information, consult L<the Postfix Dereference Syntax section of | |
96 | perlref|perlref/Postfix Dereference Syntax>. | |
97 | ||
98 | =head2 Unicode 6.3 now supported | |
99 | ||
100 | Perl now supports and is shipped with Unicode 6.3 (though Perl may be | |
101 | recompiled with any previous Unicode release as well). A detailed list of | |
102 | Unicode 6.3 changes is at L<http://www.unicode.org/versions/Unicode6.3.0/>. | |
103 | ||
104 | =head2 New C<\p{Unicode}> regular expression pattern property | |
105 | ||
106 | This is a synonym for C<\p{Any}> and matches the set of Unicode-defined | |
107 | code points 0 - 0x10FFFF. | |
108 | ||
109 | =head2 Better 64-bit support | |
110 | ||
111 | On 64-bit platforms, the internal array functions now use 64-bit offsets, | |
112 | allowing Perl arrays to hold more than 2**31 elements, if you have the memory | |
113 | available. | |
114 | ||
115 | The regular expression engine now supports strings longer than 2**31 | |
116 | characters. [perl #112790, #116907] | |
117 | ||
118 | The functions PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt and | |
119 | PerlIO_set_ptrcnt now have SSize_t, rather than int, return values and | |
120 | parameters. | |
769e4861 | 121 | |
c68523cb | 122 | =head2 C<S<use locale>> now works on UTF-8 locales |
7ef8b31d | 123 | |
c68523cb RS |
124 | Until this release, only single-byte locales, such as the ISO 8859 |
125 | series were supported. Now, the increasingly common multi-byte UTF-8 | |
126 | locales are also supported. A UTF-8 locale is one in which the | |
127 | character set is Unicode and the encoding is UTF-8. The POSIX | |
128 | C<LC_CTYPE> category operations (case changing (like C<lc()>, C<"\U">), | |
129 | and character classification (C<\w>, C<\D>, C<qr/[[:punct:]]/>)) under | |
130 | such a locale work just as if not under locale, but instead as if under | |
131 | C<S<use feature 'unicode_strings'>>, except taint rules are followed. | |
132 | Sorting remains by code point order in this release. [perl #56820]. | |
133 | ||
134 | =head2 C<S<use locale>> now compiles on systems without locale ability | |
135 | ||
136 | Previously doing this caused the program to not compile. Within its | |
137 | scope the program behaves as if in the "C" locale. Thus programs | |
138 | written for platforms that support locales can run on locale-less | |
139 | platforms without change. Attempts to change the locale away from the | |
140 | "C" locale will, of course, fail. | |
141 | ||
142 | =head2 More locale initialization fallback options | |
143 | ||
144 | If there was an error with locales during Perl start-up, it immediately | |
145 | gave up and tried to use the C<"C"> locale. Now it first tries using | |
146 | other locales given by the environment variables, as detailed in | |
147 | L<perllocale/ENVIRONMENT>. For example, if C<LC_ALL> and C<LANG> are | |
148 | both set, and using the C<LC_ALL> locale fails, Perl will now try the | |
149 | C<LANG> locale, and only if that fails, will it fall back to C<"C">. On | |
150 | Windows machines, Perl will try, ahead of using C<"C">, the system | |
151 | default locale if all the locales given by environment variables fail. | |
152 | ||
153 | =head2 C<-DL> runtime option now added for tracing locale setting | |
154 | ||
155 | This is designed for Perl core developers to aid in field debugging bugs | |
156 | regarding locales. | |
157 | ||
158 | =head2 B<-F> now implies B<-a> and B<-a> implies B<-n> | |
159 | ||
160 | Previously B<-F> without B<-a> was a no-op, and B<-a> without B<-n> or B<-p> | |
161 | was a no-op, with this change, if you supply B<-F> then both B<-a> and B<-n> | |
162 | are implied and if you supply B<-a> then B<-n> is implied. | |
163 | ||
164 | You can still use B<-p> for its extra behaviour. [perl #116190] | |
165 | ||
166 | =head2 $a and $b warnings exemption | |
167 | ||
168 | The special variables $a and $b, used in C<sort>, are now exempt from "used | |
169 | once" warnings, even where C<sort> is not used. This makes it easier for | |
170 | CPAN modules to provide functions using $a and $b for similar purposes. | |
171 | [perl #120462] | |
7ef8b31d SH |
172 | |
173 | =head1 Security | |
174 | ||
c68523cb | 175 | =head2 Avoid possible read of free()d memory during parsing |
7ef8b31d | 176 | |
c68523cb RS |
177 | It was possible that free()d memory could be read during parsing in the unusual |
178 | circumstance of the Perl program ending with a heredoc and the last line of the | |
179 | file on disk having no terminating newline character. This has now been fixed. | |
7ef8b31d SH |
180 | |
181 | =head1 Incompatible Changes | |
182 | ||
c68523cb RS |
183 | =head2 C<do> can no longer be used to call subroutines |
184 | ||
185 | The C<do SUBROUTINE(LIST)> form has resulted in a deprecation warning | |
186 | since Perl v5.0.0, and is now a syntax error. | |
187 | ||
188 | =head2 Quote-like escape changes | |
189 | ||
190 | The character after C<\c> in a double-quoted string ("..." or qq(...)) | |
191 | or regular expression must now be a printable character and may not be | |
192 | C<{>. | |
193 | ||
194 | A literal C<{> after C<\B> or C<\b> is now fatal. | |
195 | ||
196 | These were deprecated in perl v5.14.0. | |
197 | ||
198 | =head2 Tainting happens under more circumstances; now conforms to documentation | |
199 | ||
200 | This affects regular expression matching and changing the case of a | |
201 | string (C<lc>, C<"\U">, I<etc>.) within the scope of C<use locale>. | |
202 | The result is now tainted based on the operation, no matter what the | |
203 | contents of the string were, as the documentation (L<perlsec>, | |
204 | L<perllocale/SECURITY>) indicates it should. Previously, for the case | |
205 | change operation, if the string contained no characters whose case | |
206 | change could be affected by the locale, the result would not be tainted. | |
207 | For example, the result of C<uc()> on an empty string or one containing | |
208 | only above-Latin1 code points is now tainted, and wasn't before. This | |
209 | leads to more consistent tainting results. Regular expression patterns | |
210 | taint their non-binary results (like C<$&>, C<$2>) if and only if the | |
211 | pattern contains elements whose matching depends on the current | |
212 | (potentially tainted) locale. Like the case changing functions, the | |
213 | actual contents of the string being matched now do not matter, whereas | |
214 | formerly it did. For example, if the pattern contains a C<\w>, the | |
215 | results will be tainted even if the match did not have to use that | |
216 | portion of the pattern to succeed or fail, because what a C<\w> matches | |
217 | depends on locale. However, for example, a C<.> in a pattern will not | |
218 | enable tainting, because the dot matches any single character, and what | |
219 | the current locale is doesn't change in any way what matches and what | |
220 | doesn't. | |
221 | ||
222 | =head2 C<\p{}>, C<\P{}> matching has changed for non-Unicode code | |
223 | points. | |
224 | ||
225 | C<\p{}> and C<\P{}> are defined by Unicode only on Unicode-defined code | |
226 | points (C<U+0000> through C<U+10FFFF>). Their behavior on matching | |
227 | these legal Unicode code points is unchanged, but there are changes for | |
228 | code points C<0x110000> and above. Previously, Perl treated the result | |
229 | of matching C<\p{}> and C<\P{}> against these as C<undef>, which | |
230 | translates into "false". For C<\P{}>, this was then complemented into | |
231 | "true". A warning was supposed to be raised when this happened. | |
232 | However, various optimizations could prevent the warning, and the | |
233 | results were often counter-intuitive, with both a match and its seeming | |
234 | complement being false. Now all non-Unicode code points are treated as | |
235 | typical unassigned Unicode code points. This generally is more | |
236 | Do-What-I-Mean. A warning is raised only if the results are arguably | |
237 | different from a strict Unicode approach, and from what Perl used to do. | |
238 | Code that needs to be strictly Unicode compliant can make this warning | |
239 | fatal, and then Perl always raises the warning. | |
240 | ||
241 | Details are in L<perlunicode/Beyond Unicode code points>. | |
242 | ||
243 | =head2 C<\p{All}> has been expanded to match all possible code points | |
244 | ||
245 | The Perl-defined regular expression pattern element C<\p{All}>, unused | |
246 | on CPAN, used to match just the Unicode code points; now it matches all | |
247 | possible code points; that is, it is equivalent to C<qr/./s>. Thus | |
248 | C<\p{All}> is no longer synonymous with C<\p{Any}>, which continues to | |
249 | match just the Unicode code points, as Unicode says it should. | |
250 | ||
251 | =head2 Data::Dumper's output may change | |
252 | ||
253 | Depending on the data structures dumped and the settings set for | |
254 | Data::Dumper, the dumped output may have changed from previous | |
255 | versions. | |
256 | ||
257 | If you have tests that depend on the exact output of Data::Dumper, | |
258 | they may fail. | |
259 | ||
260 | To avoid this problem in your code, test against the data structure | |
261 | from evaluating the dumped structure, instead of the dump itself. | |
262 | ||
263 | =head2 Locale decimal point character no longer leaks outside of S<C<use locale>> scope | |
264 | ||
265 | This is actually a bug fix, but some code has come to rely on the bug | |
266 | being present, so this change is listed here. The current locale that | |
267 | the program is running under is not supposed to be visible to Perl code | |
268 | except within the scope of a S<C<use locale>>. However, until now under | |
269 | certain circumstances, the character used for a decimal point (often a | |
270 | comma) leaked outside the scope. If your code is affected by this | |
271 | change, simply add a S<C<use locale>>. | |
272 | ||
273 | =head2 Assignments of Windows sockets error codes to $! now prefer F<errno.h> values over WSAGetLastError() values | |
274 | ||
275 | In previous versions of Perl, Windows sockets error codes as returned by | |
276 | WSAGetLastError() were assigned to $!, and some constants such as ECONNABORTED, | |
277 | not in F<errno.h> in VC++ (or the various Windows ports of gcc) were defined to | |
278 | corresponding WSAE* values to allow $! to be tested against the E* constants | |
279 | exported by L<Errno> and L<POSIX>. | |
280 | ||
281 | This worked well until VC++ 2010 and later, which introduced new E* constants | |
282 | with values E<gt> 100 into F<errno.h>, including some being (re)defined by perl | |
283 | to WSAE* values. That caused problems when linking XS code against other | |
284 | libraries which used the original definitions of F<errno.h> constants. | |
285 | ||
286 | To avoid this incompatibility, perl now maps WSAE* error codes to E* values | |
287 | where possible, and assigns those values to $!. The E* constants exported by | |
288 | L<Errno> and L<POSIX> are updated to match so that testing $! against them, | |
289 | wherever previously possible, will continue to work as expected, and all E* | |
290 | constants found in F<errno.h> are now exported from those modules with their | |
291 | original F<errno.h> values. | |
292 | ||
293 | In order to avoid breakage in existing Perl code which assigns WSAE* values to | |
294 | $!, perl now intercepts the assignment and performs the same mapping to E* | |
295 | values as it uses internally when assigning to $! itself. | |
296 | ||
297 | However, one backwards-incompatibility remains: existing Perl code which | |
298 | compares $! against the numeric values of the WSAE* error codes that were | |
299 | previously assigned to $! will now be broken in those cases where a | |
300 | corresponding E* value has been assigned instead. This is only an issue for | |
301 | those E* values E<lt> 100, which were always exported from L<Errno> and | |
302 | L<POSIX> with their original F<errno.h> values, and therefore could not be used | |
303 | for WSAE* error code tests (e.g. WSAEINVAL is 10022, but the corresponding | |
304 | EINVAL is 22). (E* values E<gt> 100, if present, were redefined to WSAE* | |
305 | values anyway, so compatibility can be achieved by using the E* constants, | |
306 | which will work both before and after this change, albeit using different | |
307 | numeric values under the hood.) | |
308 | ||
309 | =head2 Functions C<PerlIO_vsprintf> and C<PerlIO_sprintf> have been removed | |
310 | ||
311 | These two functions, undocumented, unused in CPAN, and problematic, have been | |
312 | removed. | |
313 | ||
314 | =head1 Deprecations | |
7ef8b31d | 315 | |
c68523cb | 316 | =head2 The C</\C/> character class |
7ef8b31d | 317 | |
c68523cb RS |
318 | The C</\C/> regular expression character class is deprecated. From perl |
319 | 5.22 onwards it will generate a warning, and from perl 5.24 onwards it | |
320 | will be a regular expression compiler error. If you need to examine the | |
321 | individual bytes that make up a UTF8-encoded character, then use | |
322 | C<utf8::encode()> on the string (or a copy) first. | |
7ef8b31d | 323 | |
c68523cb | 324 | =head2 Literal control characters in variable names |
769e4861 | 325 | |
c68523cb RS |
326 | This deprecation affects things like $\cT, where \cT is a literal control (such |
327 | as a C<NAK> or C<NEGATIVE ACKNOWLEDGE> character) in | |
328 | the source code. Surprisingly, it appears that originally this was intended as | |
329 | the canonical way of accessing variables like $^T, with the caret form only | |
330 | being added as an alternative. | |
ca3178e0 | 331 | |
c68523cb RS |
332 | The literal control form is being deprecated for two main reasons. It has what |
333 | are likely unfixable bugs, such as $\cI not working as an alias for $^I, and | |
334 | their usage not being portable to non-ASCII platforms: While $^T will work | |
335 | everywhere, \cT is whitespace in EBCDIC. [perl #119123] | |
336 | ||
337 | =head2 References to non-integers and non-positive integers in C<$/> | |
7ef8b31d | 338 | |
c68523cb RS |
339 | Setting C<$/> to a reference to zero or a reference to a negative integer is |
340 | now deprecated, and will behave B<exactly> as though it was set to C<undef>. | |
341 | If you want slurp behavior set C<$/> to C<undef> explicitly. | |
342 | ||
343 | Setting C<$/> to a reference to a non integer is now forbidden and will | |
344 | throw an error. Perl has never documented what would happen in this | |
345 | context and while it used to behave the same as setting C<$/> to | |
346 | the address of the references in future it may behave differently, so we | |
347 | have forbidden this usage. | |
348 | ||
349 | =head2 Character matching routines in POSIX | |
350 | ||
351 | Use of any of these functions in the C<POSIX> module is now deprecated: | |
352 | C<isalnum>, C<isalpha>, C<iscntrl>, C<isdigit>, C<isgraph>, C<islower>, | |
353 | C<isprint>, C<ispunct>, C<isspace>, C<isupper>, and C<isxdigit>. The | |
354 | functions are buggy and don't work on UTF-8 encoded strings. See their | |
355 | entries in L<POSIX> for more information. | |
356 | ||
357 | A warning is raised on the first call to any of them from each place in | |
358 | the code that they are called. (Hence a repeated statement in a loop | |
359 | will raise just the one warning.) | |
360 | ||
361 | =head2 Interpreter-based threads are now I<discouraged> | |
362 | ||
363 | The "interpreter-based threads" provided by Perl are not the fast, lightweight | |
364 | system for multitasking that one might expect or hope for. Threads are | |
365 | implemented in a way that make them easy to misuse. Few people know how to | |
366 | use them correctly or will be able to provide help. | |
367 | ||
368 | The use of interpreter-based threads in perl is officially | |
369 | L<discouraged|perlpolicy/discouraged>. | |
370 | ||
371 | =head2 Module removals | |
7ef8b31d SH |
372 | |
373 | The following modules will be removed from the core distribution in a | |
374 | future release, and will at that time need to be installed from CPAN. | |
375 | Distributions on CPAN which require these modules will need to list them as | |
376 | prerequisites. | |
377 | ||
378 | The core versions of these modules will now issue C<"deprecated">-category | |
379 | warnings to alert you to this fact. To silence these deprecation warnings, | |
380 | install the modules in question from CPAN. | |
381 | ||
c68523cb RS |
382 | Note that the planned removal of these modules from core does not reflect a |
383 | judgement about the quality of the code and should not be taken as a suggestion | |
384 | that their use be halted. Their disinclusion from core primarily hinges on | |
385 | their necessity to bootstrapping a fully functional, CPAN-capable Perl | |
386 | installation, not on concerns over their design. | |
7ef8b31d SH |
387 | |
388 | =over | |
389 | ||
c68523cb | 390 | =item L<CGI> and its associated CGI:: packages |
7ef8b31d | 391 | |
c68523cb | 392 | =item L<inc::latest> |
769e4861 | 393 | |
c68523cb | 394 | =item L<Package::Constants> |
474475f6 | 395 | |
c68523cb RS |
396 | =item L<Module::Build> and its associated Module::Build:: packages |
397 | ||
398 | =back | |
7ef8b31d | 399 | |
38a3a813 LT |
400 | =head2 Utility removals |
401 | ||
402 | The following utilities will be removed from the core distribution in a | |
403 | future release, and will at that time need to be installed from CPAN. | |
404 | ||
405 | =over 4 | |
406 | ||
407 | =item L<find2perl> | |
408 | ||
409 | =item L<s2p> | |
410 | ||
411 | =item L<a2p> | |
412 | ||
413 | =back | |
414 | ||
7ef8b31d SH |
415 | =head1 Performance Enhancements |
416 | ||
c68523cb RS |
417 | =over 4 |
418 | ||
419 | =item * | |
7ef8b31d | 420 | |
c68523cb RS |
421 | Perl has a new copy-on-write mechanism that avoids the need to copy the |
422 | internal string buffer when assigning from one scalar to another. This | |
423 | makes copying large strings appear much faster. Modifying one of the two | |
424 | (or more) strings after an assignment will force a copy internally. This | |
425 | makes it unnecessary to pass strings by reference for efficiency. | |
b314f574 | 426 | |
c68523cb RS |
427 | This feature was already available in 5.18.0, but wasn't enabled by |
428 | default. It is the default now, and so you no longer need build perl with | |
429 | the F<Configure> argument: | |
430 | ||
431 | -Accflags=-DPERL_NEW_COPY_ON_WRITE | |
432 | ||
433 | It can be disabled (for now) in a perl build with: | |
434 | ||
435 | -Accflags=-DPERL_NO_COW | |
436 | ||
437 | On some operating systems Perl can be compiled in such a way that any | |
438 | attempt to modify string buffers shared by multiple SVs will crash. This | |
439 | way XS authors can test that their modules handle copy-on-write scalars | |
440 | correctly. See L<perlguts/"Copy on Write"> for detail. | |
441 | ||
442 | =item * | |
443 | ||
444 | Perl has an optimizer for regular expression patterns. It analyzes the pattern | |
445 | to find things such as the minimum length a string has to be to match, etc. It | |
446 | now better handles code points that are above the Latin1 range. | |
447 | ||
448 | =item * | |
449 | ||
450 | Executing a regex that contains the C<^> anchor (or its variant under the | |
451 | C</m> flag) has been made much faster in several situations. | |
452 | ||
453 | =item * | |
454 | ||
455 | Precomputed hash values are now used in more places during method lookup. | |
456 | ||
457 | =item * | |
458 | ||
459 | Constant hash key lookups (C<$hash{key}> as opposed to C<$hash{$key}>) have | |
460 | long had the internal hash value computed at compile time, to speed up | |
461 | lookup. This optimisation has only now been applied to hash slices as | |
462 | well. | |
463 | ||
464 | =item * | |
465 | ||
466 | Combined C<and> and C<or> operators in void context, like those | |
467 | generated for C<< unless ($a && $b) >> and C<< if ($a || b) >> now | |
468 | short circuit directly to the end of the statement. [perl #120128] | |
469 | ||
470 | =item * | |
471 | ||
472 | In certain situations, when C<return> is the last statement in a subroutine's | |
473 | main scope, it will be optimized out. This means code like: | |
474 | ||
475 | sub baz { return $cat; } | |
476 | ||
477 | will now behave like: | |
478 | ||
479 | sub baz { $cat; } | |
480 | ||
481 | which is notably faster. | |
482 | ||
483 | [perl #120765] | |
484 | ||
485 | =item * | |
486 | ||
487 | Code like: | |
488 | ||
489 | my $x; # or @x, %x | |
490 | my $y; | |
491 | ||
492 | is now optimized to: | |
493 | ||
494 | my ($x, $y); | |
495 | ||
496 | In combination with the L<padrange optimization introduced in | |
497 | v5.18.0|perl5180delta/Internal Changes>, this means longer uninitialized my | |
498 | variable statements are also optimized, so: | |
499 | ||
500 | my $x; my @y; my %z; | |
501 | ||
502 | becomes: | |
503 | ||
504 | my ($x, @y, %z); | |
505 | ||
506 | [perl #121077] | |
507 | ||
508 | =item * | |
509 | ||
510 | The creation of certain sorts of lists, including array and hash slices, is now | |
511 | faster. | |
512 | ||
513 | =item * | |
514 | ||
515 | The optimisation for arrays indexed with a small constant integer is now | |
516 | applied for integers in the range -128..127, rather than 0..255. This should | |
517 | speed up Perl code using expressions like C<$x[-1]>, at the expense of | |
518 | (presumably much rarer) code using expressions like C<$x[200]>. | |
519 | ||
520 | =item * | |
521 | ||
522 | The first iteration over a large hash (using C<keys> or C<each>) is now | |
523 | faster. This is achieved by preallocating the hash's internal iterator | |
524 | state, rather than lazily creating it when the hash is first iterated. (For | |
525 | small hashes, the iterator is still created only when first needed. The | |
526 | assumption is that small hashes are more likely to be used as objects, and | |
527 | therefore never allocated. For large hashes, that's less likely to be true, | |
528 | and the cost of allocating the iterator is swamped by the cost of allocating | |
529 | space for the hash itself.) | |
1175bfe1 TH |
530 | |
531 | =item * | |
532 | ||
c68523cb RS |
533 | When doing a global regex match on a string that came from the C<readline> |
534 | or C<E<lt>E<gt>> operator, the data is no longer copied unnecessarily. | |
535 | [perl #121259] | |
536 | ||
537 | =item * | |
538 | ||
539 | Dereferencing (as in C<$obj-E<gt>[0]> or C<$obj-E<gt>{k}>) is now faster | |
540 | when C<$obj> is an instance of a class that has overloaded methods, but | |
541 | doesn't overload any of the dereferencing methods C<@{}>, C<%{}>, and so on. | |
542 | ||
543 | =item * | |
544 | ||
545 | Perl's optimiser no longer skips optimising code that follows certain | |
546 | C<eval {}> expressions (including those with an apparent infinite loop). | |
547 | ||
548 | =item * | |
549 | ||
550 | The implementation now does a better job of avoiding meaningless work at | |
551 | runtime. Internal effect-free "null" operations (created as a side-effect of | |
552 | parsing Perl programs) are normally deleted during compilation. That | |
553 | deletion is now applied in some situations that weren't previously handled. | |
554 | ||
555 | =item * | |
556 | ||
557 | Perl now does less disk I/O when dealing with Unicode properties that cover | |
558 | up to three ranges of consecutive code points. | |
f6f3144e | 559 | |
7ef8b31d | 560 | =back |
f6f3144e | 561 | |
7ef8b31d | 562 | =head1 Modules and Pragmata |
f6f3144e | 563 | |
24a38d90 RS |
564 | =head2 New Modules and Pragmata |
565 | ||
566 | =over 4 | |
567 | ||
568 | =item * | |
569 | ||
570 | L<experimental> 0.007 has been added to the Perl core. | |
571 | ||
572 | =item * | |
573 | ||
574 | L<IO::Socket::IP> 0.29 has been added to the Perl core. | |
575 | ||
576 | =back | |
577 | ||
578 | =head2 Updated Modules and Pragmata | |
579 | ||
580 | =over 4 | |
581 | ||
582 | =item * | |
583 | ||
584 | L<Archive::Tar> has been upgraded from version 1.90 to 1.96. | |
585 | ||
586 | =item * | |
587 | ||
588 | L<arybase> has been upgraded from version 0.06 to 0.07. | |
589 | ||
590 | =item * | |
591 | ||
592 | L<Attribute::Handlers> has been upgraded from version 0.94 to 0.96. | |
593 | ||
594 | =item * | |
595 | ||
596 | L<attributes> has been upgraded from version 0.21 to 0.22. | |
597 | ||
598 | =item * | |
599 | ||
600 | L<autodie> has been upgraded from version 2.13 to 2.23. | |
601 | ||
602 | =item * | |
603 | ||
604 | L<AutoLoader> has been upgraded from version 5.73 to 5.74. | |
605 | ||
606 | =item * | |
607 | ||
608 | L<autouse> has been upgraded from version 1.07 to 1.08. | |
609 | ||
610 | =item * | |
611 | ||
612 | L<B> has been upgraded from version 1.42 to 1.48. | |
613 | ||
614 | =item * | |
615 | ||
616 | L<B::Concise> has been upgraded from version 0.95 to 0.992. | |
617 | ||
618 | =item * | |
619 | ||
620 | L<B::Debug> has been upgraded from version 1.18 to 1.19. | |
621 | ||
622 | =item * | |
623 | ||
624 | L<B::Deparse> has been upgraded from version 1.20 to 1.26. | |
625 | ||
626 | =item * | |
627 | ||
628 | L<base> has been upgraded from version 2.18 to 2.22. | |
629 | ||
630 | =item * | |
631 | ||
632 | L<Benchmark> has been upgraded from version 1.15 to 1.18. | |
633 | ||
634 | =item * | |
635 | ||
636 | L<bignum> has been upgraded from version 0.33 to 0.37. | |
637 | ||
638 | =item * | |
639 | ||
640 | L<Carp> has been upgraded from version 1.29 to 1.3301. | |
641 | ||
642 | =item * | |
643 | ||
644 | L<CGI> has been upgraded from version 3.63 to 3.65. | |
645 | NOTE: L<CGI> is deprecated and may be removed from a future version of Perl. | |
646 | ||
647 | =item * | |
648 | ||
649 | L<charnames> has been upgraded from version 1.36 to 1.40. | |
650 | ||
651 | =item * | |
652 | ||
653 | L<Class::Struct> has been upgraded from version 0.64 to 0.65. | |
654 | ||
655 | =item * | |
656 | ||
657 | L<Compress::Raw::Bzip2> has been upgraded from version 2.060 to 2.064. | |
658 | ||
659 | =item * | |
660 | ||
661 | L<Compress::Raw::Zlib> has been upgraded from version 2.060 to 2.065. | |
662 | ||
663 | =item * | |
664 | ||
665 | L<Config::Perl::V> has been upgraded from version 0.17 to 0.20. | |
666 | ||
667 | =item * | |
668 | ||
669 | L<constant> has been upgraded from version 1.27 to 1.31. | |
670 | ||
671 | =item * | |
672 | ||
673 | L<CPAN> has been upgraded from version 2.00 to 2.05. | |
674 | ||
675 | =item * | |
676 | ||
677 | L<CPAN::Meta> has been upgraded from version 2.120921 to 2.140640. | |
678 | ||
679 | =item * | |
680 | ||
681 | L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.125. | |
682 | ||
683 | =item * | |
684 | ||
685 | L<CPAN::Meta::YAML> has been upgraded from version 0.008 to 0.012. | |
686 | ||
687 | =item * | |
688 | ||
689 | L<Data::Dumper> has been upgraded from version 2.145 to 2.151. | |
690 | ||
691 | =item * | |
692 | ||
693 | L<DB> has been upgraded from version 1.04 to 1.07. | |
694 | ||
695 | =item * | |
696 | ||
697 | L<DB_File> has been upgraded from version 1.827 to 1.831. | |
698 | ||
699 | =item * | |
700 | ||
701 | L<DBM_Filter> has been upgraded from version 0.05 to 0.06. | |
702 | ||
703 | =item * | |
704 | ||
705 | L<deprecate> has been upgraded from version 0.02 to 0.03. | |
706 | ||
707 | =item * | |
708 | ||
709 | L<Devel::Peek> has been upgraded from version 1.11 to 1.16. | |
710 | ||
711 | =item * | |
712 | ||
713 | L<Devel::PPPort> has been upgraded from version 3.20 to 3.21. | |
714 | ||
715 | =item * | |
716 | ||
717 | L<diagnostics> has been upgraded from version 1.31 to 1.34. | |
718 | ||
719 | =item * | |
720 | ||
721 | L<Digest::MD5> has been upgraded from version 2.52 to 2.53. | |
722 | ||
723 | =item * | |
724 | ||
725 | L<Digest::SHA> has been upgraded from version 5.84 to 5.88. | |
726 | ||
727 | =item * | |
728 | ||
729 | L<DynaLoader> has been upgraded from version 1.18 to 1.25. | |
730 | ||
731 | =item * | |
732 | ||
733 | L<Encode> has been upgraded from version 2.49 to 2.60. | |
734 | ||
735 | =item * | |
736 | ||
737 | L<encoding> has been upgraded from version 2.6_01 to 2.12. | |
738 | ||
739 | =item * | |
740 | ||
741 | L<English> has been upgraded from version 1.06 to 1.09. | |
742 | ||
743 | =item * | |
744 | ||
745 | L<Errno> has been upgraded from version 1.18 to 1.20_03. | |
746 | ||
747 | =item * | |
748 | ||
749 | L<Exporter> has been upgraded from version 5.68 to 5.70. | |
750 | ||
751 | =item * | |
752 | ||
753 | L<ExtUtils::CBuilder> has been upgraded from version 0.280210 to 0.280216. | |
754 | ||
755 | =item * | |
756 | ||
757 | L<ExtUtils::Command> has been upgraded from version 1.17 to 1.18. | |
758 | ||
759 | =item * | |
760 | ||
761 | L<ExtUtils::Embed> has been upgraded from version 1.30 to 1.32. | |
762 | ||
763 | =item * | |
764 | ||
765 | L<ExtUtils::Install> has been upgraded from version 1.59 to 1.67. | |
766 | ||
767 | =item * | |
768 | ||
769 | L<ExtUtils::MakeMaker> has been upgraded from version 6.66 to 6.98. | |
770 | ||
771 | =item * | |
772 | ||
773 | L<ExtUtils::Miniperl> has been upgraded from version to 1.01. | |
774 | ||
775 | =item * | |
776 | ||
777 | L<ExtUtils::ParseXS> has been upgraded from version 3.18 to 3.24. | |
778 | ||
779 | =item * | |
780 | ||
781 | L<ExtUtils::Typemaps> has been upgraded from version 3.19 to 3.24. | |
782 | ||
783 | =item * | |
784 | ||
785 | L<ExtUtils::XSSymSet> has been upgraded from version 1.2 to 1.3. | |
786 | ||
787 | =item * | |
788 | ||
789 | L<feature> has been upgraded from version 1.32 to 1.36. | |
790 | ||
791 | =item * | |
792 | ||
793 | L<fields> has been upgraded from version 2.16 to 2.17. | |
794 | ||
795 | =item * | |
796 | ||
797 | L<File::Basename> has been upgraded from version 2.84 to 2.85. | |
798 | ||
799 | =item * | |
800 | ||
801 | L<File::Copy> has been upgraded from version 2.26 to 2.29. | |
802 | ||
803 | =item * | |
804 | ||
805 | L<File::DosGlob> has been upgraded from version 1.10 to 1.12. | |
806 | ||
807 | =item * | |
808 | ||
809 | L<File::Fetch> has been upgraded from version 0.38 to 0.48. | |
810 | ||
811 | =item * | |
812 | ||
813 | L<File::Find> has been upgraded from version 1.23 to 1.27. | |
814 | ||
815 | =item * | |
816 | ||
817 | L<File::Glob> has been upgraded from version 1.20 to 1.23. | |
818 | ||
819 | =item * | |
820 | ||
821 | L<File::Spec> has been upgraded from version 3.40 to 3.47. | |
822 | ||
823 | =item * | |
824 | ||
825 | L<File::Temp> has been upgraded from version 0.23 to 0.2304. | |
826 | ||
827 | =item * | |
828 | ||
829 | L<FileCache> has been upgraded from version 1.08 to 1.09. | |
830 | ||
831 | =item * | |
832 | ||
833 | L<Filter::Simple> has been upgraded from version 0.89 to 0.91. | |
834 | ||
835 | =item * | |
836 | ||
837 | L<Filter::Util::Call> has been upgraded from version 1.45 to 1.49. | |
838 | ||
839 | =item * | |
840 | ||
841 | L<Getopt::Long> has been upgraded from version 2.39 to 2.42. | |
842 | ||
843 | =item * | |
844 | ||
845 | L<Getopt::Std> has been upgraded from version 1.07 to 1.10. | |
846 | ||
847 | =item * | |
848 | ||
849 | L<Hash::Util::FieldHash> has been upgraded from version 1.10 to 1.15. | |
850 | ||
851 | =item * | |
852 | ||
853 | L<HTTP::Tiny> has been upgraded from version 0.025 to 0.043. | |
854 | ||
855 | =item * | |
856 | ||
857 | L<I18N::Langinfo> has been upgraded from version 0.10 to 0.11. | |
858 | ||
859 | =item * | |
860 | ||
861 | L<I18N::LangTags> has been upgraded from version 0.39 to 0.40. | |
862 | ||
863 | =item * | |
864 | ||
865 | L<if> has been upgraded from version 0.0602 to 0.0603. | |
866 | ||
867 | =item * | |
868 | ||
869 | L<inc::latest> has been upgraded from version 0.4003 to 0.4205. | |
870 | NOTE: L<inc::latest> is deprecated and may be removed from a future version of Perl. | |
871 | ||
872 | =item * | |
873 | ||
874 | L<integer> has been upgraded from version 1.00 to 1.01. | |
875 | ||
876 | =item * | |
877 | ||
878 | L<IO> has been upgraded from version 1.28 to 1.31. | |
879 | ||
880 | =item * | |
881 | ||
882 | L<IO::Compress::Gzip> and friends have been upgraded from version 2.060 to | |
883 | 2.064. | |
884 | ||
885 | =item * | |
886 | ||
887 | L<IPC::Cmd> has been upgraded from version 0.80 to 0.92. | |
888 | ||
889 | =item * | |
890 | ||
891 | L<IPC::Open3> has been upgraded from version 1.13 to 1.16. | |
892 | ||
893 | =item * | |
894 | ||
895 | L<IPC::SysV> has been upgraded from version 2.03 to 2.04. | |
896 | ||
897 | =item * | |
898 | ||
899 | L<JSON::PP> has been upgraded from version 2.27202 to 2.27203. | |
900 | ||
901 | =item * | |
902 | ||
903 | L<List::Util> has been upgraded from version 1.27 to 1.38. | |
904 | ||
905 | =item * | |
906 | ||
907 | L<locale> has been upgraded from version 1.02 to 1.03. | |
908 | ||
909 | =item * | |
910 | ||
911 | L<Locale::Codes> has been upgraded from version 3.25 to 3.30. | |
912 | ||
913 | =item * | |
914 | ||
915 | L<Locale::Maketext> has been upgraded from version 1.23 to 1.25. | |
916 | ||
917 | =item * | |
918 | ||
919 | L<Math::BigInt> has been upgraded from version 1.9991 to 1.9993. | |
920 | ||
921 | =item * | |
922 | ||
923 | L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31. | |
924 | ||
925 | =item * | |
926 | ||
927 | L<Math::BigRat> has been upgraded from version 0.2604 to 0.2606. | |
928 | ||
929 | =item * | |
930 | ||
931 | L<MIME::Base64> has been upgraded from version 3.13 to 3.14. | |
932 | ||
933 | =item * | |
934 | ||
935 | L<Module::Build> has been upgraded from version 0.4003 to 0.4205. | |
936 | NOTE: L<Module::Build> is deprecated and may be removed from a future version of Perl. | |
937 | ||
938 | =item * | |
939 | ||
940 | L<Module::CoreList> has been upgraded from version 2.89 to 3.10. | |
941 | ||
942 | =item * | |
943 | ||
944 | L<Module::Load> has been upgraded from version 0.24 to 0.32. | |
945 | ||
946 | =item * | |
947 | ||
948 | L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.62. | |
949 | ||
950 | =item * | |
951 | ||
952 | L<Module::Metadata> has been upgraded from version 1.000011 to 1.000019. | |
953 | ||
954 | =item * | |
955 | ||
956 | L<mro> has been upgraded from version 1.11 to 1.16. | |
957 | ||
958 | =item * | |
959 | ||
960 | L<Net::Ping> has been upgraded from version 2.41 to 2.43. | |
961 | ||
962 | =item * | |
963 | ||
964 | L<Opcode> has been upgraded from version 1.25 to 1.27. | |
965 | ||
966 | =item * | |
967 | ||
968 | L<Package::Constants> has been upgraded from version 0.02 to 0.04. | |
969 | NOTE: L<Package::Constants> is deprecated and may be removed from a future version of Perl. | |
970 | ||
971 | =item * | |
972 | ||
973 | L<Params::Check> has been upgraded from version 0.36 to 0.38. | |
974 | ||
975 | =item * | |
976 | ||
977 | L<parent> has been upgraded from version 0.225 to 0.228. | |
978 | ||
979 | =item * | |
980 | ||
981 | L<Parse::CPAN::Meta> has been upgraded from version 1.4404 to 1.4414. | |
982 | ||
983 | =item * | |
984 | ||
985 | L<Perl::OSType> has been upgraded from version 1.003 to 1.007. | |
986 | ||
987 | =item * | |
988 | ||
989 | L<perlfaq> has been upgraded from version 5.0150042 to 5.0150044. | |
990 | ||
991 | =item * | |
992 | ||
993 | L<PerlIO> has been upgraded from version 1.07 to 1.09. | |
994 | ||
995 | =item * | |
996 | ||
997 | L<PerlIO::encoding> has been upgraded from version 0.16 to 0.18. | |
998 | ||
999 | =item * | |
1000 | ||
1001 | L<PerlIO::scalar> has been upgraded from version 0.16 to 0.18. | |
1002 | ||
1003 | =item * | |
1004 | ||
1005 | L<PerlIO::via> has been upgraded from version 0.12 to 0.14. | |
1006 | ||
1007 | =item * | |
1008 | ||
1009 | L<Pod::Escapes> has been upgraded from version 1.04 to 1.06. | |
1010 | ||
1011 | =item * | |
1012 | ||
1013 | L<Pod::Functions> has been upgraded from version 1.06 to 1.08. | |
1014 | ||
1015 | =item * | |
1016 | ||
1017 | L<Pod::Html> has been upgraded from version 1.18 to 1.21. | |
1018 | ||
1019 | =item * | |
1020 | ||
1021 | L<Pod::Parser> has been upgraded from version 1.60 to 1.62. | |
1022 | ||
1023 | =item * | |
1024 | ||
1025 | L<Pod::Perldoc> has been upgraded from version 3.19 to 3.23. | |
1026 | ||
1027 | =item * | |
1028 | ||
1029 | L<Pod::Usage> has been upgraded from version 1.61 to 1.63. | |
1030 | ||
1031 | =item * | |
1032 | ||
1033 | L<POSIX> has been upgraded from version 1.32 to 1.38_03. | |
1034 | ||
1035 | =item * | |
1036 | ||
1037 | L<re> has been upgraded from version 0.23 to 0.26. | |
1038 | ||
1039 | =item * | |
1040 | ||
1041 | L<Safe> has been upgraded from version 2.35 to 2.37. | |
1042 | ||
1043 | =item * | |
1044 | ||
1045 | L<Scalar::Util> has been upgraded from version 1.27 to 1.38. | |
1046 | ||
1047 | =item * | |
1048 | ||
1049 | L<SDBM_File> has been upgraded from version 1.09 to 1.11. | |
1050 | ||
1051 | =item * | |
1052 | ||
1053 | L<Socket> has been upgraded from version 2.009 to 2.013. | |
1054 | ||
1055 | =item * | |
1056 | ||
1057 | L<Storable> has been upgraded from version 2.41 to 2.49. | |
1058 | ||
1059 | =item * | |
1060 | ||
1061 | L<strict> has been upgraded from version 1.07 to 1.08. | |
1062 | ||
1063 | =item * | |
1064 | ||
1065 | L<subs> has been upgraded from version 1.01 to 1.02. | |
1066 | ||
1067 | =item * | |
1068 | ||
1069 | L<Sys::Hostname> has been upgraded from version 1.17 to 1.18. | |
1070 | ||
1071 | =item * | |
1072 | ||
1073 | L<Sys::Syslog> has been upgraded from version 0.32 to 0.33. | |
1074 | ||
1075 | =item * | |
1076 | ||
1077 | L<Term::Cap> has been upgraded from version 1.13 to 1.15. | |
1078 | ||
1079 | =item * | |
1080 | ||
1081 | L<Term::ReadLine> has been upgraded from version 1.12 to 1.14. | |
1082 | ||
1083 | =item * | |
1084 | ||
1085 | L<Test::Harness> has been upgraded from version 3.26 to 3.30. | |
1086 | ||
1087 | =item * | |
1088 | ||
1089 | L<Test::Simple> has been upgraded from version 0.98 to 1.001002. | |
1090 | ||
1091 | =item * | |
1092 | ||
1093 | L<Text::ParseWords> has been upgraded from version 3.28 to 3.29. | |
1094 | ||
1095 | =item * | |
1096 | ||
1097 | L<Text::Tabs> has been upgraded from version 2012.0818 to 2013.0523. | |
1098 | ||
1099 | =item * | |
1100 | ||
1101 | L<Text::Wrap> has been upgraded from version 2012.0818 to 2013.0523. | |
1102 | ||
1103 | =item * | |
1104 | ||
1105 | L<Thread> has been upgraded from version 3.02 to 3.04. | |
1106 | ||
1107 | =item * | |
1108 | ||
1109 | L<Thread::Queue> has been upgraded from version 3.02 to 3.05. | |
1110 | ||
1111 | =item * | |
1112 | ||
1113 | L<threads> has been upgraded from version 1.86 to 1.93. | |
1114 | ||
1115 | =item * | |
1116 | ||
1117 | L<threads::shared> has been upgraded from version 1.43 to 1.46. | |
1118 | ||
1119 | =item * | |
1120 | ||
1121 | L<Tie::Array> has been upgraded from version 1.05 to 1.06. | |
1122 | ||
1123 | =item * | |
1124 | ||
1125 | L<Tie::File> has been upgraded from version 0.99 to 1.00. | |
1126 | ||
1127 | =item * | |
1128 | ||
1129 | L<Tie::Hash> has been upgraded from version 1.04 to 1.05. | |
1130 | ||
1131 | =item * | |
1132 | ||
1133 | L<Tie::Scalar> has been upgraded from version 1.02 to 1.03. | |
1134 | ||
1135 | =item * | |
1136 | ||
1137 | L<Tie::StdHandle> has been upgraded from version 4.3 to 4.4. | |
1138 | ||
1139 | =item * | |
1140 | ||
1141 | L<Time::HiRes> has been upgraded from version 1.9725 to 1.9726. | |
1142 | ||
1143 | =item * | |
1144 | ||
1145 | L<Time::Piece> has been upgraded from version 1.20_01 to 1.27. | |
1146 | ||
1147 | =item * | |
1148 | ||
1149 | L<Unicode::Collate> has been upgraded from version 0.97 to 1.04. | |
1150 | ||
1151 | =item * | |
1152 | ||
1153 | L<Unicode::Normalize> has been upgraded from version 1.16 to 1.17. | |
1154 | ||
1155 | =item * | |
1156 | ||
1157 | L<Unicode::UCD> has been upgraded from version 0.51 to 0.57. | |
1158 | ||
1159 | =item * | |
1160 | ||
1161 | L<utf8> has been upgraded from version 1.10 to 1.13. | |
1162 | ||
1163 | =item * | |
1164 | ||
1165 | L<version> has been upgraded from version 0.9902 to 0.9908. | |
1166 | ||
1167 | =item * | |
1168 | ||
1169 | L<vmsish> has been upgraded from version 1.03 to 1.04. | |
1170 | ||
1171 | =item * | |
1172 | ||
1173 | L<warnings> has been upgraded from version 1.18 to 1.23. | |
1174 | ||
1175 | =item * | |
1176 | ||
1177 | L<Win32> has been upgraded from version 0.47 to 0.49. | |
1178 | ||
1179 | =item * | |
1180 | ||
1181 | L<XS::Typemap> has been upgraded from version 0.10 to 0.13. | |
1182 | ||
1183 | =item * | |
1184 | ||
1185 | L<XSLoader> has been upgraded from version 0.16 to 0.17. | |
1186 | ||
1187 | =back | |
c68523cb RS |
1188 | |
1189 | =head1 Documentation | |
1190 | ||
1191 | =head2 New Documentation | |
1192 | ||
1193 | =head3 L<perlrepository> | |
1194 | ||
1195 | This document was removed (actually, renamed L<perlgit> and given a major | |
1196 | overhaul) in Perl v5.14, causing Perl documentation websites to show the now | |
1197 | out of date version in Perl v5.12 as the latest version. It has now been | |
1198 | restored in stub form, directing readers to current information. | |
45a13884 | 1199 | |
c68523cb | 1200 | =head2 Changes to Existing Documentation |
7ef8b31d | 1201 | |
c68523cb | 1202 | =head3 L<perldata> |
7ef8b31d SH |
1203 | |
1204 | =over 4 | |
45a13884 SH |
1205 | |
1206 | =item * | |
1207 | ||
c68523cb RS |
1208 | New sections have been added to document the new index/value array slice and |
1209 | key/value hash slice syntax. | |
f6f3144e | 1210 | |
7ef8b31d SH |
1211 | =back |
1212 | ||
c68523cb | 1213 | =head3 L<perldebguts> |
7ef8b31d SH |
1214 | |
1215 | =over 4 | |
f6f3144e SH |
1216 | |
1217 | =item * | |
1218 | ||
c68523cb RS |
1219 | The C<DB::goto> and C<DB::lsub> debugger subroutines are now documented. [perl |
1220 | #77680] | |
7ef8b31d SH |
1221 | |
1222 | =back | |
fc671210 | 1223 | |
c68523cb | 1224 | =head3 L<perlexperiment> |
ec71b45f | 1225 | |
c68523cb RS |
1226 | =over |
1227 | ||
1228 | =item * | |
1229 | ||
1230 | C<\s> matching C<\cK> is marked experimental. | |
1231 | ||
1232 | =item * | |
1233 | ||
1234 | ithreads were accepted in v5.8.0 (but are discouraged as of v5.20.0). | |
fc671210 SH |
1235 | |
1236 | =item * | |
1237 | ||
c68523cb RS |
1238 | Long doubles are not considered experimental. |
1239 | ||
1240 | =item * | |
1241 | ||
1242 | Code in regular expressions, regular expression backtracking verbs, | |
1243 | and lvalue subroutines are no longer listed as experimental. (This | |
1244 | also affects L<perlre> and L<perlsub>.) | |
fc671210 | 1245 | |
7ef8b31d | 1246 | =back |
fc671210 | 1247 | |
c68523cb | 1248 | =head3 L<perlfunc> |
fc671210 | 1249 | |
c68523cb | 1250 | =over |
33642846 | 1251 | |
c68523cb | 1252 | =item * |
e486a115 | 1253 | |
c68523cb | 1254 | C<chop> and C<chomp> now note that they can reset the hash iterator. |
f6f3144e | 1255 | |
c68523cb | 1256 | =item * |
ec71b45f | 1257 | |
c68523cb | 1258 | C<exec>'s handling of arguments is now more clearly documented. |
ec71b45f | 1259 | |
c68523cb | 1260 | =item * |
ec71b45f | 1261 | |
c68523cb RS |
1262 | C<eval EXPR> now has caveats about expanding floating point numbers in some |
1263 | locales. | |
f6f3144e | 1264 | |
c68523cb | 1265 | =item * |
f6f3144e | 1266 | |
c68523cb RS |
1267 | C<goto EXPR> is now documented to handle an expression that evalutes to a |
1268 | code reference as if it was C<goto &$coderef>. This behavior is at least ten | |
1269 | years old. | |
7432779b | 1270 | |
7ef8b31d | 1271 | =item * |
7432779b | 1272 | |
c68523cb RS |
1273 | Since Perl v5.10, it has been possible for subroutines in C<@INC> to return |
1274 | a reference to a scalar holding initial source code to prepend to the file. | |
1275 | This is now documented. | |
1276 | ||
1277 | =item * | |
1278 | ||
1279 | The documentation of C<ref> has been updated to recommend the use of | |
1280 | C<blessed>, C<isa> and C<reftype> when dealing with references to blessed | |
1281 | objects. | |
7432779b | 1282 | |
474475f6 | 1283 | =back |
e486a115 | 1284 | |
c68523cb | 1285 | =head3 L<perlguts> |
d07feb8f | 1286 | |
c68523cb | 1287 | =over 4 |
d07feb8f | 1288 | |
c68523cb | 1289 | =item * |
7ef8b31d | 1290 | |
c68523cb RS |
1291 | Numerous minor changes have been made to reflect changes made to the perl |
1292 | internals in this release. | |
7ef8b31d | 1293 | |
c68523cb | 1294 | =item * |
7ef8b31d | 1295 | |
c68523cb RS |
1296 | New sections on L<Read-Only Values|perlguts/"Read-Only Values"> and |
1297 | L<Copy on Write|perlguts/"Copy on Write"> have been added. | |
1298 | ||
1299 | =back | |
1300 | ||
1301 | =head3 L<perlhack> | |
7ef8b31d SH |
1302 | |
1303 | =over 4 | |
1304 | ||
1305 | =item * | |
1306 | ||
c68523cb RS |
1307 | The L<Super Quick Patch Guide|perlhack/SUPER QUICK PATCH GUIDE> section has |
1308 | been updated. | |
7ef8b31d SH |
1309 | |
1310 | =back | |
1311 | ||
c68523cb | 1312 | =head3 L<perlhacktips> |
7ef8b31d SH |
1313 | |
1314 | =over 4 | |
1315 | ||
1316 | =item * | |
1317 | ||
c68523cb RS |
1318 | The documentation has been updated to include some more examples of C<gdb> |
1319 | usage. | |
7ef8b31d SH |
1320 | |
1321 | =back | |
1322 | ||
c68523cb | 1323 | =head2 L<perllexwarn> |
7ef8b31d | 1324 | |
474475f6 | 1325 | =over 4 |
acc18285 | 1326 | |
b314f574 | 1327 | =item * |
acc18285 | 1328 | |
c68523cb RS |
1329 | The L<perllexwarn> documentation used to describe the hierarchy of warning |
1330 | categories understood by the L<warnings> pragma. That description has now | |
1331 | been moved to the L<warnings> documentation itself, leaving L<perllexwarn> | |
1332 | as a stub that points to it. This change consolidates all documentation for | |
1333 | lexical warnings in a single place. | |
acc18285 | 1334 | |
474475f6 | 1335 | =back |
87776862 | 1336 | |
c68523cb RS |
1337 | =head3 L<perllocale> |
1338 | ||
1339 | =over | |
1340 | ||
1341 | =item * | |
87776862 | 1342 | |
c68523cb RS |
1343 | The documentation now mentions F<fc()> and C<\F>, and includes many |
1344 | clarifications and corrections in general. | |
7ef8b31d | 1345 | |
c68523cb | 1346 | =back |
7ef8b31d | 1347 | |
c68523cb | 1348 | =head3 L<perlop> |
769e4861 | 1349 | |
474475f6 | 1350 | =over 4 |
769e4861 | 1351 | |
b314f574 | 1352 | =item * |
acc18285 | 1353 | |
c68523cb RS |
1354 | The language design of Perl has always called for monomorphic operators. |
1355 | This is now mentioned explicitly. | |
7ef8b31d SH |
1356 | |
1357 | =back | |
1358 | ||
c68523cb RS |
1359 | =head3 L<perlopentut> |
1360 | ||
1361 | =over 4 | |
1362 | ||
1363 | =item * | |
1364 | ||
1365 | The C<open> tutorial has been completely rewritten by Tom Christiansen, and now | |
1366 | focuses on covering only the basics, rather than providing a comprehensive | |
1367 | reference to all things openable. This rewrite came as the result of a | |
1368 | vigorous discussion on perl5-porters kicked off by a set of improvements | |
1369 | written by Alexander Hartmaier to the existing L<perlopentut>. A "more than | |
1370 | you ever wanted to know about C<open>" document may follow in subsequent | |
1371 | versions of perl. | |
7ef8b31d | 1372 | |
c68523cb | 1373 | =back |
7ef8b31d | 1374 | |
c68523cb | 1375 | =head3 L<perlre> |
7ef8b31d SH |
1376 | |
1377 | =over 4 | |
b314f574 AC |
1378 | |
1379 | =item * | |
1380 | ||
c68523cb RS |
1381 | The fact that the regexp engine makes no effort to call (?{}) and (??{}) |
1382 | constructs any specified number of times (although it will basically DWIM | |
1383 | in case of a successful match) has been documented. | |
769e4861 | 1384 | |
c68523cb | 1385 | =item * |
769e4861 | 1386 | |
c68523cb RS |
1387 | The C</r> modifier (for non-destructive substitution) is now documented. [perl |
1388 | #119151] | |
1389 | ||
1390 | =item * | |
7ef8b31d | 1391 | |
c68523cb | 1392 | The documentation for C</x> and C<(?# comment)> has been expanded and clarified. |
7ef8b31d | 1393 | |
c68523cb RS |
1394 | =back |
1395 | ||
1396 | =head3 L<perlreguts> | |
68f96b51 SH |
1397 | |
1398 | =over 4 | |
1399 | ||
1400 | =item * | |
1401 | ||
c68523cb RS |
1402 | The documentation has been updated in the light of recent changes to |
1403 | F<regcomp.c>. | |
68f96b51 SH |
1404 | |
1405 | =back | |
1406 | ||
c68523cb RS |
1407 | =head3 L<perlsub> |
1408 | ||
1409 | =over 4 | |
acc18285 | 1410 | |
c68523cb | 1411 | =item * |
7ef8b31d | 1412 | |
c68523cb RS |
1413 | The need to predeclare recursive functions with prototypes in order for the |
1414 | prototype to be honoured in the recursive call is now documented. [perl #2726] | |
7ef8b31d | 1415 | |
c68523cb | 1416 | =item * |
7ef8b31d | 1417 | |
c68523cb RS |
1418 | A list of subroutine names used by the perl implementation is now included. |
1419 | [perl #77680] | |
1420 | ||
1421 | =back | |
1422 | ||
1423 | =head3 L<perltrap> | |
87776862 | 1424 | |
10819dab | 1425 | =over 4 |
87776862 | 1426 | |
c68523cb | 1427 | =item * |
7ef8b31d | 1428 | |
c68523cb | 1429 | There is now a L<JavaScript|perltrap/JavaScript Traps> section. |
f6f3144e | 1430 | |
ce5b6630 | 1431 | =back |
025c2e17 | 1432 | |
c68523cb | 1433 | =head3 L<perlunicode> |
025c2e17 | 1434 | |
474475f6 | 1435 | =over 4 |
6fa4f5e3 | 1436 | |
c68523cb | 1437 | =item * |
6fa4f5e3 | 1438 | |
c68523cb RS |
1439 | The documentation has been updated to reflect C<Bidi_Class> changes in |
1440 | Unicode 6.3. | |
b3a2acfa | 1441 | |
ce5b6630 | 1442 | =back |
025c2e17 | 1443 | |
c68523cb | 1444 | =head3 L<perlvar> |
6fa4f5e3 | 1445 | |
474475f6 | 1446 | =over 4 |
6fa4f5e3 | 1447 | |
c68523cb | 1448 | =item * |
7ef8b31d | 1449 | |
c68523cb RS |
1450 | A new section explaining the performance issues of $`, $& and $', including |
1451 | workarounds and changes in different versions of Perl, has been added. | |
727d17a2 | 1452 | |
c68523cb | 1453 | =item * |
ea6b701a | 1454 | |
c68523cb RS |
1455 | Three L<English> variable names which have long been documented but do not |
1456 | actually exist have been removed from the documentation. These were | |
1457 | C<$OLD_PERL_VERSION>, C<$OFMT>, and C<$ARRAY_BASE>. | |
b17e32ea | 1458 | |
c68523cb | 1459 | =back |
c378dac0 | 1460 | |
c68523cb | 1461 | =head3 L<perlxs> |
7ef8b31d SH |
1462 | |
1463 | =over 4 | |
c378dac0 | 1464 | |
5c45d39a MH |
1465 | =item * |
1466 | ||
c68523cb | 1467 | Several problems in the C<MY_CXT> example have been fixed. |
5c45d39a | 1468 | |
7ef8b31d | 1469 | =back |
e1abb2bc | 1470 | |
c68523cb RS |
1471 | =head1 Diagnostics |
1472 | ||
1473 | The following additions or changes have been made to diagnostic output, | |
1474 | including warnings and fatal error messages. For the complete list of | |
1475 | diagnostic messages, see L<perldiag>. | |
7ef8b31d | 1476 | |
c68523cb | 1477 | =head2 New Diagnostics |
7ef8b31d | 1478 | |
c68523cb | 1479 | =head3 New Errors |
7ef8b31d SH |
1480 | |
1481 | =over 4 | |
25fdf527 TC |
1482 | |
1483 | =item * | |
1484 | ||
c68523cb | 1485 | L<delete argument is indexE<sol>value array slice, use array slice|perldiag/"delete argument is index/value array slice, use array slice"> |
e1abb2bc | 1486 | |
c68523cb RS |
1487 | (F) You used index/value array slice syntax (C<%array[...]>) as the argument to |
1488 | C<delete>. You probably meant C<@array[...]> with an @ symbol instead. | |
346295c2 | 1489 | |
c68523cb | 1490 | =item * |
346295c2 | 1491 | |
c68523cb | 1492 | L<delete argument is keyE<sol>value hash slice, use hash slice|perldiag/"delete argument is key/value hash slice, use hash slice"> |
7ef8b31d | 1493 | |
c68523cb RS |
1494 | (F) You used key/value hash slice syntax (C<%hash{...}>) as the argument to |
1495 | C<delete>. You probably meant C<@hash{...}> with an @ symbol instead. | |
7ef8b31d | 1496 | |
c68523cb RS |
1497 | =item * |
1498 | ||
1499 | L<Magical list constants are not supported|perldiag/"Magical list constants are | |
1500 | not supported"> | |
1501 | ||
1502 | (F) You assigned a magical array to a stash element, and then tried to use the | |
1503 | subroutine from the same slot. You are asking Perl to do something it cannot | |
1504 | do, details subject to change between Perl versions. | |
e9251c1a AC |
1505 | |
1506 | =item * | |
1507 | ||
c68523cb | 1508 | Added L<Setting $E<sol> to a %s reference is forbidden|perldiag/"Setting $E<sol> to %s reference is forbidden"> |
acc18285 TC |
1509 | |
1510 | =back | |
1511 | ||
c68523cb | 1512 | =head3 New Warnings |
f1a26846 | 1513 | |
7ef8b31d | 1514 | =over 4 |
f1a26846 | 1515 | |
7ef8b31d | 1516 | =item * |
52e02e68 | 1517 | |
0439a1e8 | 1518 | L<%s on reference is experimental|perldiag/"push on reference is experimental">: |
52e02e68 | 1519 | |
c68523cb RS |
1520 | The "auto-deref" feature is experimental. |
1521 | ||
1522 | Starting in v5.14.0, it was possible to use push, pop, keys, and other | |
1523 | built-in functions not only on aggregate types, but on references to | |
1524 | them. The feature was not deployed to its original intended | |
1525 | specification, and now may become redundant to postfix dereferencing. | |
1526 | It has always been categorized as an experimental feature, and in | |
1527 | v5.20.0 is carries a warning as such. | |
1528 | ||
1529 | Warnings will now be issued at compile time when these operations are | |
1530 | detected. | |
1531 | ||
1532 | no if $] >= 5.01908, warnings => "experimental::autoderef"; | |
1533 | ||
1534 | Consider, though, replacing the use of these features, as they may | |
1535 | change behavior again before becoming stable. | |
1536 | ||
1537 | =item * | |
1538 | ||
1539 | L<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"> | |
1540 | ||
1541 | L<Trailing white-space in a charnames alias definition is deprecated|perldiag/"Trailing white-space in a charnames alias definition is deprecated"> | |
1542 | ||
1543 | These two deprecation warnings involving C<\N{...}> were incorrectly | |
1544 | implemented. They did not warn by default (now they do) and could not be | |
1545 | made fatal via C<< use warnings FATAL => 'deprecated' >> (now they can). | |
1546 | ||
1547 | =item * | |
1548 | ||
1549 | L<Attribute prototype(%s) discards earlier prototype attribute in same sub|perldiag/"Attribute prototype(%s) discards earlier prototype attribute in same sub"> | |
1550 | ||
1551 | (W misc) A sub was declared as C<sub foo : prototype(A) : prototype(B) {}>, for | |
1552 | example. Since each sub can only have one prototype, the earlier | |
1553 | declaration(s) are discarded while the last one is applied. | |
1554 | ||
1555 | =item * | |
1556 | ||
1557 | L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s"> | |
1558 | ||
1559 | (W syscalls) Embedded \0 characters in pathnames or other system call arguments | |
1560 | produce a warning as of 5.20. The parts after the \0 were formerly ignored by | |
1561 | system calls. | |
1562 | ||
1563 | =item * | |
1564 | ||
1565 | L<Matched non-Unicode code point 0x%X against Unicode property; may not be portable|perldiag/"Matched non-Unicode code point 0x%X against Unicode property; may not be portable">. | |
1566 | ||
1567 | This replaces the message "Code point 0x%X is not Unicode, all \p{} matches | |
1568 | fail; all \P{} matches succeed". | |
1569 | ||
1570 | =item * | |
1571 | ||
1572 | L<Missing ']' in prototype for %s : %s|perldiag/"Missing ']' in prototype for %s : %s"> | |
1573 | ||
1574 | (W illegalproto) A grouping was started with C<[> but never closed with C<]>. | |
1575 | ||
1576 | =item * | |
1577 | ||
1578 | L<Possible precedence issue with control flow operator|perldiag/"Possible precedence issue with control flow operator"> | |
52e02e68 | 1579 | |
c68523cb RS |
1580 | (W syntax) There is a possible problem with the mixing of a control flow |
1581 | operator (e.g. C<return>) and a low-precedence operator like C<or>. Consider: | |
7ef8b31d | 1582 | |
c68523cb RS |
1583 | sub { return $a or $b; } |
1584 | ||
1585 | This is parsed as: | |
1586 | ||
1587 | sub { (return $a) or $b; } | |
1588 | ||
1589 | Which is effectively just: | |
1590 | ||
1591 | sub { return $a; } | |
1592 | ||
1593 | Either use parentheses or the high-precedence variant of the operator. | |
1594 | ||
1595 | Note this may be also triggered for constructs like: | |
1596 | ||
1597 | sub { 1 if die; } | |
1598 | ||
1599 | =item * | |
1600 | ||
1601 | L<Postfix dereference is experimental|perldiag/"Postfix dereference is experimental"> | |
1602 | ||
1603 | (S experimental::postderef) This warning is emitted if you use the experimental | |
1604 | postfix dereference syntax. Simply suppress the warning if you want to use the | |
1605 | feature, but know that in doing so you are taking the risk of using an | |
1606 | experimental feature which may change or be removed in a future Perl version: | |
1607 | ||
1608 | no warnings "experimental::postderef"; | |
1609 | use feature "postderef", "postderef_qq"; | |
1610 | $ref->$*; | |
1611 | $aref->@*; | |
1612 | $aref->@[@indices]; | |
1613 | ... etc ... | |
1614 | ||
1615 | =item * | |
1616 | ||
1617 | L<Prototype '%s' overridden by attribute 'prototype(%s)' in %s|perldiag/"Prototype '%s' overridden by attribute 'prototype(%s)' in %s"> | |
1618 | ||
1619 | (W prototype) A prototype was declared in both the parentheses after the sub | |
1620 | name and via the prototype attribute. The prototype in parentheses is useless, | |
1621 | since it will be replaced by the prototype from the attribute before it's ever | |
1622 | used. | |
1623 | ||
1624 | =item * | |
1625 | ||
0439a1e8 | 1626 | L<Scalar value @%s[%s] better written as $%s[%s]|perldiag/"Scalar value @%s[%s] better written as $%s[%s]"> |
c68523cb RS |
1627 | |
1628 | (W syntax) In scalar context, you've used an array index/value slice (indicated | |
1629 | by %) to select a single element of an array. Generally it's better to ask for | |
1630 | a scalar value (indicated by $). The difference is that C<$foo[&bar]> always | |
1631 | behaves like a scalar, both in the value it returns and when evaluating its | |
1632 | argument, while C<%foo[&bar]> provides a list context to its subscript, which | |
1633 | can do weird things if you're expecting only one subscript. When called in | |
1634 | list context, it also returns the index (what C<&bar> returns) in addition to | |
1635 | the value. | |
1636 | ||
1637 | =item * | |
1638 | ||
0439a1e8 | 1639 | L<Scalar value @%s{%s} better written as $%s{%s}|perldiag/"Scalar value @%s{%s} better written as $%s{%s}"> |
c68523cb RS |
1640 | |
1641 | (W syntax) In scalar context, you've used a hash key/value slice (indicated by | |
1642 | %) to select a single element of a hash. Generally it's better to ask for a | |
1643 | scalar value (indicated by $). The difference is that C<$foo{&bar}> always | |
1644 | behaves like a scalar, both in the value it returns and when evaluating its | |
1645 | argument, while C<@foo{&bar}> and provides a list context to its subscript, | |
1646 | which can do weird things if you're expecting only one subscript. When called | |
1647 | in list context, it also returns the key in addition to the value. | |
1648 | ||
1649 | =item * | |
1650 | ||
1651 | L<Setting $E<sol> to a reference to %s as a form of slurp is deprecated, treating as undef|perldiag/"Setting $E<sol> to a reference to %s as a form of slurp is deprecated, treating as undef"> | |
1652 | ||
1653 | =item * | |
1654 | ||
1655 | L<Unexpected exit %u|perldiag/"Unexpected exit %u"> | |
1656 | ||
1657 | (S) exit() was called or the script otherwise finished gracefully when | |
1658 | C<PERL_EXIT_WARN> was set in C<PL_exit_flags>. | |
1659 | ||
1660 | =item * | |
1661 | ||
0439a1e8 | 1662 | L<Unexpected exit failure %d|perldiag/"Unexpected exit failure %d"> |
c68523cb RS |
1663 | |
1664 | (S) An uncaught die() was called when C<PERL_EXIT_WARN> was set in | |
1665 | C<PL_exit_flags>. | |
1666 | ||
1667 | =item * | |
1668 | ||
1669 | L<Use of literal control characters in variable names is deprecated|perldiag/"Use of literal control characters in variable names is deprecated"> | |
1670 | ||
1671 | (D deprecated) Using literal control characters in the source to refer to the | |
1672 | ^FOO variables, like $^X and ${^GLOBAL_PHASE} is now deprecated. This only | |
1673 | affects code like $\cT, where \cT is a control (like a C<SOH>) in the | |
1674 | source code: ${"\cT"} and $^T remain valid. | |
1675 | ||
1676 | =item * | |
1677 | ||
1678 | L<Useless use of greediness modifier|perldiag/"Useless use of greediness modifier '%c' in regex; marked by <-- HERE in m/%s/"> | |
1679 | ||
1680 | This fixes [Perl #42957]. | |
1681 | ||
1682 | =back | |
1683 | ||
1684 | =head2 Changes to Existing Diagnostics | |
1685 | ||
1686 | =over 4 | |
1687 | ||
1688 | =item * | |
1689 | ||
1690 | Warnings and errors from the regexp engine are now UTF-8 clean. | |
1691 | ||
1692 | =item * | |
1693 | ||
1694 | The "Unknown switch condition" error message has some slight changes. This | |
1695 | error triggers when there is an unknown condition in a C<(?(foo))> conditional. | |
1696 | The error message used to read: | |
1697 | ||
1698 | Unknown switch condition (?(%s in regex; | |
1699 | ||
1700 | But what %s could be was mostly up to luck. For C<(?(foobar))>, you might have | |
1701 | seen "fo" or "f". For Unicode characters, you would generally get a corrupted | |
1702 | string. The message has been changed to read: | |
1703 | ||
1704 | Unknown switch condition (?(...)) in regex; | |
1705 | ||
1706 | Additionally, the C<'E<lt>-- HERE'> marker in the error will now point to the | |
1707 | correct spot in the regex. | |
1708 | ||
1709 | =item * | |
1710 | ||
1711 | The "%s "\x%X" does not map to Unicode" warning is now correctly listed as a | |
1712 | severe warning rather than as a fatal error. | |
1713 | ||
1714 | =item * | |
1715 | ||
1716 | Under rare circumstances, one could get a "Can't coerce readonly REF to | |
1717 | string" instead of the customary "Modification of a read-only value". This | |
1718 | alternate error message has been removed. | |
1719 | ||
1720 | =item * | |
1721 | ||
1722 | "Ambiguous use of * resolved as operator *": This and similar warnings | |
1723 | about "%" and "&" used to occur in some circumstances where there was no | |
1724 | operator of the type cited, so the warning was completely wrong. This has | |
1725 | been fixed [perl #117535, #76910]. | |
1726 | ||
1727 | =item * | |
1728 | ||
1729 | Warnings about malformed subroutine prototypes are now more consistent in | |
1730 | how the prototypes are rendered. Some of these warnings would truncate | |
1731 | prototypes containing nulls. In other cases one warning would suppress | |
1732 | another. The warning about illegal characters in prototypes no longer says | |
1733 | "after '_'" if the bad character came before the underscore. | |
1734 | ||
1735 | =item * | |
1736 | ||
1737 | L<Perl folding rules are not up-to-date for 0x%X; please use the perlbug | |
1738 | utility to report; in regex; marked by <-- HERE in | |
1739 | mE<sol>%sE<sol>|perldiag/"Perl folding rules are not up-to-date for 0x%X; | |
1740 | please use the perlbug utility to report; in regex; marked by <-- HERE in | |
1741 | m/%s/"> | |
1742 | ||
1743 | This message is now only in the regexp category, and not in the deprecated | |
1744 | category. It is still a default (i.e., severe) warning [perl #89648]. | |
1745 | ||
1746 | =item * | |
1747 | ||
1748 | L<%%s[%s] in scalar context better written as $%s[%s]|perldiag/"%%s[%s] in scalar context better written as $%s[%s]"> | |
1749 | ||
1750 | This warning now occurs for any C<%array[$index]> or C<%hash{key}> known to | |
1751 | be in scalar context at compile time. Previously it was worded "Scalar | |
1752 | value %%s[%s] better written as $%s[%s]". | |
1753 | ||
1754 | =item * | |
1755 | ||
1756 | L<Switch condition not recognized in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Switch condition not recognized in regex; marked by <-- HERE in m/%s/">: | |
1757 | ||
1758 | The description for this diagnostic has been extended to cover all cases where the warning may occur. | |
1759 | Issues with the positioning of the arrow indicator have also been resolved. | |
1760 | ||
1761 | =item * | |
1762 | ||
1763 | The error messages for C<my($a?$b$c)> and C<my(do{})> now mention "conditional | |
1764 | expression" and "do block", respectively, instead of reading 'Can't declare | |
1765 | null operation in "my"'. | |
1766 | ||
1767 | =item * | |
1768 | ||
1769 | When C<use re "debug"> executes a regex containing a backreference, the | |
1770 | debugging output now shows what string is being matched. | |
1771 | ||
1772 | =item * | |
1773 | ||
1774 | The now fatal error message C<Character following "\c" must be ASCII> has been | |
1775 | reworded as C<Character following "\c" must be printable ASCII> to emphasize | |
1776 | that in C<\cI<X>>, I<X> must be a I<printable (non-control)> ASCII character. | |
1777 | ||
1778 | =back | |
1779 | ||
1780 | =head1 Utility Changes | |
1781 | ||
1782 | =head3 L<a2p> | |
1783 | ||
1784 | =over 4 | |
1785 | ||
1786 | =item * | |
1787 | ||
1788 | A possible crash from an off-by-one error when trying to access before the | |
1789 | beginning of a buffer has been fixed. [perl #120244] | |
1790 | ||
1791 | =back | |
1792 | ||
1793 | =head3 F<bisect.pl> | |
1794 | ||
1795 | The git bisection tool F<Porting/bisect.pl> has had many enhancements. | |
1796 | ||
1797 | It is provided as part of the source distribution but not installed because | |
1798 | it is not self-contained as it relies on being run from within a git | |
1799 | checkout. Note also that it makes no attempt to fix tests, correct runtime | |
1800 | bugs or make something useful to install - its purpose is to make minimal | |
1801 | changes to get any historical revision of interest to build and run as close | |
1802 | as possible to "as-was", and thereby make C<git bisect> easy to use. | |
1803 | ||
1804 | =over 4 | |
1805 | ||
1806 | =item * | |
1807 | ||
1808 | Can optionally run the test case with a timeout. | |
1809 | ||
1810 | =item * | |
1811 | ||
1812 | Can now run in-place in a clean git checkout. | |
1813 | ||
1814 | =item * | |
1815 | ||
1816 | Can run the test case under C<valgrind>. | |
1817 | ||
1818 | =item * | |
1819 | ||
1820 | Can apply user supplied patches and fixes to the source checkout before | |
1821 | building. | |
1822 | ||
1823 | =item * | |
1824 | ||
1825 | Now has fixups to enable building several more historical ranges of bleadperl, | |
1826 | which can be useful for pinpointing the origins of bugs or behaviour changes. | |
1827 | ||
1828 | =back | |
1829 | ||
1830 | =head3 L<find2perl> | |
1831 | ||
1832 | =over 4 | |
1833 | ||
1834 | =item * | |
1835 | ||
1836 | L<find2perl> now handles C<?> wildcards correctly. [perl #113054] | |
1837 | ||
1838 | =back | |
1839 | ||
1840 | =head3 L<perlbug> | |
1841 | ||
1842 | =over 4 | |
1843 | ||
1844 | =item * | |
1845 | ||
1846 | F<perlbug> now has a C<-p> option for attaching patches with a bug report. | |
1847 | ||
1848 | =item * | |
1849 | ||
1850 | L<perlbug> has been modified to supply the report template with CRLF line | |
1851 | endings on Windows. | |
1852 | [L<perl #121277|https://rt.perl.org/Public/Bug/Display.html?id=121277>] | |
1853 | ||
1854 | =item * | |
1855 | ||
1856 | L<perlbug> now makes as few assumptions as possible about the encoding of the | |
1857 | report. This will likely change in the future to assume UTF-8 by default but | |
1858 | allow a user override. | |
1859 | ||
1860 | =back | |
1861 | ||
1862 | =head1 Configuration and Compilation | |
1863 | ||
1864 | =over 4 | |
1865 | ||
1866 | =item * | |
1867 | ||
1868 | The F<Makefile.PL> for L<SDBM_File> now generates a better F<Makefile>, which | |
1869 | avoids a race condition during parallel makes, which could cause the build to | |
1870 | fail. This is the last known parallel make problem (on *nix platforms), and | |
1871 | therefore we believe that a parallel make should now always be error free. | |
1872 | ||
1873 | =item * | |
1874 | ||
1875 | F<installperl> and F<installman>'s option handling has been refactored to use | |
1876 | L<Getopt::Long>. Both are used by the F<Makefile> C<install> targets, and | |
1877 | are not installed, so these changes are only likely to affect custom | |
1878 | installation scripts. | |
1879 | ||
1880 | =over 4 | |
1881 | ||
1882 | =item * | |
1883 | ||
1884 | Single letter options now also have long names. | |
1885 | ||
1886 | =item * | |
1887 | ||
1888 | Invalid options are now rejected. | |
1889 | ||
1890 | =item * | |
1891 | ||
1892 | Command line arguments that are not options are now rejected. | |
1893 | ||
1894 | =item * | |
1895 | ||
1896 | Each now has a C<--help> option to display the usage message. | |
1897 | ||
1898 | =back | |
1899 | ||
1900 | The behaviour for all valid documented invocations is unchanged. | |
1901 | ||
1902 | =item * | |
1903 | ||
1904 | Where possible, the build now avoids recursive invocations of F<make> when | |
1905 | building pure-Perl extensions, without removing any parallelism from the | |
1906 | build. Currently around 80 extensions can be processed directly by the | |
1907 | F<make_ext.pl> tool, meaning that 80 invocations of F<make> and 160 | |
1908 | invocations of F<miniperl> are no longer made. | |
1909 | ||
1910 | =item * | |
1911 | ||
1912 | The build system now works correctly when compiling under GCC or Clang with | |
1913 | link-time optimization enabled (the C<-flto> option). [perl #113022] | |
1914 | ||
1915 | =item * | |
1916 | ||
1917 | Distinct library basenames with C<d_libname_unique>. | |
1918 | ||
1919 | When compiling perl with this option, the library files for XS modules are | |
1920 | named something "unique" -- for example, Hash/Util/Util.so becomes | |
1921 | Hash/Util/PL_Hash__Util.so. This behavior is similar to what currently | |
1922 | happens on VMS, and serves as groundwork for the Android port. | |
1923 | ||
1924 | =item * | |
1925 | ||
1926 | C<sysroot> option to indicate the logical root directory under gcc and clang. | |
1927 | ||
1928 | When building with this option set, both Configure and the compilers search | |
1929 | for all headers and libraries under this new sysroot, instead of /. | |
1930 | ||
1931 | This is a huge time saver if cross-compiling, but can also help | |
1932 | on native builds if your toolchain's files have non-standard locations. | |
1933 | ||
1934 | =item * | |
1935 | ||
1936 | The cross-compilation model has been renovated. | |
1937 | There's several new options, and some backwards-incompatible changes: | |
1938 | ||
1939 | We now build binaries for miniperl and generate_uudmap to be used on the host, | |
1940 | rather than running every miniperl call on the target; this means that, short | |
1941 | of 'make test', we no longer need access to the target system once Configure is | |
1942 | done. You can provide already-built binaries through the C<hostperl> and | |
1943 | C<hostgenerate> options to Configure. | |
1944 | ||
1945 | Additionally, if targeting an EBCDIC platform from an ASCII host, | |
1946 | or viceversa, you'll need to run Configure with C<-Uhostgenerate>, to | |
1947 | indicate that generate_uudmap should be run on the target. | |
1948 | ||
1949 | Finally, there's also a way of having Configure end early, right after | |
1950 | building the host binaries, by cross-compiling without specifying a | |
1951 | C<targethost>. | |
1952 | ||
1953 | The incompatible changes include no longer using xconfig.h, xlib, or | |
1954 | Cross.pm, so canned config files and Makefiles will have to be updated. | |
1955 | ||
1956 | =item * | |
1957 | ||
1958 | Related to the above, there is now a way of specifying the location of sh | |
1959 | (or equivalent) on the target system: C<targetsh>. | |
1960 | ||
1961 | For example, Android has its sh in /system/bin/sh, so if cross-compiling | |
1962 | from a more normal Unixy system with sh in /bin/sh, "targetsh" would end | |
1963 | up as /system/bin/sh, and "sh" as /bin/sh. | |
1964 | ||
1965 | =item * | |
1966 | ||
1967 | By default, B<gcc> 4.9 does some optimizations that break perl. The B<-fwrapv> | |
1968 | option disables those optimizations (and probably others), so for B<gcc> 4.3 | |
1969 | and later (since the there might be similar problems lurking on older versions | |
1970 | too, but B<-fwrapv> was broken before 4.3, and the optimizations probably won't | |
1971 | go away), F<Configure> now adds B<-fwrapv> unless the user requests | |
1972 | B<-fno-wrapv>, which disables B<-fwrapv>, or B<-fsanitize=undefined>, which | |
1973 | turns the overflows B<-fwrapv> ignores into runtime errors. | |
1974 | [L<perl #121505|https://rt.perl.org/Public/Bug/Display.html?id=121505>] | |
1975 | ||
1976 | =back | |
1977 | ||
1978 | =head1 Testing | |
1979 | ||
1980 | =over 4 | |
1981 | ||
1982 | =item * | |
1983 | ||
1984 | The C<test.valgrind> make target now allows tests to be run in parallel. | |
1985 | This target allows Perl's test suite to be run under Valgrind, which detects | |
1986 | certain sorts of C programming errors, though at significant cost in running | |
1987 | time. On suitable hardware, allowing parallel execution claws back a lot of | |
1988 | that additional cost. [perl #121431] | |
1989 | ||
1990 | =item * | |
1991 | ||
1992 | Various tests in F<t/porting/> are no longer skipped when the perl | |
1993 | F<.git> directory is outside the perl tree and pointed to by | |
1994 | C<$GIT_DIR>. [perl #120505] | |
1995 | ||
1996 | =item * | |
1997 | ||
1998 | The test suite no longer fails when the user's interactive shell maintains a | |
1999 | C<$PWD> environment variable, but the F</bin/sh> used for running tests | |
2000 | doesn't. | |
2001 | ||
2002 | =back | |
2003 | ||
2004 | =head1 Platform Support | |
2005 | ||
2006 | =head2 New Platforms | |
2007 | ||
2008 | =over 4 | |
2009 | ||
2010 | =item Android | |
2011 | ||
2012 | Perl can now be built for Android, either natively or through | |
2013 | cross-compilation, for all three currently available architectures (ARM, | |
2014 | MIPS, and x86), on a wide range of versions. | |
2015 | ||
2016 | =item Bitrig | |
2017 | ||
2018 | Compile support has been added for Bitrig, a fork of OpenBSD. | |
2019 | ||
2020 | =item FreeMiNT | |
2021 | ||
2022 | Support has been added for FreeMiNT, a free open-source OS for the Atari ST | |
2023 | system and its successors, based on the original MiNT that was officially | |
2024 | adopted by Atari. | |
2025 | ||
2026 | =item Synology | |
2027 | ||
2028 | Synology ships its NAS boxes with a lean Linux distribution (DSM) on relative | |
2029 | cheap CPU's (like the Marvell Kirkwood mv6282 - ARMv5tel or Freescale QorIQ | |
2030 | P1022 ppc - e500v2) not meant for workstations or development. These boxes | |
2031 | should build now. The basic problems are the non-standard location for tools. | |
2032 | ||
2033 | =back | |
2034 | ||
2035 | =head2 Discontinued Platforms | |
2036 | ||
2037 | =over 4 | |
2038 | ||
2039 | =item C<sfio> | |
2040 | ||
2041 | Code related to supporting the C<sfio> I/O system has been removed. | |
2042 | ||
2043 | Perl 5.004 added support to use the native API of C<sfio>, AT&T's Safe/Fast | |
2044 | I/O library. This code still built with v5.8.0, albeit with many regression | |
2045 | tests failing, but was inadvertently broken before the v5.8.1 release, | |
2046 | meaning that it has not worked on any version of Perl released since then. | |
2047 | In over a decade we have received no bug reports about this, hence it is clear | |
2048 | that no-one is using this functionality on any version of Perl that is still | |
2049 | supported to any degree. | |
2050 | ||
2051 | =item AT&T 3b1 | |
2052 | ||
2053 | Configure support for the 3b1, also known as the AT&T Unix PC (and the similar | |
2054 | AT&T 7300), has been removed. | |
2055 | ||
2056 | =item DG/UX | |
2057 | ||
2058 | DG/UX was a Unix sold by Data General. The last release was in April 2001. | |
2059 | It only runs on Data General's own hardware. | |
2060 | ||
2061 | =item EBCDIC | |
2062 | ||
2063 | In the absence of a regular source of smoke reports, code intended to support | |
2064 | native EBCDIC platforms will be removed from perl before 5.22.0. | |
2065 | ||
2066 | =back | |
2067 | ||
2068 | =head2 Platform-Specific Notes | |
2069 | ||
2070 | =over 4 | |
2071 | ||
2072 | =item Cygwin | |
2073 | ||
2074 | =over 4 | |
2075 | ||
2076 | =item * | |
2077 | ||
2078 | recv() on a connected handle would populate the returned sender | |
2079 | address with whatever happened to be in the working buffer. recv() | |
2080 | now uses a workaround similar to the Win32 recv() wrapper and returns | |
2081 | an empty string when recvfrom(2) doesn't modify the supplied address | |
2082 | length. [perl #118843] | |
2083 | ||
2084 | =item * | |
2085 | ||
2086 | Fixed a build error in cygwin.c on Cygwin 1.7.28. | |
2087 | ||
2088 | Tests now handle the errors that occur when C<cygserver> isn't | |
2089 | running. | |
2090 | ||
2091 | =back | |
2092 | ||
2093 | =item GNU/Hurd | |
2094 | ||
2095 | The BSD compatibility library C<libbsd> is no longer required for builds. | |
2096 | ||
2097 | =item Linux | |
2098 | ||
2099 | The hints file now looks for C<libgdbm_compat> only if C<libgdbm> itself is | |
2100 | also wanted. The former is never useful without the latter, and in some | |
2101 | circumstances, including it could actually prevent building. | |
2102 | ||
2103 | =item Mac OS | |
2104 | ||
2105 | The build system now honors an C<ld> setting supplied by the user running | |
2106 | F<Configure>. | |
2107 | ||
2108 | =item MidnightBSD | |
2109 | ||
2110 | C<objformat> was removed from version 0.4-RELEASE of MidnightBSD and had been | |
2111 | deprecated on earlier versions. This caused the build environment to be | |
2112 | erroneously configured for C<a.out> rather than C<elf>. This has been now | |
2113 | been corrected. | |
2114 | ||
2115 | =item Mixed-endian platforms | |
2116 | ||
2117 | The code supporting C<pack> and C<unpack> operations on mixed endian | |
2118 | platforms has been removed. We believe that Perl has long been unable to | |
2119 | build on mixed endian architectures (such as PDP-11s), so we don't think | |
2120 | that this change will affect any platforms which were able to build v5.18.0. | |
2121 | ||
2122 | =item VMS | |
2123 | ||
2124 | =over 4 | |
2125 | ||
2126 | =item * | |
2127 | ||
2128 | The C<PERL_ENV_TABLES> feature to control the population of %ENV at perl | |
2129 | start-up was broken in Perl 5.16.0 but has now been fixed. | |
2130 | ||
2131 | =item * | |
2132 | ||
2133 | Skip access checks on remotes in opendir(). [perl #121002] | |
2134 | ||
2135 | =item * | |
2136 | ||
2137 | A check for glob metacharacters in a path returned by the | |
2138 | L<C<glob()>|perlfunc/glob> operator has been replaced with a check for VMS | |
2139 | wildcard characters. This saves a significant number of unnecessary | |
2140 | L<C<lstat()>|perlfunc/lstat> calls such that some simple glob operations become | |
2141 | 60-80% faster. | |
2142 | ||
2143 | =back | |
2144 | ||
2145 | =item Win32 | |
2146 | ||
2147 | =over 4 | |
2148 | ||
2149 | =item * | |
2150 | ||
2151 | C<rename> and C<link> on Win32 now set $! to ENOSPC and EDQUOT when | |
2152 | appropriate. [perl #119857] | |
2153 | ||
2154 | =item * | |
2155 | ||
2156 | The BUILD_STATIC and ALL_STATIC makefile options for linking some or (nearly) | |
2157 | all extensions statically (into perl520.dll, and into a separate | |
2158 | perl-static.exe too) were broken for MinGW builds. This has now been fixed. | |
2159 | ||
2160 | The ALL_STATIC option has also been improved to include the Encode and Win32 | |
2161 | extensions (for both VC++ and MinGW builds). | |
2162 | ||
2163 | =item * | |
2164 | ||
2165 | Support for building with Visual C++ 2013 has been added. There are currently | |
2166 | two possible test failures (see L<perlwin32/"Testing Perl on Windows">) which | |
2167 | will hopefully be resolved soon. | |
2168 | ||
2169 | =item * | |
2170 | ||
2171 | Experimental support for building with Intel C++ Compiler has been added. The | |
2172 | nmake makefile (win32/Makefile) and the dmake makefile (win32/makefile.mk) can | |
2173 | be used. A "nmake test" will not pass at this time due to F<cpan/CGI/t/url.t>. | |
2174 | ||
2175 | =item * | |
2176 | ||
2177 | Killing a process tree with L<perlfunc/kill> and a negative signal, was broken | |
2178 | starting in 5.18.0. In this bug, C<kill> always returned 0 for a negative | |
2179 | signal even for valid PIDs, and no processes were terminated. This has been | |
2180 | fixed [perl #121230]. | |
2181 | ||
2182 | =item * | |
2183 | ||
2184 | The time taken to build perl on Windows has been reduced quite significantly | |
2185 | (time savings in the region of 30-40% are typically seen) by reducing the | |
2186 | number of, usually failing, I/O calls for each L<C<require()>|perlfunc/require> | |
2187 | (for B<miniperl.exe> only). | |
2188 | [L<perl #121119|https://rt.perl.org/Public/Bug/Display.html?id=121119>] | |
2189 | ||
2190 | =item * | |
2191 | ||
2192 | About 15 minutes of idle sleeping was removed from running C<make test> due to | |
2193 | a bug in which the timeout monitor used for tests could not be cancelled once | |
2194 | the test completes, and the full timeout period elapsed before running the next | |
2195 | test file. | |
2196 | [L<perl #121395|https://rt.perl.org/Public/Bug/Display.html?id=121395>] | |
2197 | ||
2198 | =item * | |
2199 | ||
2200 | On a perl built without pseudo-fork (pseudo-fork builds were not affected by | |
2201 | this bug), killing a process tree with L<C<kill()>|perlfunc/kill> and a negative | |
2202 | signal resulted in C<kill()> inverting the returned value. For example, if | |
2203 | C<kill()> killed 1 process tree PID then it returned 0 instead of 1, and if | |
2204 | C<kill()> was passed 2 invalid PIDs then it returned 2 instead of 0. This has | |
2205 | probably been the case since the process tree kill feature was implemented on | |
2206 | Win32. It has now been corrected to follow the documented behaviour. | |
2207 | [L<perl #121230|https://rt.perl.org/Public/Bug/Display.html?id=121230>] | |
2208 | ||
2209 | =item * | |
2210 | ||
2211 | When building a 64-bit perl, an uninitialized memory read in B<miniperl.exe>, | |
2212 | used during the build process, could lead to a 4GB B<wperl.exe> being created. | |
2213 | This has now been fixed. (Note that B<perl.exe> itself was unaffected, but | |
2214 | obviously B<wperl.exe> would have been completely broken.) | |
2215 | [L<perl #121471|https://rt.perl.org/Public/Bug/Display.html?id=121471>] | |
2216 | ||
2217 | =item * | |
2218 | ||
2219 | Perl can now be built with B<gcc> version 4.8.1 from L<http://www.mingw.org>. | |
2220 | This was previously broken due to an incorrect definition of DllMain() in one | |
2221 | of perl's source files. Earlier B<gcc> versions were also affected when using | |
2222 | version 4 of the w32api package. Versions of B<gcc> available from | |
2223 | L<http://mingw-w64.sourceforge.net/> were not affected. | |
2224 | [L<perl #121643|https://rt.perl.org/Public/Bug/Display.html?id=121643>] | |
2225 | ||
2226 | =item * | |
2227 | ||
2228 | The test harness now has no failures when perl is built on a FAT drive with the | |
2229 | Windows OS on an NTFS drive. | |
2230 | [L<perl #21442|https://rt.perl.org/Public/Bug/Display.html?id=21442>] | |
2231 | ||
2232 | =item * | |
2233 | ||
2234 | When cloning the context stack in fork() emulation, Perl_cx_dup() | |
2235 | would crash accessing parameter information for context stack entries | |
2236 | that included no parameters, as with C<&foo;>. | |
2237 | [L<perl #121721|https://rt.perl.org/Public/Bug/Display.html?id=121721>] | |
2238 | ||
58627cdf DD |
2239 | =item * |
2240 | ||
47e6d4db SH |
2241 | Introduced by |
2242 | L<perl #113536|https://rt.perl.org/Public/Bug/Display.html?id=113536>, a memory | |
2243 | leak on every call to C<system> and backticks (C< `` >), on most Win32 Perls | |
2244 | starting from 5.18.0 has been fixed. The memory leak only occurred if you | |
2245 | enabled psuedo-fork in your build of Win32 Perl, and were running that build on | |
2246 | Server 2003 R2 or newer OS. The leak does not appear on WinXP SP3. | |
2247 | [L<perl #121676|https://rt.perl.org/Public/Bug/Display.html?id=121676>] | |
58627cdf | 2248 | |
c68523cb RS |
2249 | =back |
2250 | ||
2251 | =item WinCE | |
2252 | ||
2253 | =over 4 | |
2254 | ||
2255 | =item * | |
2256 | ||
2257 | The building of XS modules has largely been restored. Several still cannot | |
2258 | (yet) be built but it is now possible to build Perl on WinCE with only a couple | |
2259 | of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be | |
2260 | incorporated soon. | |
2261 | ||
2262 | =item * | |
2263 | ||
2264 | Perl can now be built in one shot with no user intervention on WinCE by running | |
2265 | C<nmake -f Makefile.ce all>. | |
2266 | ||
2267 | Support for building with EVC (Embedded Visual C++) 4 has been restored. Perl | |
2268 | can also be built using Smart Devices for Visual C++ 2005 or 2008. | |
2269 | ||
2270 | =back | |
2271 | ||
2272 | =back | |
2273 | ||
2274 | =head1 Internal Changes | |
2275 | ||
2276 | =over 4 | |
2277 | ||
2278 | =item * | |
2279 | ||
2280 | The internal representation has changed for the match variables $1, $2 etc., | |
2281 | $`, $&, $', ${^PREMATCH}, ${^MATCH} and ${^POSTMATCH}. It uses slightly less | |
2282 | memory, avoids string comparisons and numeric conversions during lookup, and | |
2283 | uses 23 fewer lines of C. This change should not affect any external code. | |
2284 | ||
2285 | =item * | |
2286 | ||
2287 | Arrays now use NULL internally to represent unused slots, instead of | |
2288 | &PL_sv_undef. &PL_sv_undef is no longer treated as a special value, so | |
2289 | av_store(av, 0, &PL_sv_undef) will cause element 0 of that array to hold a | |
2290 | read-only undefined scalar. C<$array[0] = anything> will croak and | |
2291 | C<\$array[0]> will compare equal to C<\undef>. | |
2292 | ||
2293 | =item * | |
2294 | ||
2295 | The SV returned by HeSVKEY_force() now correctly reflects the UTF8ness of the | |
2296 | underlying hash key when that key is not stored as a SV. [perl #79074] | |
2297 | ||
2298 | =item * | |
2299 | ||
2300 | Certain rarely used functions and macros available to XS code are now | |
2301 | deprecated. These are: | |
2302 | C<utf8_to_uvuni_buf> (use C<utf8_to_uvchr_buf> instead), | |
2303 | C<valid_utf8_to_uvuni> (use C<utf8_to_uvchr_buf> instead), | |
2304 | C<NATIVE_TO_NEED> (this did not work properly anyway), | |
2305 | and C<ASCII_TO_NEED> (this did not work properly anyway). | |
2306 | ||
2307 | Starting in this release, almost never does application code need to | |
2308 | distinguish between the platform's character set and Latin1, on which the | |
2309 | lowest 256 characters of Unicode are based. New code should not use | |
2310 | C<utf8n_to_uvuni> (use C<utf8_to_uvchr_buf> instead), | |
2311 | nor | |
2312 | C<uvuni_to_utf8> (use C<uvchr_to_utf8> instead), | |
2313 | ||
2314 | =item * | |
2315 | ||
2316 | The Makefile shortcut targets for many rarely (or never) used testing and | |
2317 | profiling targets have been removed, or merged into the only other Makefile | |
2318 | target that uses them. Specifically, these targets are gone, along with | |
2319 | documentation that referenced them or explained how to use them: | |
2320 | ||
2321 | check.third check.utf16 check.utf8 coretest minitest.prep | |
2322 | minitest.utf16 perl.config.dashg perl.config.dashpg | |
2323 | perl.config.gcov perl.gcov perl.gprof perl.gprof.config | |
2324 | perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix | |
2325 | perl.third perl.third.config perl.valgrind.config purecovperl | |
2326 | pureperl quantperl test.deparse test.taintwarn test.third | |
2327 | test.torture test.utf16 test.utf8 test_notty.deparse | |
2328 | test_notty.third test_notty.valgrind test_prep.third | |
2329 | test_prep.valgrind torturetest ucheck ucheck.third ucheck.utf16 | |
2330 | ucheck.valgrind utest utest.third utest.utf16 utest.valgrind | |
2331 | ||
2332 | It's still possible to run the relevant commands by "hand" - no underlying | |
2333 | functionality has been removed. | |
2334 | ||
2335 | =item * | |
2336 | ||
2337 | It is now possible to keep Perl from initializing locale handling. | |
2338 | For the most part, Perl doesn't pay attention to locale. (See | |
2339 | L<perllocale>.) Nonetheless, until now, on startup, it has always | |
2340 | initialized locale handling to the system default, just in case the | |
2341 | program being executed ends up using locales. (This is one of the first | |
2342 | things a locale-aware program should do, long before Perl knows if it | |
2343 | will actually be needed or not.) This works well except when Perl is | |
2344 | embedded in another application which wants a locale that isn't the | |
2345 | system default. Now, if the environment variable | |
2346 | C<PERL_SKIP_LOCALE_INIT> is set at the time Perl is started, this | |
2347 | initialization step is skipped. Prior to this, on Windows platforms, | |
2348 | the only workaround for this deficiency was to use a hacked-up copy of | |
2349 | internal Perl code. Applications that need to use older Perls can | |
2350 | discover if the embedded Perl they are using needs the workaround by | |
2351 | testing that the C preprocessor symbol C<HAS_SKIP_LOCALE_INIT> is not | |
2352 | defined. [RT #38193] | |
2353 | ||
2354 | =item * | |
2355 | ||
2356 | C<BmRARE> and C<BmPREVIOUS> have been removed. They were not used anywhere | |
2357 | and are not part of the API. For XS modules, they are now #defined as 0. | |
2358 | ||
2359 | =item * | |
2360 | ||
2361 | C<sv_force_normal>, which usually croaks on read-only values, used to allow | |
2362 | read-only values to be modified at compile time. This has been changed to | |
2363 | croak on read-only values regardless. This change uncovered several core | |
2364 | bugs. | |
2365 | ||
2366 | =item * | |
2367 | ||
2368 | Perl's new copy-on-write mechanism (which is now enabled by default), | |
2369 | allows any C<SvPOK> scalar to be automatically upgraded to a copy-on-write | |
2370 | scalar when copied. A reference count on the string buffer is stored in | |
2371 | the string buffer itself. | |
2372 | ||
2373 | For example: | |
2374 | ||
2375 | $ perl -MDevel::Peek -e'$a="abc"; $b = $a; Dump $a; Dump $b' | |
2376 | SV = PV(0x260cd80) at 0x2620ad8 | |
2377 | REFCNT = 1 | |
2378 | FLAGS = (POK,IsCOW,pPOK) | |
2379 | PV = 0x2619bc0 "abc"\0 | |
2380 | CUR = 3 | |
2381 | LEN = 16 | |
2382 | COW_REFCNT = 1 | |
2383 | SV = PV(0x260ce30) at 0x2620b20 | |
2384 | REFCNT = 1 | |
2385 | FLAGS = (POK,IsCOW,pPOK) | |
2386 | PV = 0x2619bc0 "abc"\0 | |
2387 | CUR = 3 | |
2388 | LEN = 16 | |
2389 | COW_REFCNT = 1 | |
2390 | ||
2391 | Note that both scalars share the same PV buffer and have a COW_REFCNT | |
2392 | greater than zero. | |
2393 | ||
2394 | This means that XS code which wishes to modify the C<SvPVX()> buffer of an | |
2395 | SV should call C<SvPV_force()> or similar first, to ensure a valid (and | |
2396 | unshared) buffer, and to call C<SvSETMAGIC()> afterwards. This in fact has | |
2397 | always been the case (for example hash keys were already copy-on-write); | |
2398 | this change just spreads the COW behaviour to a wider variety of SVs. | |
2399 | ||
2400 | One important difference is that before 5.18.0, shared hash-key scalars | |
2401 | used to have the C<SvREADONLY> flag set; this is no longer the case. | |
2402 | ||
2403 | This new behaviour can still be disabled by running F<Configure> with | |
2404 | B<-Accflags=-DPERL_NO_COW>. This option will probably be removed in Perl | |
2405 | 5.22. | |
2406 | ||
2407 | =item * | |
2408 | ||
2409 | C<PL_sawampersand> is now a constant. The switch this variable provided | |
2410 | (to enable/disable the pre-match copy depending on whether C<$&> had been | |
2411 | seen) has been removed and replaced with copy-on-write, eliminating a few | |
2412 | bugs. | |
2413 | ||
2414 | The previous behaviour can still be enabled by running F<Configure> with | |
2415 | B<-Accflags=-DPERL_SAWAMPERSAND>. | |
2416 | ||
2417 | =item * | |
2418 | ||
2419 | The functions C<my_swap>, C<my_htonl> and C<my_ntohl> have been removed. | |
2420 | It is unclear why these functions were ever marked as I<A>, part of the | |
2421 | API. XS code can't call them directly, as it can't rely on them being | |
2422 | compiled. Unsurprisingly, no code on CPAN references them. | |
2423 | ||
2424 | =item * | |
2425 | ||
2426 | The signature of the C<Perl_re_intuit_start()> regex function has changed; | |
2427 | the function pointer C<intuit> in the regex engine plugin structure | |
2428 | has also changed accordingly. A new parameter, C<strbeg> has been added; | |
2429 | this has the same meaning as the same-named parameter in | |
2430 | C<Perl_regexec_flags>. Previously intuit would try to guess the start of | |
2431 | the string from the passed SV (if any), and would sometimes get it wrong | |
2432 | (e.g. with an overloaded SV). | |
2433 | ||
2434 | =item * | |
2435 | ||
36c4d3a0 TC |
2436 | The signature of the C<Perl_regexec_flags()> regex function has |
2437 | changed; the function pointer C<exec> in the regex engine plugin | |
2438 | structure has also changed to match. The C<minend> parameter now has | |
2439 | type C<SSize_t> to better support 64-bit systems. | |
2440 | ||
2441 | =item * | |
2442 | ||
c68523cb RS |
2443 | XS code may use various macros to change the case of a character or code |
2444 | point (for example C<toLOWER_utf8()>). Only a couple of these were | |
2445 | documented until now; | |
2446 | and now they should be used in preference to calling the underlying | |
2447 | functions. See L<perlapi/Character case changing>. | |
2448 | ||
2449 | =item * | |
2450 | ||
2451 | The code dealt rather inconsistently with uids and gids. Some | |
2452 | places assumed that they could be safely stored in UVs, others | |
2453 | in IVs, others in ints. Four new macros are introduced: | |
2454 | SvUID(), sv_setuid(), SvGID(), and sv_setgid() | |
2455 | ||
2456 | =item * | |
2457 | ||
2458 | C<sv_pos_b2u_flags> has been added to the API. It is similar to C<sv_pos_b2u>, | |
2459 | but supports long strings on 64-bit platforms. | |
2460 | ||
2461 | =item * | |
2462 | ||
2463 | C<PL_exit_flags> can now be used by perl embedders or other XS code to have | |
2464 | perl C<warn> or C<abort> on an attempted exit. [perl #52000] | |
2465 | ||
2466 | =item * | |
2467 | ||
2468 | Compiling with C<-Accflags=-PERL_BOOL_AS_CHAR> now allows C99 and C++ | |
2469 | compilers to emulate the aliasing of C<bool> to C<char> that perl does for | |
2470 | C89 compilers. [perl #120314] | |
2471 | ||
2472 | =item * | |
2473 | ||
2474 | The C<sv> argument in L<perlapi/sv_2pv_flags>, L<perlapi/sv_2iv_flags>, | |
2475 | L<perlapi/sv_2uv_flags>, and L<perlapi/sv_2nv_flags> and their older wrappers | |
2476 | sv_2pv, sv_2iv, sv_2uv, sv_2nv, is now non-NULL. Passing NULL now will crash. | |
2477 | When the non-NULL marker was introduced en masse in 5.9.3 the functions | |
2478 | were marked non-NULL, but since the creation of the SV API in 5.0 alpha 2, if | |
2479 | NULL was passed, the functions returned 0 or false-type values. The code that | |
2480 | supports C<sv> argument being non-NULL dates to 5.0 alpha 2 directly, and | |
2481 | indirectly to Perl 1.0 (pre 5.0 api). The lack of documentation that the | |
2482 | functions accepted a NULL C<sv> was corrected in 5.11.0 and between 5.11.0 | |
2483 | and 5.19.5 the functions were marked NULLOK. As an optimization the NULLOK code | |
2484 | has now been removed, and the functions became non-NULL marked again, because | |
2485 | core getter-type macros never pass NULL to these functions and would crash | |
2486 | before ever passing NULL. | |
2487 | ||
2488 | The only way a NULL C<sv> can be passed to sv_2*v* functions is if XS code | |
2489 | directly calls sv_2*v*. This is unlikely as XS code uses Sv*V* macros to get | |
2490 | the underlying value out of the SV. One possible situation which leads to | |
2491 | a NULL C<sv> being passed to sv_2*v* functions, is if XS code defines its own | |
2492 | getter type Sv*V* macros, which check for NULL B<before> dereferencing and | |
2493 | checking the SV's flags through public API Sv*OK* macros or directly using | |
2494 | private API C<SvFLAGS>, and if C<sv> is NULL, then calling the sv_2*v functions | |
2495 | with a NULL litteral or passing the C<sv> containing a NULL value. | |
2496 | ||
2497 | =item * | |
2498 | ||
2499 | newATTRSUB is now a macro | |
2500 | ||
2501 | The public API newATTRSUB was previously a macro to the private | |
2502 | function Perl_newATTRSUB. Function Perl_newATTRSUB has been removed. newATTRSUB | |
2503 | is now macro to a different internal function. | |
2504 | ||
2505 | =item * | |
2506 | ||
2507 | Changes in warnings raised by C<utf8n_to_uvchr()> | |
2508 | ||
2509 | This bottom level function decodes the first character of a UTF-8 string | |
2510 | into a code point. It is accessible to C<XS> level code, but it's | |
2511 | discouraged from using it directly. There are higher level functions | |
2512 | that call this that should be used instead, such as | |
2513 | L<perlapi/utf8_to_uvchr_buf>. For completeness though, this documents | |
2514 | some changes to it. Now, tests for malformations are done before any | |
2515 | tests for other potential issues. One of those issues involves code | |
2516 | points so large that they have never appeared in any official standard | |
2517 | (the current standard has scaled back the highest acceptable code point | |
2518 | from earlier versions). It is possible (though not done in CPAN) to | |
2519 | warn and/or forbid these code points, while accepting smaller code | |
2520 | points that are still above the legal Unicode maximum. The warning | |
2521 | message for this now includes the code point if representable on the | |
2522 | machine. Previously it always displayed raw bytes, which is what it | |
2523 | still does for non-representable code points. | |
2524 | ||
2525 | =item * | |
2526 | ||
2527 | Regexp engine changes that affect the pluggable regex engine interface | |
2528 | ||
2529 | Many flags that used to be exposed via regexp.h and used to populate the | |
2530 | extflags member of struct regexp have been removed. These fields were | |
2531 | technically private to Perl's own regexp engine and should not have been | |
2532 | exposed there in the first place. | |
2533 | ||
2534 | The affected flags are: | |
2535 | ||
2536 | RXf_NOSCAN | |
2537 | RXf_CANY_SEEN | |
2538 | RXf_GPOS_SEEN | |
2539 | RXf_GPOS_FLOAT | |
2540 | RXf_ANCH_BOL | |
2541 | RXf_ANCH_MBOL | |
2542 | RXf_ANCH_SBOL | |
2543 | RXf_ANCH_GPOS | |
2544 | ||
2545 | As well as the follow flag masks: | |
2546 | ||
2547 | RXf_ANCH_SINGLE | |
2548 | RXf_ANCH | |
2549 | ||
2550 | All have been renamed to PREGf_ equivalents and moved to regcomp.h. | |
2551 | ||
2552 | The behavior previously achieved by setting one or more of the RXf_ANCH_ | |
2553 | flags (via the RXf_ANCH mask) have now been replaced by a *single* flag bit | |
2554 | in extflags: | |
2555 | ||
2556 | RXf_IS_ANCHORED | |
2557 | ||
2558 | pluggable regex engines which previously used to set these flags should | |
2559 | now set this flag ALONE. | |
2560 | ||
2561 | =item * | |
2562 | ||
2563 | The Perl core now consistently uses C<av_tindex()> ("the top index of an | |
2564 | array") as a more clearly-named synonym for C<av_len()>. | |
2565 | ||
2566 | =item * | |
2567 | ||
2568 | The obscure interpreter variable C<PL_timesbuf> is expected to be removed | |
2569 | early in the 5.21.x development series, so that Perl 5.22.0 will not provide | |
2570 | it to XS authors. While the variable still exists in 5.20.0, we hope that | |
2571 | this advance warning of the deprecation will help anyone who is using that | |
2572 | variable. | |
2573 | ||
2574 | =back | |
2575 | ||
2576 | =head1 Selected Bug Fixes | |
2577 | ||
2578 | =head2 Regular Expressions | |
2579 | ||
2580 | =over 4 | |
2581 | ||
2582 | =item * | |
2583 | ||
2584 | Fixed a small number of regexp constructions that could either fail to | |
2585 | match or crash perl when the string being matched against was | |
2586 | allocated above the 2GB line on 32-bit systems. [RT #118175] | |
2587 | ||
2588 | =item * | |
2589 | ||
2590 | Various memory leaks involving the parsing of the C<(?[...])> regular | |
2591 | expression construct have been fixed. | |
2592 | ||
2593 | =item * | |
2594 | ||
2595 | C<(?[...])> now allows interpolation of precompiled patterns consisting of | |
2596 | C<(?[...])> with bracketed character classes inside (C<$pat = | |
2597 | S<qr/(?[ [a] ])/;> S</(?[ $pat ])/>>). Formerly, the brackets would | |
2598 | confuse the regular expression parser. | |
2599 | ||
2600 | =item * | |
2601 | ||
2602 | The "Quantifier unexpected on zero-length expression" warning message could | |
2603 | appear twice starting in Perl v5.10 for a regular expression also | |
2604 | containing alternations (e.g., "a|b") triggering the trie optimisation. | |
2605 | ||
2606 | =item * | |
2607 | ||
2608 | Perl v5.18 inadvertently introduced a bug whereby interpolating mixed up- | |
2609 | and down-graded UTF-8 strings in a regex could result in malformed UTF-8 | |
2610 | in the pattern: specifically if a downgraded character in the range | |
2611 | C<\x80..\xff> followed a UTF-8 string, e.g. | |
2612 | ||
2613 | utf8::upgrade( my $u = "\x{e5}"); | |
2614 | utf8::downgrade(my $d = "\x{e5}"); | |
2615 | /$u$d/ | |
2616 | ||
2617 | [RT #118297] | |
2618 | ||
2619 | =item * | |
2620 | ||
2621 | In regular expressions containing multiple code blocks, the values of | |
2622 | C<$1>, C<$2>, etc., set by nested regular expression calls would leak from | |
2623 | one block to the next. Now these variables always refer to the outer | |
2624 | regular expression at the start of an embedded block [perl #117917]. | |
2625 | ||
2626 | =item * | |
2627 | ||
2628 | C</$qr/p> was broken in Perl 5.18.0; the C</p> flag was ignored. This has been | |
2629 | fixed. [perl #118213] | |
2630 | ||
2631 | =item * | |
2632 | ||
2633 | Starting in Perl 5.18.0, a construct like C</[#](?{})/x> would have its C<#> | |
2634 | incorrectly interpreted as a comment. The code block would be skipped, | |
2635 | unparsed. This has been corrected. | |
2636 | ||
2637 | =item * | |
2638 | ||
2639 | Starting in Perl 5.001, a regular expression like C</[#$a]/x> or C</[#]$a/x> | |
2640 | would have its C<#> incorrectly interpreted as a comment, so the variable would | |
2641 | not interpolate. This has been corrected. [perl #45667] | |
2642 | ||
2643 | =item * | |
2644 | ||
2645 | Perl 5.18.0 inadvertently made dereferenced regular expressions | |
2646 | S<(C<${ qr// }>)> false as booleans. This has been fixed. | |
2647 | ||
2648 | =item * | |
2649 | ||
2650 | The use of C<\G> in regular expressions, where it's not at the start of the | |
2651 | pattern, is now slightly less buggy (although it is still somewhat | |
2652 | problematic). | |
2653 | ||
2654 | =item * | |
2655 | ||
2656 | Where a regular expression included code blocks (C</(?{...})/>), and where the | |
2657 | use of constant overloading triggered a re-compilation of the code block, the | |
2658 | second compilation didn't see its outer lexical scope. This was a regression | |
2659 | in Perl 5.18.0. | |
2660 | ||
2661 | =item * | |
2662 | ||
2663 | The string position set by C<pos> could shift if the string changed | |
2664 | representation internally to or from utf8. This could happen, e.g., with | |
2665 | references to objects with string overloading. | |
2666 | ||
2667 | =item * | |
2668 | ||
2669 | Taking references to the return values of two C<pos> calls with the same | |
2670 | argument, and then assigning a reference to one and C<undef> to the other, | |
2671 | could result in assertion failures or memory leaks. | |
2672 | ||
2673 | =item * | |
2674 | ||
2675 | Elements of @- and @+ now update correctly when they refer to non-existent | |
2676 | captures. Previously, a referenced element (C<$ref = \$-[1]>) could refer to | |
2677 | the wrong match after subsequent matches. | |
2678 | ||
2679 | =item * | |
2680 | ||
2681 | The code that parses regex backrefs (or ambiguous backref/octals) such as \123 | |
2682 | did a simple atoi(), which could wrap round to negative values on long digit | |
2683 | strings and cause segmentation faults. This has now been fixed. [perl | |
2684 | #119505] | |
2685 | ||
2686 | =item * | |
2687 | ||
2688 | Assigning another typeglob to C<*^R> no longer makes the regular expression | |
2689 | engine crash. | |
2690 | ||
2691 | =item * | |
2692 | ||
2693 | The C<\N> regular expression escape, when used without the curly braces (to | |
2694 | mean C<[^\n]>), was ignoring a following C<*> if followed by whitespace | |
2695 | under /x. It had been this way since C<\N> to mean C<[^\n]> was introduced | |
2696 | in 5.12.0. | |
2697 | ||
2698 | =item * | |
2699 | ||
2700 | C<s///>, C<tr///> and C<y///> now work when a wide character is used as the | |
2701 | delimiter. [perl #120463] | |
2702 | ||
2703 | =item * | |
2704 | ||
2705 | Some cases of unterminated (?...) sequences in regular expressions (e.g., | |
2706 | C</(?</>) have been fixed to produce the proper error message instead of | |
2707 | "panic: memory wrap". Other cases (e.g., C</(?(/>) have yet to be fixed. | |
2708 | ||
2709 | =item * | |
2710 | ||
2711 | When a reference to a reference to an overloaded object was returned from | |
2712 | a regular expression C<(??{...})> code block, an incorrect implicit | |
2713 | dereference could take place if the inner reference had been returned by | |
2714 | a code block previously. | |
2715 | ||
2716 | =item * | |
2717 | ||
2718 | A tied variable returned from C<(??{...})> sees the inner values of match | |
2719 | variables (i.e., the $1 etc. from any matches inside the block) in its | |
2720 | FETCH method. This was not the case if a reference to an overloaded object | |
2721 | was the last thing assigned to the tied variable. Instead, the match | |
2722 | variables referred to the outer pattern during the FETCH call. | |
2723 | ||
2724 | =item * | |
2725 | ||
2726 | Fix unexpected tainting via regexp using locale. Previously, under certain | |
2727 | conditions, the use of character classes could cause tainting when it | |
2728 | shouldn't. Some character classes are locale-dependent, but before this | |
2729 | patch, sometimes tainting was happening even for character classes that | |
2730 | don't depend on the locale. [perl #120675] | |
2731 | ||
2732 | =item * | |
2733 | ||
2734 | Under certain conditions, Perl would throw an error if in an lookbehind | |
2735 | assertion in a regexp, the assertion referred to a named subpattern, | |
2736 | complaining the lookbehind was variable when it wasn't. This has been | |
2737 | fixed. [perl #120600], [perl #120618]. The current fix may be improved | |
2738 | on in the future. | |
2739 | ||
2740 | =item * | |
2741 | ||
2742 | C<$^R> wasn't available outside of the regular expression that | |
2743 | initialized it. [perl #121070] | |
2744 | ||
2745 | =item * | |
2746 | ||
2747 | A large set of fixes and refactoring for re_intuit_start() was merged, | |
2748 | the highlights are: | |
2749 | ||
2750 | =over | |
2751 | ||
2752 | =item * | |
2753 | ||
2754 | Fixed a panic when compiling the regular expression | |
2755 | C</\x{100}[xy]\x{100}{2}/>. | |
2756 | ||
2757 | =item * | |
2758 | ||
2759 | Fixed a performance regression when performing a global pattern match | |
2760 | against a UTF-8 string. [perl #120692] | |
2761 | ||
2762 | =item * | |
2763 | ||
2764 | Fixed another performance issue where matching a regular expression | |
2765 | like C</ab.{1,2}x/> against a long UTF-8 string would unnecessarily | |
2766 | calculate byte offsets for a large portion of the string. [perl | |
2767 | #120692] | |
2768 | ||
2769 | =back | |
2770 | ||
2771 | =item * | |
2772 | ||
2773 | Fixed an alignment error when compiling regular expressions when built | |
2774 | with GCC on HP-UX 64-bit. | |
2775 | ||
2776 | =item * | |
2777 | ||
2778 | On 64-bit platforms C<pos> can now be set to a value higher than 2**31-1. | |
2779 | [perl #72766] | |
2780 | ||
2781 | =back | |
2782 | ||
2783 | =head2 Perl 5 Debugger and -d | |
2784 | ||
2785 | =over 4 | |
2786 | ||
2787 | =item * | |
2788 | ||
2789 | The debugger's C<man> command been fixed. It was broken in the v5.18.0 | |
2790 | release. The C<man> command is aliased to the names C<doc> and C<perldoc> - | |
2791 | all now work again. | |
2792 | ||
2793 | =item * | |
2794 | ||
2795 | C<@_> is now correctly visible in the debugger, fixing a regression | |
2796 | introduced in v5.18.0's debugger. [RT #118169] | |
2797 | ||
2798 | =item * | |
2799 | ||
2800 | Under copy-on-write builds (the default as of 5.20.0) C<< ${'_<-e'}[0] >> | |
2801 | no longer gets mangled. This is the first line of input saved for the | |
2802 | debugger's use for one-liners [perl #118627]. | |
2803 | ||
2804 | =item * | |
2805 | ||
2806 | On non-threaded builds, setting C<${"_E<lt>filename"}> to a reference or | |
2807 | typeglob no longer causes C<__FILE__> and some error messages to produce a | |
2808 | corrupt string, and no longer prevents C<#line> directives in string evals from | |
2809 | providing the source lines to the debugger. Threaded builds were unaffected. | |
2810 | ||
2811 | =item * | |
2812 | ||
2813 | Starting with Perl 5.12, line numbers were off by one if the B<-d> switch was | |
2814 | used on the #! line. Now they are correct. | |
2815 | ||
2816 | =item * | |
2817 | ||
2818 | C<*DB::DB = sub {} if 0> no longer stops Perl's debugging mode from finding | |
2819 | C<DB::DB> subs declared thereafter. | |
2820 | ||
2821 | =item * | |
2822 | ||
2823 | C<%{'_<...'}> hashes now set breakpoints on the corresponding C<@{'_<...'}> | |
2824 | rather than whichever array C<@DB::dbline> is aliased to. [perl #119799] | |
2825 | ||
2826 | =item * | |
2827 | ||
2828 | Call set-magic when setting $DB::sub. [perl #121255] | |
2829 | ||
2830 | =item * | |
2831 | ||
2832 | The debugger's "n" command now respects lvalue subroutines and steps over | |
2833 | them [perl #118839]. | |
2834 | ||
2835 | =back | |
2836 | ||
2837 | =head2 Lexical Subroutines | |
2838 | ||
2839 | =over 4 | |
2840 | ||
2841 | =item * | |
2842 | ||
2843 | Lexical constants (C<my sub a() { 42 }>) no longer crash when inlined. | |
2844 | ||
2845 | =item * | |
2846 | ||
2847 | Parameter prototypes attached to lexical subroutines are now respected when | |
2848 | compiling sub calls without parentheses. Previously, the prototypes were | |
2849 | honoured only for calls I<with> parentheses. [RT #116735] | |
2850 | ||
2851 | =item * | |
2852 | ||
2853 | Syntax errors in lexical subroutines in combination with calls to the same | |
2854 | subroutines no longer cause crashes at compile time. | |
2855 | ||
2856 | =item * | |
2857 | ||
2858 | Deep recursion warnings no longer crash lexical subroutines. [RT #118521] | |
2859 | ||
2860 | =item * | |
2861 | ||
2862 | The dtrace sub-entry probe now works with lexical subs, instead of | |
2863 | crashing [perl #118305]. | |
2864 | ||
2865 | =item * | |
2866 | ||
2867 | Undefining an inlinable lexical subroutine (C<my sub foo() { 42 } undef | |
2868 | &foo>) would result in a crash if warnings were turned on. | |
2869 | ||
2870 | =item * | |
2871 | ||
2872 | An undefined lexical sub used as an inherited method no longer crashes. | |
2873 | ||
2874 | =item * | |
2875 | ||
2876 | The presence of a lexical sub named "CORE" no longer stops the CORE:: | |
2877 | prefix from working. | |
2878 | ||
2879 | =back | |
2880 | ||
2881 | =head2 Everything Else | |
2882 | ||
2883 | =over 4 | |
2884 | ||
2885 | =item * | |
2886 | ||
2887 | The OP allocation code now returns correctly aligned memory in all cases | |
2888 | for C<struct pmop>. Previously it could return memory only aligned to a | |
2889 | 4-byte boundary, which is not correct for an ithreads build with 64 bit IVs | |
2890 | on some 32 bit platforms. Notably, this caused the build to fail completely | |
2891 | on sparc GNU/Linux. [RT #118055] | |
2892 | ||
2893 | =item * | |
2894 | ||
2895 | Evaluating large hashes in scalar context is now much faster, as the number | |
2896 | of used chains in the hash is now cached for larger hashes. Smaller hashes | |
2897 | continue not to store it and calculate it when needed, as this saves one IV. | |
2898 | That would be 1 IV overhead for every object built from a hash. [RT #114576] | |
2899 | ||
2900 | =item * | |
2901 | ||
2902 | Perl v5.16 inadvertently introduced a bug whereby calls to XSUBs that were | |
2903 | not visible at compile time were treated as lvalues and could be assigned | |
2904 | to, even when the subroutine was not an lvalue sub. This has been fixed. | |
2905 | [RT #117947] | |
2906 | ||
2907 | =item * | |
2908 | ||
2909 | In Perl v5.18.0 dualvars that had an empty string for the string part but a | |
2910 | non-zero number for the number part starting being treated as true. In | |
2911 | previous versions they were treated as false, the string representation | |
2912 | taking precedeence. The old behaviour has been restored. [RT #118159] | |
2913 | ||
2914 | =item * | |
2915 | ||
2916 | Since Perl v5.12, inlining of constants that override built-in keywords of | |
2917 | the same name had countermanded C<use subs>, causing subsequent mentions of | |
2918 | the constant to use the built-in keyword instead. This has been fixed. | |
2919 | ||
2920 | =item * | |
2921 | ||
2922 | The warning produced by C<-l $handle> now applies to IO refs and globs, not | |
2923 | just to glob refs. That warning is also now UTF8-clean. [RT #117595] | |
2924 | ||
2925 | =item * | |
2926 | ||
2927 | C<delete local $ENV{nonexistent_env_var}> no longer leaks memory. | |
2928 | ||
2929 | =item * | |
2930 | ||
2931 | C<sort> and C<require> followed by a keyword prefixed with C<CORE::> now | |
2932 | treat it as a keyword, and not as a subroutine or module name. [RT #24482] | |
2933 | ||
2934 | =item * | |
2935 | ||
2936 | Through certain conundrums, it is possible to cause the current package to | |
2937 | be freed. Certain operators (C<bless>, C<reset>, C<open>, C<eval>) could | |
2938 | not cope and would crash. They have been made more resilient. [RT #117941] | |
2939 | ||
2940 | =item * | |
2941 | ||
2942 | Aliasing filehandles through glob-to-glob assignment would not update | |
2943 | internal method caches properly if a package of the same name as the | |
2944 | filehandle existed, resulting in filehandle method calls going to the | |
2945 | package instead. This has been fixed. | |
2946 | ||
2947 | =item * | |
2948 | ||
2949 | C<./Configure -de -Dusevendorprefix> didn't default. [RT #64126] | |
2950 | ||
2951 | =item * | |
2952 | ||
2953 | The C<Statement unlikely to be reached> warning was listed in | |
2954 | L<perldiag> as an C<exec>-category warning, but was enabled and disabled | |
2955 | by the C<syntax> category. On the other hand, the C<exec> category | |
2956 | controlled its fatal-ness. It is now entirely handled by the C<exec> | |
2957 | category. | |
2958 | ||
2959 | =item * | |
2960 | ||
2961 | The "Replacement list is longer that search list" warning for C<tr///> and | |
2962 | C<y///> no longer occurs in the presence of the C</c> flag. [RT #118047] | |
2963 | ||
2964 | =item * | |
2965 | ||
2966 | Stringification of NVs are not cached so that the lexical locale controls | |
2967 | stringification of the decimal point. [perl #108378] [perl #115800] | |
2968 | ||
2969 | =item * | |
2970 | ||
2971 | There have been several fixes related to Perl's handling of locales. perl | |
2972 | #38193 was described above in L</Internal Changes>. | |
2973 | Also fixed is | |
2974 | #118197, where the radix (decimal point) character had to be an ASCII | |
2975 | character (which doesn't work for some non-Western languages); | |
2976 | and #115808, in which C<POSIX::setlocale()> on failure returned an | |
2977 | C<undef> which didn't warn about not being defined even if those | |
2978 | warnings were enabled. | |
2979 | ||
2980 | =item * | |
2981 | ||
2982 | Compiling a C<split> operator whose third argument is a named constant | |
2983 | evaulating to 0 no longer causes the constant's value to change. | |
2984 | ||
2985 | =item * | |
2986 | ||
2987 | A named constant used as the second argument to C<index> no longer gets | |
2988 | coerced to a string if it is a reference, regular expression, dualvar, etc. | |
2989 | ||
2990 | =item * | |
2991 | ||
2992 | A named constant evaluating to the undefined value used as the second | |
2993 | argument to C<index> no longer produces "uninitialized" warnings at compile | |
2994 | time. It will still produce them at run time. | |
2995 | ||
2996 | =item * | |
2997 | ||
2998 | When a scalar was returned from a subroutine in @INC, the referenced scalar | |
2999 | was magically converted into an IO thingy, possibly resulting in "Bizarre | |
3000 | copy" errors if that scalar continued to be used elsewhere. Now Perl uses | |
3001 | an internal copy of the scalar instead. | |
3002 | ||
3003 | =item * | |
3004 | ||
3005 | Certain uses of the C<sort> operator are optimised to modify an array in | |
3006 | place, such as C<@a = sort @a>. During the sorting, the array is made | |
3007 | read-only. If a sort block should happen to die, then the array remained | |
3008 | read-only even outside the C<sort>. This has been fixed. | |
3009 | ||
3010 | =item * | |
3011 | ||
3012 | C<$a> and C<$b> inside a sort block are aliased to the actual arguments to | |
3013 | C<sort>, so they can be modified through those two variables. This did not | |
3014 | always work, e.g., for lvalue subs and C<$#ary>, and probably many other | |
3015 | operators. It works now. | |
3016 | ||
3017 | =item * | |
3018 | ||
3019 | The arguments to C<sort> are now all in list context. If the C<sort> | |
3020 | itself were called in void or scalar context, then I<some>, but not all, of | |
3021 | the arguments used to be in void or scalar context. | |
3022 | ||
3023 | =item * | |
3024 | ||
3025 | Subroutine prototypes with Unicode characters above U+00FF were getting | |
3026 | mangled during closure cloning. This would happen with subroutines closing | |
3027 | over lexical variables declared outside, and with lexical subs. | |
3028 | ||
3029 | =item * | |
3030 | ||
3031 | C<UNIVERSAL::can> now treats its first argument the same way that method | |
3032 | calls do: Typeglobs and glob references with non-empty IO slots are treated | |
3033 | as handles, and strings are treated as filehandles, rather than packages, | |
3034 | if a handle with that name exists [perl #113932]. | |
3035 | ||
3036 | =item * | |
3037 | ||
3038 | Method calls on typeglobs (e.g., C<< *ARGV->getline >>) used to stringify | |
3039 | the typeglob and then look it up again. Combined with changes in Perl | |
3040 | 5.18.0, this allowed C<< *foo->bar >> to call methods on the "foo" package | |
3041 | (like C<< foo->bar >>). In some cases it could cause the method to be | |
3042 | called on the wrong handle. Now a typeglob argument is treated as a | |
3043 | handle (just like C<< (\*foo)->bar >>), or, if its IO slot is empty, an | |
3044 | error is raised. | |
3045 | ||
3046 | =item * | |
3047 | ||
3048 | Assigning a vstring to a tied variable or to a subroutine argument aliased | |
3049 | to a nonexistent hash or array element now works, without flattening the | |
3050 | vstring into a regular string. | |
3051 | ||
3052 | =item * | |
3053 | ||
3054 | C<pos>, C<tie>, C<tied> and C<untie> did not work | |
3055 | properly on subroutine arguments aliased to nonexistent | |
3056 | hash and array elements [perl #77814, #27010]. | |
3057 | ||
3058 | =item * | |
3059 | ||
3060 | The C<< => >> fat arrow operator can now quote built-in keywords even if it | |
3061 | occurs on the next line, making it consistent with how it treats other | |
3062 | barewords. | |
3063 | ||
3064 | =item * | |
3065 | ||
3066 | Autovivifying a subroutine stub via C<\&$glob> started causing crashes in Perl | |
3067 | 5.18.0 if the $glob was merely a copy of a real glob, i.e., a scalar that had | |
3068 | had a glob assigned to it. This has been fixed. [perl #119051] | |
3069 | ||
3070 | =item * | |
3071 | ||
3072 | Perl used to leak an implementation detail when it came to referencing the | |
3073 | return values of certain operators. C<for ($a+$b) { warn \$_; warn \$_ }> used | |
3074 | to display two different memory addresses, because the C<\> operator was | |
3075 | copying the variable. Under threaded builds, it would also happen for | |
3076 | constants (C<for(1) { ... }>). This has been fixed. [perl #21979, #78194, | |
3077 | #89188, #109746, #114838, #115388] | |
3078 | ||
3079 | =item * | |
3080 | ||
3081 | The range operator C<..> was returning the same modifiable scalars with each | |
3082 | call, unless it was the only thing in a C<foreach> loop header. This meant | |
3083 | that changes to values within the list returned would be visible the next time | |
3084 | the operator was executed. [perl #3105] | |
3085 | ||
3086 | =item * | |
3087 | ||
3088 | Constant folding and subroutine inlining no longer cause operations that would | |
3089 | normally return new modifiable scalars to return read-only values instead. | |
3090 | ||
3091 | =item * | |
3092 | ||
3093 | Closures of the form C<sub () { $some_variable }> are no longer inlined, | |
3094 | causing changes to the variable to be ignored by callers of the subroutine. | |
3095 | [perl #79908] | |
3096 | ||
3097 | =item * | |
3098 | ||
3099 | Return values of certain operators such as C<ref> would sometimes be shared | |
3100 | between recursive calls to the same subroutine, causing the inner call to | |
3101 | modify the value returned by C<ref> in the outer call. This has been fixed. | |
3102 | ||
3103 | =item * | |
3104 | ||
3105 | C<__PACKAGE__> and constants returning a package name or hash key are now | |
3106 | consistently read-only. In various previous Perl releases, they have become | |
3107 | mutable under certain circumstances. | |
3108 | ||
3109 | =item * | |
3110 | ||
3111 | Enabling "used once" warnings no longer causes crashes on stash circularities | |
3112 | created at compile time (C<*Foo::Bar::Foo:: = *Foo::>). | |
3113 | ||
3114 | =item * | |
3115 | ||
3116 | Undef constants used in hash keys (C<use constant u =E<gt> undef; $h{+u}>) no | |
3117 | longer produce "uninitialized" warnings at compile time. | |
3118 | ||
3119 | =item * | |
3120 | ||
3121 | Modifying a substitution target inside the substitution replacement no longer | |
3122 | causes crashes. | |
3123 | ||
3124 | =item * | |
3125 | ||
3126 | The first statement inside a string eval used to use the wrong pragma setting | |
3127 | sometimes during constant folding. C<eval 'uc chr 0xe0'> would randomly choose | |
3128 | between Unicode, byte, and locale semantics. This has been fixed. | |
3129 | ||
3130 | =item * | |
3131 | ||
3132 | The handling of return values of @INC filters (subroutines returned by | |
3133 | subroutines in @INC) has been fixed in various ways. Previously tied variables | |
3134 | were mishandled, and setting $_ to a reference or typeglob could result in | |
3135 | crashes. | |
3136 | ||
3137 | =item * | |
3138 | ||
3139 | The C<SvPVbyte> XS function has been fixed to work with tied scalars returning | |
3140 | something other than a string. It used to return utf8 in those cases where | |
3141 | C<SvPV> would. | |
3142 | ||
3143 | =item * | |
3144 | ||
3145 | Perl 5.18.0 inadvertently made C<--> and C<++> crash on dereferenced regular | |
3146 | expressions, and stopped C<++> from flattening vstrings. | |
3147 | ||
3148 | =item * | |
3149 | ||
3150 | C<bless> no longer dies with "Can't bless non-reference value" if its first | |
3151 | argument is a tied reference. | |
3152 | ||
3153 | =item * | |
3154 | ||
3155 | C<reset> with an argument no longer skips copy-on-write scalars, regular | |
3156 | expressions, typeglob copies, and vstrings. Also, when encountering those or | |
3157 | read-only values, it no longer skips any array or hash with the same name. | |
3158 | ||
3159 | =item * | |
3160 | ||
3161 | C<reset> with an argument now skips scalars aliased to typeglobs | |
3162 | (C<for $z (*foo) { reset "z" }>). Previously it would corrupt memory or crash. | |
3163 | ||
3164 | =item * | |
3165 | ||
3166 | C<ucfirst> and C<lcfirst> were not respecting the bytes pragma. This was a | |
3167 | regression from Perl 5.12. [perl #117355] | |
3168 | ||
3169 | =item * | |
3170 | ||
3171 | Changes to C<UNIVERSAL::DESTROY> now update DESTROY caches in all classes, | |
3172 | instead of causing classes that have already had objects destroyed to continue | |
3173 | using the old sub. This was a regression in Perl 5.18. [perl #114864] | |
3174 | ||
3175 | =item * | |
3176 | ||
3177 | All known false-positive occurrences of the deprecation warning "Useless use of | |
3178 | '\'; doesn't escape metacharacter '%c'", added in Perl 5.18.0, have been | |
3179 | removed. [perl #119101] | |
3180 | ||
3181 | =item * | |
3182 | ||
3183 | The value of $^E is now saved across signal handlers on Windows. [perl #85104] | |
3184 | ||
3185 | =item * | |
3186 | ||
3187 | A lexical filehandle (as in C<open my $fh...>) is usually given a name based on | |
3188 | the current package and the name of the variable, e.g. "main::$fh". Under | |
3189 | recursion, the filehandle was losing the "$fh" part of the name. This has been | |
3190 | fixed. | |
3191 | ||
3192 | =item * | |
3193 | ||
3194 | Uninitialized values returned by XSUBs are no longer exempt from uninitialized | |
3195 | warnings. [perl #118693] | |
3196 | ||
3197 | =item * | |
3198 | ||
3199 | C<elsif ("")> no longer erroneously produces a warning about void context. | |
3200 | [perl #118753] | |
3201 | ||
3202 | =item * | |
3203 | ||
3204 | Passing C<undef> to a subroutine now causes @_ to contain the same read-only | |
3205 | undefined scalar that C<undef> returns. Furthermore, C<exists $_[0]> will now | |
3206 | return true if C<undef> was the first argument. [perl #7508, #109726] | |
3207 | ||
3208 | =item * | |
3209 | ||
3210 | Passing a non-existent array element to a subroutine does not usually | |
3211 | autovivify it unless the subroutine modifies its argument. This did not work | |
3212 | correctly with negative indices and with non-existent elements within the | |
3213 | array. The element would be vivified immediately. The delayed vivification | |
3214 | has been extended to work with those. [perl #118691] | |
3215 | ||
3216 | =item * | |
3217 | ||
3218 | Assigning references or globs to the scalar returned by $#foo after the @foo | |
3219 | array has been freed no longer causes assertion failures on debugging builds | |
3220 | and memory leaks on regular builds. | |
3221 | ||
3222 | =item * | |
3223 | ||
3224 | On 64-bit platforms, large ranges like 1..1000000000000 no longer crash, but | |
3225 | eat up all your memory instead. [perl #119161] | |
3226 | ||
3227 | =item * | |
3228 | ||
3229 | C<__DATA__> now puts the C<DATA> handle in the right package, even if the | |
3230 | current package has been renamed through glob assignment. | |
3231 | ||
3232 | =item * | |
3233 | ||
3234 | When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the scope, | |
3235 | it is possible for C<DESTROY> recursively to call a subroutine or format that | |
3236 | is currently being exited. It that case, sometimes the lexical variables | |
3237 | inside the sub would start out having values from the outer call, instead of | |
3238 | being undefined as they should. This has been fixed. [perl #119311] | |
3239 | ||
3240 | =item * | |
3241 | ||
3242 | ${^MPEN} is no longer treated as a synonym for ${^MATCH}. | |
3243 | ||
3244 | =item * | |
3245 | ||
3246 | Perl now tries a little harder to return the correct line number in | |
3247 | C<(caller)[2]>. [perl #115768] | |
3248 | ||
3249 | =item * | |
3250 | ||
3251 | Line numbers inside multiline quote-like operators are now reported correctly. | |
3252 | [perl #3643] | |
3253 | ||
3254 | =item * | |
3255 | ||
3256 | C<#line> directives inside code embedded in quote-like operators are now | |
3257 | respected. | |
3258 | ||
3259 | =item * | |
3260 | ||
3261 | Line numbers are now correct inside the second here-doc when two here-doc | |
3262 | markers occur on the same line. | |
3263 | ||
3264 | =item * | |
3265 | ||
3266 | An optimization in Perl 5.18 made incorrect assumptions causing a bad | |
3267 | interaction with the L<Devel::CallParser> CPAN module. If the module was | |
3268 | loaded then lexical variables declared in separate statements following a | |
3269 | C<my(...)> list might fail to be cleared on scope exit. | |
3270 | ||
3271 | =item * | |
3272 | ||
3273 | C<&xsub> and C<goto &xsub> calls now allow the called subroutine to autovivify | |
3274 | elements of @_. | |
3275 | ||
3276 | =item * | |
3277 | ||
3278 | C<&xsub> and C<goto &xsub> no longer crash if *_ has been undefined and has no | |
3279 | ARRAY entry (i.e. @_ does not exist). | |
3280 | ||
3281 | =item * | |
3282 | ||
3283 | C<&xsub> and C<goto &xsub> now work with tied @_. | |
3284 | ||
3285 | =item * | |
3286 | ||
3287 | Overlong identifiers no longer cause a buffer overflow (and a crash). They | |
3288 | started doing so in Perl 5.18. | |
3289 | ||
3290 | =item * | |
3291 | ||
3292 | The warning "Scalar value @hash{foo} better written as $hash{foo}" now produces | |
3293 | far fewer false positives. In particular, C<@hash{+function_returning_a_list}> | |
3294 | and C<@hash{ qw "foo bar baz" }> no longer warn. The same applies to array | |
3295 | slices. [perl #28380, #114024] | |
3296 | ||
3297 | =item * | |
3298 | ||
3299 | C<$! = EINVAL; waitpid(0, WNOHANG);> no longer goes into an internal infinite | |
3300 | loop. [perl #85228] | |
3301 | ||
3302 | =item * | |
3303 | ||
3304 | A possible segmentation fault in filehandle duplication has been fixed. | |
3305 | ||
3306 | =item * | |
3307 | ||
3308 | A subroutine in @INC can return a reference to a scalar containing the initial | |
3309 | contents of the file. However, that scalar was freed prematurely if not | |
3310 | referenced elsewhere, giving random results. | |
3311 | ||
3312 | =item * | |
3313 | ||
3314 | C<last> no longer returns values that the same statement has accumulated so | |
3315 | far, fixing amongst other things the long-standing bug that C<push @a, last> | |
3316 | would try to return the @a, copying it like a scalar in the process and | |
3317 | resulting in the error, "Bizarre copy of ARRAY in last." [perl #3112] | |
3318 | ||
3319 | =item * | |
3320 | ||
3321 | In some cases, closing file handles opened to pipe to or from a process, which | |
3322 | had been duplicated into a standard handle, would call perl's internal waitpid | |
3323 | wrapper with a pid of zero. With the fix for [perl #85228] this zero pid was | |
3324 | passed to C<waitpid>, possibly blocking the process. This wait for process | |
3325 | zero no longer occurs. [perl #119893] | |
3326 | ||
3327 | =item * | |
3328 | ||
3329 | C<select> used to ignore magic on the fourth (timeout) argument, leading to | |
3330 | effects such as C<select> blocking indefinitely rather than the expected sleep | |
3331 | time. This has now been fixed. [perl #120102] | |
3332 | ||
3333 | =item * | |
3334 | ||
3335 | The class name in C<for my class $foo> is now parsed correctly. In the case of | |
3336 | the second character of the class name being followed by a digit (e.g. 'a1b') | |
3337 | this used to give the error "Missing $ on loop variable". [perl #120112] | |
3338 | ||
3339 | =item * | |
3340 | ||
3341 | Perl 5.18.0 accidentally disallowed C<-bareword> under C<use strict> and | |
3342 | C<use integer>. This has been fixed. [perl #120288] | |
3343 | ||
3344 | =item * | |
3345 | ||
3346 | C<-a> at the start of a line (or a hyphen with any single letter that is | |
3347 | not a filetest operator) no longer produces an erroneous 'Use of "-a" | |
3348 | without parentheses is ambiguous' warning. [perl #120288] | |
3349 | ||
3350 | =item * | |
3351 | ||
3352 | Lvalue context is now properly propagated into bare blocks and C<if> and | |
3353 | C<else> blocks in lvalue subroutines. Previously, arrays and hashes would | |
3354 | sometimes incorrectly be flattened when returned in lvalue list context, or | |
3355 | "Bizarre copy" errors could occur. [perl #119797] | |
3356 | ||
3357 | =item * | |
3358 | ||
3359 | Lvalue context is now propagated to the branches of C<||> and C<&&> (and | |
3360 | their alphabetic equivalents, C<or> and C<and>). This means | |
3361 | C<foreach (pos $x || pos $y) {...}> now allows C<pos> to be modified | |
3362 | through $_. | |
3363 | ||
3364 | =item * | |
3365 | ||
3366 | C<stat> and C<readline> remember the last handle used; the former | |
3367 | for the special C<_> filehandle, the latter for C<${^LAST_FH}>. | |
3368 | C<eval "*foo if 0"> where *foo was the last handle passed to C<stat> | |
3369 | or C<readline> could cause that handle to be forgotten if the | |
3370 | handle were not opened yet. This has been fixed. | |
3371 | ||
3372 | =item * | |
3373 | ||
3374 | Various cases of C<delete $::{a}>, C<delete $::{ENV}> etc. causing a crash | |
3375 | have been fixed. [perl #54044] | |
3376 | ||
3377 | =item * | |
3378 | ||
3379 | Setting C<$!> to EACCESS before calling C<require> could affect | |
3380 | C<require>'s behaviour. This has been fixed. | |
3381 | ||
3382 | =item * | |
3383 | ||
3384 | The "Can't use \1 to mean $1 in expression" warning message now only occurs | |
3385 | on the right-hand (replacement) part of a substitution. Formerly it could | |
3386 | happen in code embedded in the left-hand side, or in any other quote-like | |
3387 | operator. | |
3388 | ||
3389 | =item * | |
3390 | ||
3391 | Blessing into a reference (C<bless $thisref, $thatref>) has long been | |
3392 | disallowed, but magical scalars for the second like C<$/> and those tied | |
3393 | were exempt. They no longer are. [perl #119809] | |
3394 | ||
3395 | =item * | |
3396 | ||
3397 | Blessing into a reference was accidentally allowed in 5.18 if the class | |
3398 | argument were a blessed reference with stale method caches (i.e., whose | |
3399 | class had had subs defined since the last method call). They are | |
3400 | disallowed once more, as in 5.16. | |
3401 | ||
3402 | =item * | |
3403 | ||
3404 | C<< $x->{key} >> where $x was declared as C<my Class $x> no longer crashes | |
3405 | if a Class::FIELDS subroutine stub has been declared. | |
3406 | ||
3407 | =item * | |
3408 | ||
3409 | C<@$obj{'key'}> and C<${$obj}{key}> used to be exempt from compile-time | |
3410 | field checking ("No such class field"; see L<fields>) but no longer are. | |
3411 | ||
3412 | =item * | |
3413 | ||
3414 | A nonexistent array element with a large index passed to a subroutine that | |
3415 | ties the array and then tries to access the element no longer results in a | |
3416 | crash. | |
3417 | ||
3418 | =item * | |
3419 | ||
3420 | Declaring a subroutine stub named NEGATIVE_INDICES no longer makes negative | |
3421 | array indices crash when the current package is a tied array class. | |
3422 | ||
3423 | =item * | |
3424 | ||
3425 | Declaring a C<require>, C<glob>, or C<do> subroutine stub in the | |
3426 | CORE::GLOBAL:: package no longer makes compilation of calls to the | |
3427 | corresponding functions crash. | |
3428 | ||
3429 | =item * | |
3430 | ||
3431 | Aliasing CORE::GLOBAL:: functions to constants stopped working in Perl 5.10 | |
3432 | but has now been fixed. | |
3433 | ||
3434 | =item * | |
3435 | ||
3436 | When C<`...`> or C<qx/.../> calls a C<readpipe> override, double-quotish | |
3437 | interpolation now happens, as is the case when there is no override. | |
3438 | Previously, the presence of an override would make these quote-like | |
3439 | operators act like C<q{}>, suppressing interpolation. [perl #115330] | |
3440 | ||
3441 | =item * | |
3442 | ||
3443 | C<<<<`...`> here-docs (with backticks as the delimiters) now call | |
3444 | C<readpipe> overrides. [perl #119827] | |
3445 | ||
3446 | =item * | |
3447 | ||
3448 | C<&CORE::exit()> and C<&CORE::die()> now respect L<vmsish> hints. | |
3449 | ||
3450 | =item * | |
3451 | ||
3452 | Undefining a glob that triggers a DESTROY method that undefines the same | |
3453 | glob is now safe. It used to produce "Attempt to free unreferenced glob | |
3454 | pointer" warnings and leak memory. | |
3455 | ||
3456 | =item * | |
3457 | ||
3458 | If subroutine redefinition (C<eval 'sub foo{}'> or C<newXS> for XS code) | |
3459 | triggers a DESTROY method on the sub that is being redefined, and that | |
3460 | method assigns a subroutine to the same slot (C<*foo = sub {}>), C<$_[0]> | |
3461 | is no longer left pointing to a freed scalar. Now DESTROY is delayed until | |
3462 | the new subroutine has been installed. | |
3463 | ||
3464 | =item * | |
3465 | ||
3466 | On Windows, perl no longer calls CloseHandle() on a socket handle. This makes | |
3467 | debugging easier on Windows by removing certain irrelevant bad handle | |
3468 | exceptions. It also fixes a race condition that made socket functions randomly | |
3469 | fail in a Perl process with multiple OS threads, and possible test failures in | |
3470 | F<dist/IO/t/cachepropagate-tcp.t>. [perl #120091/118059] | |
3471 | ||
3472 | =item * | |
3473 | ||
90b0b922 KW |
3474 | Formats involving UTF-8 encoded strings, or strange vars like ties, |
3475 | overloads, or stringified refs (and in recent | |
c68523cb RS |
3476 | perls, pure NOK vars) would generally do the wrong thing in formats |
3477 | when the var is treated as a string and repeatedly chopped, as in | |
3478 | C<< ^<<<~~ >> and similar. This has now been resolved. | |
90b0b922 | 3479 | [perl #33832/45325/113868/119847/119849/119851] |
c68523cb RS |
3480 | |
3481 | =item * | |
3482 | ||
3483 | C<< semctl(..., SETVAL, ...) >> would set the semaphore to the top | |
3484 | 32-bits of the supplied integer instead of the bottom 32-bits on | |
3485 | 64-bit big-endian systems. [perl #120635] | |
3486 | ||
3487 | =item * | |
3488 | ||
3489 | C<< readdir() >> now only sets C<$!> on error. C<$!> is no longer set | |
3490 | to C<EBADF> when then terminating C<undef> is read from the directory | |
3491 | unless the system call sets C<$!>. [perl #118651] | |
3492 | ||
3493 | =item * | |
3494 | ||
3495 | C<&CORE::glob> no longer causes an intermittent crash due to perl's stack | |
3496 | getting corrupted. [perl #119993] | |
3497 | ||
3498 | =item * | |
3499 | ||
3500 | C<open> with layers that load modules (e.g., "<:encoding(utf8)") no longer | |
3501 | runs the risk of crashing due to stack corruption. | |
3502 | ||
3503 | =item * | |
3504 | ||
3505 | Perl 5.18 broke autoloading via C<< ->SUPER::foo >> method calls by looking | |
3506 | up AUTOLOAD from the current package rather than the current package's | |
3507 | superclass. This has been fixed. [perl #120694] | |
3508 | ||
3509 | =item * | |
3510 | ||
3511 | A longstanding bug causing C<do {} until CONSTANT>, where the constant | |
3512 | holds a true value, to read unallocated memory has been resolved. This | |
3513 | would usually happen after a syntax error. In past versions of Perl it has | |
3514 | crashed intermittently. [perl #72406] | |
3515 | ||
3516 | =item * | |
3517 | ||
3518 | Fix HP-UX C<$!> failure. HP-UX strerror() returns an empty string for an | |
3519 | unknown error code. This caused an assertion to fail under DEBUGGING | |
3520 | builds. Now instead, the returned string for C<"$!"> contains text | |
3521 | indicating the code is for an unknown error. | |
3522 | ||
3523 | =item * | |
3524 | ||
3525 | Individually-tied elements of @INC (as in C<tie $INC[0]...>) are now | |
3526 | handled correctly. Formerly, whether a sub returned by such a tied element | |
3527 | would be treated as a sub depended on whether a FETCH had occurred | |
3528 | previously. | |
3529 | ||
3530 | =item * | |
3531 | ||
3532 | C<getc> on a byte-sized handle after the same C<getc> operator had been | |
3533 | used on a utf8 handle used to treat the bytes as utf8, resulting in erratic | |
3534 | behavior (e.g., malformed UTF-8 warnings). | |
3535 | ||
3536 | =item * | |
3537 | ||
3538 | An initial C<{> at the beginning of a format argument line was always | |
3539 | interpreted as the beginning of a block prior to v5.18. In Perl v5.18, it | |
3540 | started being treated as an ambiguous token. The parser would guess | |
3541 | whether it was supposed to be an anonymous hash constructor or a block | |
3542 | based on the contents. Now the previous behavious has been restored. | |
3543 | [perl #119973] | |
3544 | ||
3545 | =item * | |
3546 | ||
3547 | In Perl v5.18 C<undef *_; goto &sub> and C<local *_; goto &sub> started | |
3548 | crashing. This has been fixed. [perl #119949] | |
3549 | ||
3550 | =item * | |
3551 | ||
3552 | Backticks (C< `` > or C< qx// >) combined with multiple threads on | |
3553 | Win32 could result in output sent to stdout on one thread being | |
3554 | captured by backticks of an external command in another thread. | |
3555 | ||
3556 | This could occur for pseudo-forked processes too, as Win32's | |
3557 | pseudo-fork is implemented in terms of threads. [perl #77672] | |
3558 | ||
3559 | =item * | |
3560 | ||
3561 | C<< open $fh, ">+", undef >> no longer leaks memory when TMPDIR is set | |
3562 | but points to a directory a temporary file cannot be created in. [perl | |
3563 | #120951] | |
3564 | ||
3565 | =item * | |
3566 | ||
3567 | C< for ( $h{k} || '' ) > no longer auto-vivifies C<$h{k}>. [perl | |
3568 | #120374] | |
3569 | ||
3570 | =item * | |
3571 | ||
3572 | On Windows machines, Perl now emulates the POSIX use of the environment | |
3573 | for locale initialization. Previously, the environment was ignored. | |
3574 | See L<perllocale/ENVIRONMENT>. | |
3575 | ||
3576 | =item * | |
3577 | ||
3578 | Fixed a crash when destroying a self-referencing GLOB. [perl #121242] | |
3579 | ||
3580 | =back | |
3581 | ||
3582 | =head1 Known Problems | |
3583 | ||
3584 | =over 4 | |
3585 | ||
3586 | =item * | |
3587 | ||
6cc4aa09 RS |
3588 | L<IO::Socket> is known to fail tests on AIX 5.3. There is |
3589 | L<a patch|https://rt.perl.org/Ticket/Display.html?id=120835> in the request | |
3590 | tracker, #120835, which may be applied to future releases. | |
3591 | ||
3592 | =item * | |
3593 | ||
c68523cb RS |
3594 | The following modules are known to have test failures with this version of |
3595 | Perl. Patches have been submitted, so there will hopefully be new releases | |
3596 | soon: | |
3597 | ||
c68523cb RS |
3598 | =over |
3599 | ||
3600 | =item * | |
3601 | ||
3602 | L<Data::Structure::Util> version 0.15 | |
3603 | ||
3604 | =item * | |
3605 | ||
c68523cb RS |
3606 | L<HTML::StripScripts> version 1.05 |
3607 | ||
3608 | =item * | |
3609 | ||
c68523cb RS |
3610 | L<List::Gather> version 0.08. |
3611 | ||
c68523cb RS |
3612 | =back |
3613 | ||
3614 | =back | |
7ef8b31d | 3615 | |
58121923 | 3616 | =head1 Obituary |
33eca75a RS |
3617 | |
3618 | Diana Rosa, 27, of Rio de Janeiro, went to her long rest on May 10, | |
3619 | 2014, along with the plush camel she kept hanging on her computer screen | |
3620 | all the time. She was a passionate Perl hacker who loved the language and its | |
3621 | community, and who never missed a Rio.pm event. She was a true artist, an | |
3622 | enthusiast about writing code, singing arias and graffiting walls. We'll never | |
3623 | forget you. | |
3624 | ||
79654ee3 NC |
3625 | Greg McCarroll died on August 28, 2013. |
3626 | ||
3627 | Greg was well known for many good reasons. He was one of the organisers of | |
3628 | the first YAPC::Europe, which concluded with an unscheduled auction where he | |
3629 | frantically tried to raise extra money to avoid the conference making a | |
3630 | loss. It was Greg who mistakenly arrived for a london.pm meeting a week | |
3631 | late; some years later he was the one who sold the choice of official | |
3632 | meeting date at a YAPC::Europe auction, and eventually as glorious leader of | |
3633 | london.pm he got to inherit the irreverent confusion that he had created. | |
3634 | ||
3635 | Always helpful, friendly and cheerfully optimistic, you will be missed, but | |
3636 | never forgotten. | |
3637 | ||
7ef8b31d | 3638 | =head1 Acknowledgements |
52e02e68 | 3639 | |
7f7f2dcc RS |
3640 | Perl 5.20.0 represents approximately 12 months of development since Perl 5.18.0 |
3641 | and contains approximately 470,000 lines of changes across 2,900 files from 124 | |
3642 | authors. | |
3643 | ||
3644 | Excluding auto-generated files, documentation and release tools, there were | |
3645 | approximately 280,000 lines of changes to 1,800 .pm, .t, .c and .h files. | |
3646 | ||
3647 | Perl continues to flourish into its third decade thanks to a vibrant community | |
3648 | of users and developers. The following people are known to have contributed the | |
3649 | improvements that became Perl 5.20.0: | |
3650 | ||
3651 | Aaron Crane, Abhijit Menon-Sen, Abigail, Abir Viqar, Alan Haggai Alavi, Alan | |
3652 | Hourihane, Alexander Voronov, Alexandr Ciornii, Andy Dougherty, Anno Siegel, | |
3653 | Aristotle Pagaltzis, Arthur Axel 'fREW' Schmidt, Brad Gilbert, Brendan Byrd, | |
3654 | Brian Childs, Brian Fraser, Brian Gottreu, Chris 'BinGOs' Williams, Christian | |
3655 | Millour, Colin Kuskie, Craig A. Berry, Dabrien 'Dabe' Murphy, Dagfinn Ilmari | |
3656 | Mannsåker, Daniel Dragan, Darin McBride, David Golden, David Leadbeater, David | |
3657 | Mitchell, David Nicol, David Steinbrunner, Dennis Kaarsemaker, Dominic | |
3658 | Hargreaves, Ed Avis, Eric Brine, Evan Zacks, Father Chrysostomos, Florian | |
3659 | Ragwitz, François Perrad, Gavin Shelley, Gideon Israel Dsouza, Gisle Aas, | |
3660 | Graham Knop, H.Merijn Brand, Hauke D, Heiko Eissfeldt, Hiroo Hayashi, Hojung | |
3661 | Youn, James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Jess Robinson, Jesse | |
3662 | Luehrs, Johan Vromans, John Gardiner Myers, John Goodyear, John P. Linderman, | |
3663 | John Peacock, kafka, Kang-min Liu, Karen Etheridge, Karl Williamson, Keedi Kim, | |
3664 | Kent Fredric, kevin dawson, Kevin Falcone, Kevin Ryde, Leon Timmermans, Lukas | |
3665 | Mai, Marc Simpson, Marcel Grünauer, Marco Peereboom, Marcus Holland-Moritz, | |
3666 | Mark Jason Dominus, Martin McGrath, Matthew Horsfall, Max Maischein, Mike | |
3667 | Doherty, Moritz Lenz, Nathan Glenn, Nathan Trapuzzano, Neil Bowers, Neil | |
3668 | Williams, Nicholas Clark, Niels Thykier, Niko Tyni, Olivier Mengué, Owain G. | |
3669 | Ainsworth, Paul Green, Paul Johnson, Peter John Acklam, Peter Martini, Peter | |
3670 | Rabbitson, Petr Písař, Philip Boulain, Philip Guenther, Piotr Roszatycki, | |
3671 | Rafael Garcia-Suarez, Reini Urban, Reuben Thomas, Ricardo Signes, Ruslan | |
3672 | Zakirov, Sergey Alekseev, Shirakata Kentaro, Shlomi Fish, Slaven Rezic, | |
3673 | Smylers, Steffen Müller, Steve Hay, Sullivan Beck, Thomas Sibley, Tobias | |
3674 | Leich, Toby Inkster, Tokuhiro Matsuno, Tom Christiansen, Tom Hukins, Tony Cook, | |
3675 | Victor Efimov, Viktor Turskyi, Vladimir Timofeev, YAMASHINA Hio, Yves Orton, | |
3676 | Zefram, Zsbán Ambrus, Ævar Arnfjörð Bjarmason. | |
3677 | ||
3678 | The list above is almost certainly incomplete as it is automatically generated | |
3679 | from version control history. In particular, it does not include the names of | |
3680 | the (very much appreciated) contributors who reported issues to the Perl bug | |
3681 | tracker. | |
3682 | ||
3683 | Many of the changes included in this version originated in the CPAN modules | |
3684 | included in Perl's core. We're grateful to the entire CPAN community for | |
3685 | helping Perl to flourish. | |
3686 | ||
3687 | For a more complete list of all of Perl's historical contributors, please see | |
3688 | the F<AUTHORS> file in the Perl source distribution. | |
f5b73711 | 3689 | |
44691e6f AB |
3690 | =head1 Reporting Bugs |
3691 | ||
e08634c5 SH |
3692 | If you find what you think is a bug, you might check the articles recently |
3693 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at | |
c68523cb | 3694 | http://rt.perl.org/perlbug/ . There may also be information at |
7ef8b31d | 3695 | http://www.perl.org/ , the Perl Home Page. |
44691e6f | 3696 | |
e08634c5 SH |
3697 | If you believe you have an unreported bug, please run the L<perlbug> program |
3698 | included with your release. Be sure to trim your bug down to a tiny but | |
3699 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
3700 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
44691e6f AB |
3701 | |
3702 | If the bug you are reporting has security implications, which make it | |
e08634c5 SH |
3703 | inappropriate to send to a publicly archived mailing list, then please send it |
3704 | to perl5-security-report@perl.org. This points to a closed subscription | |
3705 | unarchived mailing list, which includes all the core committers, who will be | |
3706 | able to help assess the impact of issues, figure out a resolution, and help | |
f9001595 | 3707 | co-ordinate the release of patches to mitigate or fix the problem across all |
e08634c5 SH |
3708 | platforms on which Perl is supported. Please only use this address for |
3709 | security issues in the Perl core, not for modules independently distributed on | |
3710 | CPAN. | |
44691e6f AB |
3711 | |
3712 | =head1 SEE ALSO | |
3713 | ||
e08634c5 SH |
3714 | The F<Changes> file for an explanation of how to view exhaustive details on |
3715 | what changed. | |
44691e6f AB |
3716 | |
3717 | The F<INSTALL> file for how to build Perl. | |
3718 | ||
3719 | The F<README> file for general stuff. | |
3720 | ||
3721 | The F<Artistic> and F<Copying> files for copyright information. | |
3722 | ||
3723 | =cut |