Commit | Line | Data |
---|---|---|
4dc623f0 CBW |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5216delta - what is new for perl v5.21.6 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.21.5 release and the 5.21.6 | |
10 | release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.21.4, first read | |
13 | L<perl5215delta>, which describes differences between 5.21.4 and 5.21.5. | |
14 | ||
15 | =head1 Core Enhancements | |
16 | ||
17 | =head2 List form of pipe open implemented for Win32 | |
18 | ||
19 | The list form of pipe: | |
20 | ||
21 | open my $fh, "-|", "program", @arguments; | |
22 | ||
23 | is now implemented on Win32. It has the same limitations as C<system | |
24 | LIST> on Win32, since the Win32 API doesn't accept program arguments | |
25 | as a list. | |
26 | ||
27 | =head2 Assignment to list repetition | |
28 | ||
29 | C<(...) x ...> can now be used within a list that is assigned to, as long | |
30 | as the left-hand side is a valid lvalue. This allows C<(undef,undef,$foo) | |
31 | = that_function()> to be written as C<((undef)x2, $foo) = that_function()>. | |
32 | ||
33 | =head2 C<close> now sets C<$!> | |
34 | ||
35 | When an I/O error occurs, the fact that there has been an error is recorded | |
36 | in the handle. C<close> returns false for such a handle. Previously, the | |
37 | value of C<$!> would be untouched by C<close>, so the common convention of | |
38 | writing C<close $fh or die $!> did not work reliably. Now the handle | |
39 | records the value of C<$!>, too, and C<close> restores it. | |
40 | ||
41 | =head1 Deprecations | |
42 | ||
43 | =head2 Use of non-graphic characters in single-character variable names | |
44 | ||
45 | The syntax for single-character variable names is more lenient than | |
46 | for longer variable names, allowing the one-character name to be a | |
47 | punctuation character or even invisible (a non-graphic). Perl v5.20 | |
48 | deprecated the ASCII-range controls as such a name. Now, all | |
49 | non-graphic characters that formerly were allowed are deprecated. | |
50 | The practical effect of this occurs only when not under C<S<"use | |
51 | utf8">>, and affects just the C1 controls (code points 0x80 through | |
52 | 0xFF), NO-BREAK SPACE, and SOFT HYPHEN. | |
53 | ||
54 | =head2 Inlining of C<sub () { $var }> with observable side-effects | |
55 | ||
56 | In many cases Perl makes sub () { $var } into an inlinable constant | |
57 | subroutine, capturing the value of $var at the time the C<sub> expression | |
58 | is evaluated. This can break the closure behaviour in those cases where | |
59 | $var is subsequently modified. The subroutine won't return the new value. | |
60 | ||
61 | This usage is now deprecated in those cases where the variable could be | |
62 | modified elsewhere. Perl detects those cases and emits a deprecation | |
63 | warning. Such code will likely change in the future and stop producing a | |
64 | constant. | |
65 | ||
66 | If your variable is only modified in the place where it is declared, then | |
67 | Perl will continue to make the sub inlinable with no warnings. | |
68 | ||
69 | sub make_constant { | |
70 | my $var = shift; | |
71 | return sub () { $var }; # fine | |
72 | } | |
73 | ||
74 | sub make_constant_deprecated { | |
75 | my $var; | |
76 | $var = shift; | |
77 | return sub () { $var }; # deprecated | |
78 | } | |
79 | ||
80 | sub make_constant_deprecated2 { | |
81 | my $var = shift; | |
82 | log_that_value($var); # could modify $var | |
83 | return sub () { $var }; # deprecated | |
84 | } | |
85 | ||
86 | In the second example above, detecting that $var is assigned to only once | |
87 | is too hard to detect. That it happens in a spot other than the C<my> | |
88 | declaration is enough for Perl to find it suspicious. | |
89 | ||
90 | This deprecation warning happens only for a simple variable for the body of | |
91 | the sub. (A C<BEGIN> block or C<use> statement inside the sub is ignored, | |
92 | because it does not become part of the sub's body.) For more complex | |
93 | cases, such as C<sub () { do_something() if 0; $var }> the behaviour has | |
94 | changed such that inlining does not happen if the variable is modifiable | |
95 | elsewhere. Such cases should be rare. | |
96 | ||
97 | =head1 Performance Enhancements | |
98 | ||
99 | =over 4 | |
100 | ||
101 | =item * | |
102 | ||
103 | C<(...)x1>, C<("constant")x0> and C<($scalar)x0> are now optimised in list | |
104 | context. If the right-hand argument is a constant 1, the repetition | |
105 | operator disappears. If the right-hand argument is a constant 0, the whole | |
106 | expressions is optimised to the empty list, so long as the left-hand | |
107 | argument is a simple scalar or constant. C<(foo())x0> is not optimised. | |
108 | ||
109 | =item * | |
110 | ||
111 | C<substr> assignment is now optimised into 4-argument C<substr> at the end | |
112 | of a subroutine (or as the argument to C<return>). Previously, this | |
113 | optimisation only happened in void context. | |
114 | ||
115 | =item * | |
116 | ||
117 | Assignment to lexical variables is often optimised away. For instance, in | |
118 | C<$lexical = chr $foo>, the C<chr> operator writes directly to the lexical | |
119 | variable instead of returning a value that gets copied. This optimisation | |
120 | has been extended to C<split>, C<x> and C<vec> on the right-hand side. It | |
121 | has also been made to work with state variable initialization. | |
122 | ||
123 | =item * | |
124 | ||
125 | In "\L...", "\Q...", etc., the extra "stringify" op is now optimised away, | |
126 | making these just as fast as C<lcfirst>, C<quotemeta>, etc. | |
127 | ||
128 | =item * | |
129 | ||
130 | Assignment to an empty list is now sometimes faster. In particular, it | |
131 | never calls C<FETCH> on tied arguments on the right-hand side, whereas it | |
132 | used to sometimes. | |
133 | ||
134 | =back | |
135 | ||
136 | =head1 Modules and Pragmata | |
137 | ||
138 | =head2 Updated Modules and Pragmata | |
139 | ||
140 | =over 4 | |
141 | ||
142 | =item * | |
143 | ||
144 | L<B> has been upgraded from version 1.52 to 1.53. | |
145 | ||
146 | =item * | |
147 | ||
148 | L<B::Concise> has been upgraded from version 0.994 to 0.995. | |
149 | ||
150 | =item * | |
151 | ||
152 | L<B::Deparse> has been upgraded from version 1.29 to 1.30. | |
153 | ||
154 | It now deparses C<+sub : attr { ... }> correctly at the start of a | |
155 | statement. Without the initial C<+>, C<sub> would be a statement label. | |
156 | ||
157 | C<BEGIN> blocks are now emitted in the right place most of the time, but | |
158 | the change unfortunately introduced a regression, in that C<BEGIN> blocks | |
159 | occurring just before the end of the enclosing block may appear below it | |
160 | instead. So this change may need to be reverted if it cannot be fixed | |
161 | before Perl 5.22. [perl #77452] | |
162 | ||
163 | B::Deparse no longer puts erroneous C<local> here and there, such as for | |
164 | C<LIST = tr/a//d>. [perl #119815] | |
165 | ||
166 | Adjacent C<use> statements are no longer accidentally nested if one | |
167 | contains a C<do> block. [perl #115066] | |
168 | ||
169 | =item * | |
170 | ||
171 | L<B::Op_private> has been upgraded from version 5.021005 to 5.021006. | |
172 | ||
173 | It now includes a hash named C<%ops_using>, list all op types that use a | |
174 | particular private flag. | |
175 | ||
176 | =item * | |
177 | ||
178 | L<CPAN::Meta> has been upgraded from version 2.142690 to 2.143240. | |
179 | ||
180 | =item * | |
181 | ||
182 | L<CPAN::Meta::Requirements> has been upgraded from version 2.128 to 2.130. | |
183 | ||
184 | =item * | |
185 | ||
186 | L<Devel::Peek> has been upgraded from version 1.18 to 1.19. | |
187 | ||
188 | =item * | |
189 | ||
190 | L<Digest::SHA> has been upgraded from version 5.92 to 5.93. | |
191 | ||
192 | =item * | |
193 | ||
194 | L<DynaLoader> has been upgraded from version 1.27 to 1.28. | |
195 | ||
196 | =item * | |
197 | ||
198 | L<Encode> has been upgraded from version 2.62 to 2.64. | |
199 | ||
200 | =item * | |
201 | ||
202 | L<experimental> has been upgraded from version 0.012 to 0.013. | |
203 | ||
204 | =item * | |
205 | ||
206 | L<Exporter> has been upgraded from version 5.71 to 5.72. | |
207 | ||
208 | =item * | |
209 | ||
210 | L<ExtUtils::MakeMaker> has been upgraded from version 6.98 to 7.02. | |
211 | ||
212 | =item * | |
213 | ||
214 | L<ExtUtils::Manifest> has been upgraded from version 1.68 to 1.69. | |
215 | ||
216 | =item * | |
217 | ||
218 | L<ExtUtils::ParseXS> has been upgraded from version 3.25 to 3.26. | |
219 | ||
220 | =item * | |
221 | ||
222 | L<HTTP::Tiny> has been upgraded from version 0.050 to 0.051. | |
223 | ||
224 | =item * | |
225 | ||
226 | L<I18N::Langinfo> has been upgraded from version 0.11 to 0.12. | |
227 | ||
228 | =item * | |
229 | ||
230 | L<IO::Socket> has been upgraded from version 1.37 to 1.38. | |
231 | ||
0d90b86e | 232 | Document the limitations of the connected() method. [perl #123096] |
4dc623f0 CBW |
233 | |
234 | =item * | |
235 | ||
236 | L<locale> has been upgraded from version 1.04 to 1.05. | |
237 | ||
238 | =item * | |
239 | ||
240 | L<Module::CoreList> has been upgraded from version 5.20141020 to 5.20141120. | |
241 | ||
242 | =item * | |
243 | ||
244 | L<overload> has been upgraded from version 1.23 to 1.24. | |
245 | ||
246 | =item * | |
247 | ||
248 | L<PerlIO::encoding> has been upgraded from version 0.19 to 0.20. | |
249 | ||
250 | =item * | |
251 | ||
252 | L<PerlIO::scalar> has been upgraded from version 0.19 to 0.20. | |
253 | ||
254 | =item * | |
255 | ||
256 | L<POSIX> has been upgraded from version 1.45 to 1.46. | |
257 | ||
258 | =item * | |
259 | ||
260 | L<re> has been upgraded from version 0.27 to 0.28. | |
261 | ||
262 | =item * | |
263 | ||
264 | L<Test::Harness> has been upgraded from version 3.33 to 3.34. | |
265 | ||
266 | =item * | |
267 | ||
268 | L<Test::Simple> has been upgraded from version 1.001008 to 1.301001_075. | |
269 | ||
270 | =item * | |
271 | ||
272 | L<Unicode::UCD> has been upgraded from version 0.58 to 0.59. | |
273 | ||
274 | =item * | |
275 | ||
276 | L<warnings> has been upgraded from version 1.28 to 1.29. | |
277 | ||
278 | =item * | |
279 | ||
280 | L<XSLoader> has been upgraded from version 0.18 to 0.19. | |
281 | ||
282 | =back | |
283 | ||
284 | =head1 Documentation | |
285 | ||
286 | =head2 Changes to Existing Documentation | |
287 | ||
288 | =head3 L<perldata/Identifier parsing> | |
289 | ||
290 | =over 4 | |
291 | ||
292 | =item * | |
293 | ||
294 | The syntax of single-character variable names has been brought | |
295 | up-to-date and more fully explained. | |
296 | ||
297 | =back | |
298 | ||
299 | =head1 Diagnostics | |
300 | ||
301 | The following additions or changes have been made to diagnostic output, | |
302 | including warnings and fatal error messages. For the complete list of | |
303 | diagnostic messages, see L<perldiag>. | |
304 | ||
305 | =head2 New Diagnostics | |
306 | ||
307 | =head3 New Warnings | |
308 | ||
309 | =over 4 | |
310 | ||
311 | =item * | |
312 | ||
313 | L<Use of literal non-graphic characters in variable names is deprecated|perldiag/"Use of literal non-graphic characters in variable names is deprecated"> | |
314 | ||
315 | =item * | |
316 | ||
317 | A new C<locale> warning category has been created, with the following warning | |
318 | messages currently in it: | |
319 | ||
320 | =over 4 | |
321 | ||
322 | =item * | |
323 | ||
324 | L<Locale '%s' may not work well.%s|perldiag/Locale '%s' may not work well.%s> | |
325 | ||
326 | =item * | |
327 | ||
328 | L<Can't do %s("%s") on non-UTF-8 locale; resolved to "%s".|perldiag/Can't do %s("%s") on non-UTF-8 locale; resolved to "%s".> | |
329 | ||
330 | =back | |
331 | ||
332 | =item * | |
333 | ||
334 | L<Warning: unable to close filehandle %s properly: %s|perldiag/"Warning: unable to close filehandle %s properly: %s"> | |
335 | ||
336 | =item * | |
337 | ||
338 | The following two warnings for C<tr///> used to be skipped if the | |
339 | transliteration contained wide characters, but now they occur regardless of | |
340 | whether there are wide characters or not: | |
341 | ||
342 | L<Useless use of E<sol>d modifier in transliteration operator|perldiag/"Useless use of /d modifier in transliteration operator"> | |
343 | ||
344 | L<Replacement list is longer than search list|perldiag/Replacement list is longer than search list> | |
345 | ||
346 | =back | |
347 | ||
348 | =head2 Changes to Existing Diagnostics | |
349 | ||
350 | =over 4 | |
351 | ||
352 | =item * | |
353 | ||
354 | L<Quantifier unexpected on zero-length expression in regex mE<sol>%sE<sol>|perldiag/"Quantifier unexpected on zero-length expression in regex m/%s/">. | |
355 | ||
356 | This message has had the S<"<-- HERE"> marker removed, as it was always | |
357 | placed at the end of the regular expression, regardless of where the | |
358 | problem actually occurred. [perl #122680] | |
359 | ||
360 | =item * | |
361 | ||
362 | L<Setting $E<sol> to a reference to %s as a form of slurp is deprecated, treating as undef|perldiag/"Setting $/ to a reference to %s as a form of slurp is deprecated, treating as undef"> | |
363 | ||
364 | This warning is now a default warning, like other deprecation warnings. | |
365 | ||
366 | =back | |
367 | ||
368 | =head1 Configuration and Compilation | |
369 | ||
370 | =over 4 | |
371 | ||
372 | =item * | |
373 | ||
374 | F<Configure> with C<-Dmksymlinks> should now be faster. [perl #122002] | |
375 | ||
376 | =back | |
377 | ||
378 | =over 4 | |
379 | ||
380 | =item * | |
381 | ||
382 | As well as the gzip and bzip2 tarballs, this release has been made available as an xz utils compressed tarball. | |
383 | ||
384 | =back | |
385 | ||
386 | =head1 Platform Support | |
387 | ||
388 | =head2 Platform-Specific Notes | |
389 | ||
390 | =head3 Win32 | |
391 | ||
392 | =over 4 | |
393 | ||
394 | =item * | |
395 | ||
396 | In the experimental C<:win32> layer, a crash in C<open> was fixed. Also | |
397 | opening C</dev/null>, which works the Win32 Perl's normal C<:unix> layer, was | |
398 | implemented for C<:win32>. | |
399 | L<[perl #122224]|https://rt.perl.org/Ticket/Display.html?id=122224> | |
400 | ||
401 | =item * | |
402 | ||
403 | A new makefile option, C<USE_LONG_DOUBLE>, has been added to the Windows | |
404 | dmake makefile for gcc builds only. Set this to "define" if you want perl to | |
405 | use long doubles to give more accuracy and range for floating point numbers. | |
406 | ||
407 | =back | |
408 | ||
409 | =head1 Internal Changes | |
410 | ||
411 | =over 4 | |
412 | ||
413 | =item * | |
414 | ||
415 | C<screaminstr> has been removed. Although marked as public API, it is | |
416 | undocumented and has no usage in modern perl versions on CPAN Grep. Calling it | |
417 | has been fatal since 5.17.0. | |
418 | ||
419 | =item * | |
420 | ||
421 | C<newDEFSVOP>, C<block_start>, C<block_end> and C<intro_my> have been added | |
422 | to the API. | |
423 | ||
424 | =item * | |
425 | ||
426 | The internal C<convert> function in F<op.c> has been renamed | |
427 | C<op_convert_list> and added to the API. | |
428 | ||
429 | =item * | |
430 | ||
431 | C<sv_magic> no longer forbids "ext" magic on read-only values. After all, | |
432 | perl can't know whether the custom magic will modify the SV or not. | |
433 | [perl #123103] | |
434 | ||
14263489 FC |
435 | =item * |
436 | ||
437 | Starting in 5.21.6, accessing L<perlapi/CvPADLIST> in an XSUB is forbidden. | |
438 | CvPADLIST has be reused for a different internal purpose for XSUBs. Guard all | |
439 | CvPADLIST expressions with C<CvISXSUB()> if your code doesn't already block | |
440 | XSUB CV*s from going through optree CV* expecting code. | |
441 | ||
4dc623f0 CBW |
442 | =back |
443 | ||
14263489 | 444 | |
4dc623f0 CBW |
445 | =head1 Selected Bug Fixes |
446 | ||
447 | =over 4 | |
448 | ||
449 | =item * | |
450 | ||
451 | fchmod() and futimes() now set C<$!> when they fail due to being | |
452 | passed a closed file handle. [perl #122703] | |
453 | ||
454 | =item * | |
455 | ||
456 | Perl now comes with a corrected Unicode 7.0 for the erratum issued on | |
457 | October 21, 2014 (see L<http://www.unicode.org/errata/#current_errata>), | |
458 | dealing with glyph shaping in Arabic. | |
459 | ||
460 | =item * | |
461 | ||
462 | op_free() no longer crashes due to a stack overflow when freeing a | |
463 | deeply recursive op tree. [perl #108276] | |
464 | ||
465 | =item * | |
466 | ||
467 | scalarvoid() would crash due to a stack overflow when processing a | |
468 | deeply recursive op tree. [perl #108276] | |
469 | ||
470 | =item * | |
471 | ||
472 | In Perl 5.20.0, C<$^N> accidentally had the internal UTF8 flag turned off | |
473 | if accessed from a code block within a regular expression, effectively | |
474 | UTF8-encoding the value. This has been fixed. [perl #123135] | |
475 | ||
476 | =item * | |
477 | ||
478 | A failed C<semctl> call no longer overwrites existing items on the stack, | |
479 | causing C<(semctl(-1,0,0,0))[0]> to give an "uninitialized" warning. | |
480 | ||
481 | =item * | |
482 | ||
483 | C<else{foo()}> with no space before C<foo> is now better at assigning the | |
484 | right line number to that statement. [perl #122695] | |
485 | ||
486 | =item * | |
487 | ||
488 | Sometimes the assignment in C<@array = split> gets optimised and C<split> | |
489 | itself writes directly to the array. This caused a bug, preventing this | |
490 | assignment from being used in lvalue context. So | |
491 | C<(@a=split//,"foo")=bar()> was an error. (This bug probably goes back to | |
492 | Perl 3, when the optimisation was added.) This optimisation, and the bug, | |
493 | started to happen in more cases in 5.21.5. It has now been fixed. | |
494 | [perl #123057] | |
495 | ||
496 | =item * | |
497 | ||
498 | When argument lists that fail the checks installed by subroutine | |
499 | signatures, the resulting error messages now give the file and line number | |
500 | of the caller, not of the called subroutine. [perl #121374] | |
501 | ||
502 | =item * | |
503 | ||
504 | Flip-flop operators (C<..> and C<...> in scalar context) used to maintain | |
505 | a separate state for each recursion level (the number of times the | |
506 | enclosing sub was called recursively), contrary to the documentation. Now | |
507 | each closure has one internal state for each flip-flop. [perl #122829] | |
508 | ||
509 | =item * | |
510 | ||
511 | C<use>, C<no>, statement labels, special blocks (C<BEGIN>) and pod are now | |
512 | permitted as the first thing in a C<map> or C<grep> block, the block after | |
513 | C<print> or C<say> (or other functions) returning a handle, and within | |
514 | C<${...}>, C<@{...}>, etc. [perl #122782] | |
515 | ||
516 | =item * | |
517 | ||
518 | The repetition operator C<x> now propagates lvalue context to its left-hand | |
519 | argument when used in contexts like C<foreach>. That allows | |
520 | C<for(($#that_array)x2) { ... }> to work as expected if the loop modifies | |
521 | $_. | |
522 | ||
523 | =item * | |
524 | ||
525 | C<(...) x ...> in scalar context used to corrupt the stack if one operand | |
526 | were an object with "x" overloading, causing erratic behaviour. | |
527 | [perl #121827] | |
528 | ||
529 | =item * | |
530 | ||
531 | Assignment to a lexical scalar is often optimised away (as mentioned under | |
532 | L</Performance Enhancements>). Various bugs related to this optimisation | |
533 | have been fixed. Certain operators on the right-hand side would sometimes | |
534 | fail to assign the value at all or assign the wrong value, or would call | |
535 | STORE twice or not at all on tied variables. The operators affected were | |
536 | C<$foo++>, C<$foo-->, and C<-$foo> under C<use integer>, C<chomp>, C<chr> | |
537 | and C<setpgrp>. | |
538 | ||
539 | =item * | |
540 | ||
541 | List assignments were sometimes buggy if the same scalar ended up on both | |
542 | sides of the assignment due to used of C<tied>, C<values> or C<each>. The | |
543 | result would be the wrong value getting assigned. | |
544 | ||
545 | =item * | |
546 | ||
547 | C<setpgrp($nonzero)> (with one argument) was accidentally changed in 5.16 | |
548 | to mean C<setpgrp(0)>. This has been fixed. | |
549 | ||
550 | =item * | |
551 | ||
552 | C<__SUB__> could return the wrong value or even corrupt memory under the | |
553 | debugger (the B<-d> switch) and in subs containing C<eval $string>. | |
554 | ||
555 | =item * | |
556 | ||
557 | When C<sub () { $var }> becomes inlinable, it now returns a different | |
558 | scalar each time, just as a non-inlinable sub would, though Perl still | |
559 | optimises the copy away in cases where it would make no observable | |
560 | difference. | |
561 | ||
562 | =item * | |
563 | ||
564 | C<my sub f () { $var }> and C<sub () : attr { $var }> are no longer | |
565 | eligible for inlining. The former would crash; the latter would just | |
566 | throw the attributes away. An exception is made for the little-known | |
567 | ":method" attribute, which does nothing much. | |
568 | ||
569 | =item * | |
570 | ||
571 | Inlining of subs with an empty prototype is now more consistent than | |
572 | before. Previously, a sub with multiple statements, all but the last | |
573 | optimised away, would be inlinable only if it were an anonymous sub | |
574 | containing a string C<eval> or C<state> declaration or closing over an | |
575 | outer lexical variable (or any anonymous sub under the debugger). Now any | |
576 | sub that gets folded to a single constant after statements have been | |
577 | optimised away is eligible for inlining. This applies to things like C<sub | |
578 | () { jabber() if DEBUG; 42 }>. | |
579 | ||
580 | Some subroutines with an explicit C<return> were being made inlinable, | |
581 | contrary to the documentation, Now C<return> always prevents inlining. | |
582 | ||
583 | =item * | |
584 | ||
585 | On some systems, such as VMS, C<crypt> can return a non-ASCII string. If a | |
586 | scalar assigned to had contained a UTF8 string previously, then C<crypt> | |
587 | would not turn off the UTF8 flag, thus corrupting the return value. This | |
588 | would happen with C<$lexical = crypt ...>. | |
589 | ||
590 | =item * | |
591 | ||
592 | C<crypt> no longer calls C<FETCH> twice on a tied first argument. | |
593 | ||
594 | =item * | |
595 | ||
596 | An unterminated here-doc on the last line of a quote-like operator | |
597 | (C<qq[${ <<END }]>, C</(?{ <<END })/>) no longer causes a double free. It | |
598 | started doing so in 5.18. | |
599 | ||
600 | =item * | |
601 | ||
602 | Fixed two assertion failures introduced into C<-DPERL_OP_PARENT> | |
603 | builds. [perl #108276] | |
604 | ||
605 | =back | |
606 | ||
607 | =head1 Known Problems | |
608 | ||
609 | =over 4 | |
610 | ||
611 | =item * | |
612 | ||
4dc623f0 CBW |
613 | Builds on FreeBSD 10.x currently fail when compiling L<POSIX>. A workaround is |
614 | to specify C<-Ui_fenv> when running C<Configure>. | |
615 | ||
616 | =back | |
617 | ||
618 | =head1 Errata From Previous Releases | |
619 | ||
620 | =over 4 | |
621 | ||
622 | =item * | |
623 | ||
624 | Due to a mistake in the string-copying logic, copying the value of a state | |
625 | variable could instead steal the value and undefine the variable. This | |
626 | bug, introduced in 5.20, would happen mostly for long strings (1250 chars | |
627 | or more), but could happen for any strings under builds with copy-on-write | |
628 | disabled. [perl #123029] | |
629 | ||
630 | This bug was actually fixed in 5.21.5, but it was not until after that | |
631 | release that this bug, and the fact that it had been fixed, were | |
632 | discovered. | |
633 | ||
634 | =item * | |
635 | ||
636 | If a named sub tries to access a scalar declared in an outer anonymous sub, | |
637 | the variable is not available, so the named sub gets its own undefined | |
638 | scalar. In 5.10, attempts to take a reference to the variable | |
639 | (C<\$that_variable>) began returning a reference to a I<copy> of it | |
640 | instead. This was accidentally fixed in 5.21.4, but the bug and its fix | |
641 | were not noticed till now. | |
642 | ||
643 | =back | |
644 | ||
645 | =head1 Acknowledgements | |
646 | ||
647 | Perl 5.21.6 represents approximately 4 weeks of development since Perl 5.21.5 | |
648 | and contains approximately 60,000 lines of changes across 920 files from 25 | |
649 | authors. | |
650 | ||
651 | Excluding auto-generated files, documentation and release tools, there were | |
652 | approximately 48,000 lines of changes to 630 .pm, .t, .c and .h files. | |
653 | ||
654 | Perl continues to flourish into its third decade thanks to a vibrant community | |
655 | of users and developers. The following people are known to have contributed the | |
656 | improvements that became Perl 5.21.6: | |
657 | ||
658 | Aaron Crane, Abigail, Andrew Fresh, Andy Dougherty, Brian Fraser, Chad Granum, | |
659 | Chris 'BinGOs' Williams, Craig A. Berry, Daniel Dragan, David Mitchell, Doug | |
660 | Bell, Father Chrysostomos, Glenn D. Golden, James E Keenan, Jarkko Hietaniemi, | |
661 | Jim Cromie, Karen Etheridge, Karl Williamson, Lukas Mai, Ricardo Signes, Shlomi | |
662 | Fish, Slaven Rezic, Steve Hay, Tony Cook, Yaroslav Kuzmin. | |
663 | ||
664 | The list above is almost certainly incomplete as it is automatically generated | |
665 | from version control history. In particular, it does not include the names of | |
666 | the (very much appreciated) contributors who reported issues to the Perl bug | |
667 | tracker. | |
668 | ||
669 | Many of the changes included in this version originated in the CPAN modules | |
670 | included in Perl's core. We're grateful to the entire CPAN community for | |
671 | helping Perl to flourish. | |
672 | ||
673 | For a more complete list of all of Perl's historical contributors, please see | |
674 | the F<AUTHORS> file in the Perl source distribution. | |
675 | ||
676 | =head1 Reporting Bugs | |
677 | ||
678 | If you find what you think is a bug, you might check the articles recently | |
679 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at | |
680 | https://rt.perl.org/ . There may also be information at | |
681 | http://www.perl.org/ , the Perl Home Page. | |
682 | ||
683 | If you believe you have an unreported bug, please run the L<perlbug> program | |
684 | included with your release. Be sure to trim your bug down to a tiny but | |
685 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
686 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
687 | ||
688 | If the bug you are reporting has security implications, which make it | |
689 | inappropriate to send to a publicly archived mailing list, then please send it | |
690 | to perl5-security-report@perl.org. This points to a closed subscription | |
691 | unarchived mailing list, which includes all the core committers, who will be | |
692 | able to help assess the impact of issues, figure out a resolution, and help | |
693 | co-ordinate the release of patches to mitigate or fix the problem across all | |
694 | platforms on which Perl is supported. Please only use this address for | |
695 | security issues in the Perl core, not for modules independently distributed on | |
696 | CPAN. | |
697 | ||
698 | =head1 SEE ALSO | |
699 | ||
700 | The F<Changes> file for an explanation of how to view exhaustive details on | |
701 | what changed. | |
702 | ||
703 | The F<INSTALL> file for how to build Perl. | |
704 | ||
705 | The F<README> file for general stuff. | |
706 | ||
707 | The F<Artistic> and F<Copying> files for copyright information. | |
708 | ||
709 | =cut |