Commit | Line | Data |
---|---|---|
2b85b119 SH |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5202delta - what is new for perl v5.20.2 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.20.1 release and the 5.20.2 | |
10 | release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.20.0, first read | |
13 | L<perl5201delta>, which describes differences between 5.20.0 and 5.20.1. | |
14 | ||
15 | =head1 Incompatible Changes | |
16 | ||
17 | There are no changes intentionally incompatible with 5.20.1. If any exist, | |
18 | they are bugs, and we request that you submit a report. See L</Reporting Bugs> | |
19 | below. | |
20 | ||
21 | =head1 Modules and Pragmata | |
22 | ||
23 | =head2 Updated Modules and Pragmata | |
24 | ||
25 | =over 4 | |
26 | ||
27 | =item * | |
28 | ||
29 | L<attributes> has been upgraded from version 0.22 to 0.23. | |
30 | ||
31 | The usage of C<memEQs> in the XS has been corrected. | |
32 | L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701> | |
33 | ||
34 | =item * | |
35 | ||
36 | L<Data::Dumper> has been upgraded from version 2.151 to 2.151_01. | |
37 | ||
38 | Fixes CVE-2014-4330 by adding a configuration variable/option to limit | |
39 | recursion when dumping deep data structures. | |
40 | ||
41 | =item * | |
42 | ||
43 | L<Errno> has been upgraded from version 1.20_03 to 1.20_05. | |
44 | ||
45 | Warnings when building the XS on Windows with the Visual C++ compiler are now | |
46 | avoided. | |
47 | ||
48 | =item * | |
49 | ||
50 | L<feature> has been upgraded from version 1.36 to 1.36_01. | |
51 | ||
52 | The C<postderef> feature has now been documented. This feature was actually | |
53 | added in Perl 5.20.0 but was accidentally omitted from the feature | |
54 | documentation until now. | |
55 | ||
56 | =item * | |
57 | ||
58 | L<IO::Socket> has been upgraded from version 1.37 to 1.38. | |
59 | ||
60 | Document the limitations of the connected() method. | |
61 | L<[perl #123096]|https://rt.perl.org/Ticket/Display.html?id=123096> | |
62 | ||
63 | =item * | |
64 | ||
65 | L<Module::CoreList> has been upgraded from version 5.020001 to 5.20150214. | |
66 | ||
67 | The list of Perl versions covered has been updated. | |
68 | ||
69 | =item * | |
70 | ||
71 | PathTools has been upgraded from version 3.48 to 3.48_01. | |
72 | ||
73 | A warning from the B<gcc> compiler is now avoided when building the XS. | |
74 | ||
75 | =item * | |
76 | ||
77 | L<PerlIO::scalar> has been upgraded from version 0.18 to 0.18_01. | |
78 | ||
79 | Reading from a position well past the end of the scalar now correctly returns | |
80 | end of file. | |
81 | L<[perl #123443]|https://rt.perl.org/Ticket/Display.html?id=123443> | |
82 | ||
83 | Seeking to a negative position still fails, but no longer leaves the file | |
84 | position set to a negation location. | |
85 | ||
86 | C<eof()> on a C<PerlIO::scalar> handle now properly returns true when the file | |
87 | position is past the 2GB mark on 32-bit systems. | |
88 | ||
89 | =item * | |
90 | ||
91 | L<Storable> has been upgraded from version 2.49 to 2.49_01. | |
92 | ||
93 | Minor grammatical change to the documentation only. | |
94 | ||
95 | =item * | |
96 | ||
97 | L<VMS::DCLsym> has been upgraded from version 1.05 to 1.05_01. | |
98 | ||
99 | Minor formatting change to the documentation only. | |
100 | ||
101 | =item * | |
102 | ||
103 | L<VMS::Stdio> has been upgraded from version 2.4 to 2.41. | |
104 | ||
105 | Minor formatting change to the documentation only. | |
106 | ||
107 | =back | |
108 | ||
109 | =head1 Documentation | |
110 | ||
111 | =head2 New Documentation | |
112 | ||
113 | =head3 L<perlunicook> | |
114 | ||
115 | This document, by Tom Christiansen, provides examples of handling Unicode in | |
116 | Perl. | |
117 | ||
118 | =head2 Changes to Existing Documentation | |
119 | ||
120 | =head3 L<perlexperiment> | |
121 | ||
122 | =over 4 | |
123 | ||
124 | =item * | |
125 | ||
126 | Added reference to subroutine signatures. This feature was actually added in | |
127 | Perl 5.20.0 but was accidentally omitted from the experimental feature | |
128 | documentation until now. | |
129 | ||
130 | =back | |
131 | ||
132 | =head3 L<perlpolicy> | |
133 | ||
134 | =over 4 | |
135 | ||
136 | =item * | |
137 | ||
138 | The process whereby features may graduate from experimental status has now been | |
139 | formally documented. | |
140 | ||
141 | =back | |
142 | ||
143 | =head3 L<perlsyn> | |
144 | ||
145 | =over 4 | |
146 | ||
147 | =item * | |
148 | ||
149 | An ambiguity in the documentation of the ellipsis statement has been corrected. | |
150 | L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661> | |
151 | ||
152 | =back | |
153 | ||
154 | =head1 Diagnostics | |
155 | ||
156 | The following additions or changes have been made to diagnostic output, | |
157 | including warnings and fatal error messages. For the complete list of | |
158 | diagnostic messages, see L<perldiag>. | |
159 | ||
160 | =head2 Changes to Existing Diagnostics | |
161 | ||
162 | =over 4 | |
163 | ||
164 | =item * | |
165 | ||
166 | L<Bad symbol for scalar|perldiag/"Bad symbol for scalar"> is now documented. | |
167 | This error is not new, but was not previously documented here. | |
168 | ||
169 | =item * | |
170 | ||
171 | L<Missing right brace on \N{}|perldiag/"Missing right brace on \N{}"> is now | |
172 | documented. This error is not new, but was not previously documented here. | |
173 | ||
174 | =back | |
175 | ||
176 | =head1 Testing | |
177 | ||
178 | =over 4 | |
179 | ||
180 | =item * | |
181 | ||
182 | The test script F<re/rt122747.t> has been added to verify that | |
183 | L<perl #122747|https://rt.perl.org/Ticket/Display.html?id=122747> remains | |
184 | fixed. | |
185 | ||
186 | =back | |
187 | ||
188 | =head1 Platform Support | |
189 | ||
190 | =head2 Regained Platforms | |
191 | ||
192 | IRIX and Tru64 platforms are working again. (Some C<make test> failures | |
193 | remain.) | |
194 | ||
195 | =head1 Selected Bug Fixes | |
196 | ||
197 | =over 4 | |
198 | ||
199 | =item * | |
200 | ||
201 | AIX now sets the length in C<< getsockopt >> correctly. | |
202 | L<[perl #120835]|https://rt.perl.org/Ticket/Display.html?id=120835>, | |
203 | L<[cpan #91183]|https://rt.cpan.org/Ticket/Display.html?id=91183>, | |
204 | L<[cpan #85570]|https://rt.cpan.org/Ticket/Display.html?id=85570> | |
205 | ||
206 | =item * | |
207 | ||
208 | In Perl 5.20.0, C<$^N> accidentally had the internal UTF8 flag turned off if | |
209 | accessed from a code block within a regular expression, effectively | |
210 | UTF8-encoding the value. This has been fixed. | |
211 | L<[perl #123135]|https://rt.perl.org/Ticket/Display.html?id=123135> | |
212 | ||
213 | =item * | |
214 | ||
215 | Various cases where the name of a sub is used (autoload, overloading, error | |
216 | messages) used to crash for lexical subs, but have been fixed. | |
217 | ||
218 | =item * | |
219 | ||
220 | An assertion failure when parsing C<sort> with debugging enabled has been | |
221 | fixed. | |
222 | L<[perl #122771]|https://rt.perl.org/Ticket/Display.html?id=122771> | |
223 | ||
224 | =item * | |
225 | ||
226 | Loading UTF8 tables during a regular expression match could cause assertion | |
227 | failures under debugging builds if the previous match used the very same | |
228 | regular expression. | |
229 | L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747> | |
230 | ||
231 | =item * | |
232 | ||
233 | Due to a mistake in the string-copying logic, copying the value of a state | |
234 | variable could instead steal the value and undefine the variable. This bug, | |
235 | introduced in Perl 5.20, would happen mostly for long strings (1250 chars or | |
236 | more), but could happen for any strings under builds with copy-on-write | |
237 | disabled. | |
238 | L<[perl #123029]|https://rt.perl.org/Ticket/Display.html?id=123029> | |
239 | ||
240 | =item * | |
241 | ||
242 | Fixed a bug that could cause perl to execute an infinite loop during | |
243 | compilation. | |
244 | L<[perl #122995]|https://rt.perl.org/Ticket/Display.html?id=122995> | |
245 | ||
246 | =item * | |
247 | ||
248 | On Win32, restoring in a child pseudo-process a variable that was C<local()>ed | |
249 | in a parent pseudo-process before the C<fork> happened caused memory corruption | |
250 | and a crash in the child pseudo-process (and therefore OS process). | |
251 | L<[perl #40565]|https://rt.perl.org/Ticket/Display.html?id=40565> | |
252 | ||
253 | =item * | |
254 | ||
255 | Tainted constants evaluated at compile time no longer cause unrelated | |
256 | statements to become tainted. | |
257 | L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669> | |
258 | ||
259 | =item * | |
260 | ||
261 | Calling C<write> on a format with a C<^**> field could produce a panic in | |
262 | sv_chop() if there were insufficient arguments or if the variable used to fill | |
263 | the field was empty. | |
264 | L<[perl #123245]|https://rt.perl.org/Ticket/Display.html?id=123245> | |
265 | ||
266 | =item * | |
267 | ||
268 | In Perl 5.20.0, C<sort CORE::fake> where 'fake' is anything other than a | |
269 | keyword started chopping of the last 6 characters and treating the result as a | |
270 | sort sub name. The previous behaviour of treating "CORE::fake" as a sort sub | |
271 | name has been restored. | |
272 | L<[perl #123410]|https://rt.perl.org/Ticket/Display.html?id=123410> | |
273 | ||
274 | =item * | |
275 | ||
276 | A bug in regular expression patterns that could lead to segfaults and other | |
277 | crashes has been fixed. This occurred only in patterns compiled with C<"/i">, | |
278 | while taking into account the current POSIX locale (this usually means they | |
279 | have to be compiled within the scope of C<S<"use locale">>), and there must be | |
280 | a string of at least 128 consecutive bytes to match. | |
281 | L<[perl #123539]|https://rt.perl.org/Ticket/Display.html?id=123539> | |
282 | ||
283 | =item * | |
284 | ||
285 | C<qr/@array(?{block})/> no longer dies with "Bizarre copy of ARRAY". | |
286 | L<[perl #123344]|https://rt.perl.org/Ticket/Display.html?id=123344> | |
287 | ||
288 | =item * | |
289 | ||
290 | C<gmtime> no longer crashes with not-a-number values. | |
291 | L<[perl #123495]|https://rt.perl.org/Ticket/Display.html?id=123495> | |
292 | ||
293 | =item * | |
294 | ||
295 | Certain syntax errors in substitutions, such as C<< s/${<>{})// >>, would | |
296 | crash, and had done so since Perl 5.10. (In some cases the crash did not start | |
297 | happening until Perl 5.16.) The crash has, of course, been fixed. | |
298 | L<[perl #123542]|https://rt.perl.org/Ticket/Display.html?id=123542> | |
299 | ||
300 | =item * | |
301 | ||
302 | A memory leak in some regular expressions, introduced in Perl 5.20.1, has been | |
303 | fixed. | |
304 | L<[perl #123198]|https://rt.perl.org/Ticket/Display.html?id=123198> | |
305 | ||
306 | =item * | |
307 | ||
308 | C<< formline("@...", "a"); >> would crash. The C<FF_CHECKNL> case in | |
309 | pp_formline() didn't set the pointer used to mark the chop position, which led | |
310 | to the C<FF_MORE> case crashing with a segmentation fault. This has been | |
311 | fixed. | |
312 | L<[perl #123538]|https://rt.perl.org/Ticket/Display.html?id=123538> | |
313 | L<[perl #123622]|https://rt.perl.org/Ticket/Display.html?id=123622> | |
314 | ||
315 | =item * | |
316 | ||
317 | A possible buffer overrun and crash when parsing a literal pattern during | |
318 | regular expression compilation has been fixed. | |
319 | L<[perl #123604]|https://rt.perl.org/Ticket/Display.html?id=123604> | |
320 | ||
321 | =back | |
322 | ||
323 | =head1 Known Problems | |
324 | ||
325 | =over 4 | |
326 | ||
327 | =item * | |
328 | ||
329 | It is a known bug that lexical subroutines cannot be used as the C<SUBNAME> | |
330 | argument to C<sort>. This will be fixed in a future version of Perl. | |
331 | ||
332 | =back | |
333 | ||
334 | =head1 Errata From Previous Releases | |
335 | ||
336 | =over 4 | |
337 | ||
338 | =item * | |
339 | ||
340 | A regression has been fixed that was introduced in Perl 5.20.0 (fixed in Perl | |
341 | 5.20.1 as well as here) in which a UTF-8 encoded regular expression pattern | |
342 | that contains a single ASCII lowercase letter does not match its uppercase | |
343 | counterpart. | |
344 | L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655> | |
345 | ||
346 | =back | |
347 | ||
348 | =head1 Acknowledgements | |
349 | ||
350 | Perl 5.20.2 represents approximately 5 months of development since Perl 5.20.1 | |
351 | and contains approximately 6,300 lines of changes across 170 files from 34 | |
352 | authors. | |
353 | ||
354 | Excluding auto-generated files, documentation and release tools, there were | |
355 | approximately 1,900 lines of changes to 80 .pm, .t, .c and .h files. | |
356 | ||
357 | Perl continues to flourish into its third decade thanks to a vibrant community | |
358 | of users and developers. The following people are known to have contributed | |
359 | the improvements that became Perl 5.20.2: | |
360 | ||
361 | Aaron Crane, Abigail, Andreas Voegele, Andy Dougherty, Anthony Heading, | |
362 | Aristotle Pagaltzis, Chris 'BinGOs' Williams, Craig A. Berry, Daniel Dragan, | |
363 | Doug Bell, Ed J, Father Chrysostomos, Glenn D. Golden, H.Merijn Brand, Hugo van | |
364 | der Sanden, James E Keenan, Jarkko Hietaniemi, Jim Cromie, Karen Etheridge, | |
365 | Karl Williamson, kmx, Matthew Horsfall, Max Maischein, Peter Martini, Rafael | |
366 | Garcia-Suarez, Ricardo Signes, Shlomi Fish, Slaven Rezic, Steffen Müller, | |
367 | Steve Hay, Tadeusz Sośnierz, Tony Cook, Yves Orton, Ævar Arnfjörð | |
368 | Bjarmason. | |
369 | ||
370 | The list above is almost certainly incomplete as it is automatically generated | |
371 | from version control history. In particular, it does not include the names of | |
372 | the (very much appreciated) contributors who reported issues to the Perl bug | |
373 | tracker. | |
374 | ||
375 | Many of the changes included in this version originated in the CPAN modules | |
376 | included in Perl's core. We're grateful to the entire CPAN community for | |
377 | helping Perl to flourish. | |
378 | ||
379 | For a more complete list of all of Perl's historical contributors, please see | |
380 | the F<AUTHORS> file in the Perl source distribution. | |
381 | ||
382 | =head1 Reporting Bugs | |
383 | ||
384 | If you find what you think is a bug, you might check the articles recently | |
385 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at | |
386 | https://rt.perl.org/ . There may also be information at http://www.perl.org/ , | |
387 | the Perl Home Page. | |
388 | ||
389 | If you believe you have an unreported bug, please run the L<perlbug> program | |
390 | included with your release. Be sure to trim your bug down to a tiny but | |
391 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
392 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
393 | ||
394 | If the bug you are reporting has security implications, which make it | |
395 | inappropriate to send to a publicly archived mailing list, then please send it | |
396 | to perl5-security-report@perl.org. This points to a closed subscription | |
397 | unarchived mailing list, which includes all the core committers, who will be | |
398 | able to help assess the impact of issues, figure out a resolution, and help | |
399 | co-ordinate the release of patches to mitigate or fix the problem across all | |
400 | platforms on which Perl is supported. Please only use this address for | |
401 | security issues in the Perl core, not for modules independently distributed on | |
402 | CPAN. | |
403 | ||
404 | =head1 SEE ALSO | |
405 | ||
406 | The F<Changes> file for an explanation of how to view exhaustive details on | |
407 | what changed. | |
408 | ||
409 | The F<INSTALL> file for how to build Perl. | |
410 | ||
411 | The F<README> file for general stuff. | |
412 | ||
413 | The F<Artistic> and F<Copying> files for copyright information. | |
414 | ||
415 | =cut |