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