Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
e5998677 | 5 | perldelta - what is new for perl v5.21.11 |
c68523cb | 6 | |
238894db | 7 | =head1 DESCRIPTION |
c68523cb | 8 | |
e5998677 | 9 | This document describes differences between the 5.21.10 release and the 5.21.11 |
238894db | 10 | release. |
c68523cb | 11 | |
e5998677 SH |
12 | If you are upgrading from an earlier release such as 5.21.9, first read |
13 | L<perl52110delta>, which describes differences between 5.21.9 and 5.21.10. | |
2ec11c70 | 14 | |
e5998677 | 15 | =head1 Deprecations |
b9c683b3 | 16 | |
2e4abf26 DG |
17 | =head2 Making all warnings fatal is discouraged |
18 | ||
3e91b205 SH |
19 | The documentation for L<fatal warnings|warnings/Fatal Warnings> notes that |
20 | C<< use warnings FATAL => 'all' >> is discouraged and provides stronger | |
21 | language about the risks of fatal warnings in general. | |
2e4abf26 | 22 | |
e5998677 | 23 | =head1 Modules and Pragmata |
fea59588 | 24 | |
e5998677 | 25 | =head2 Updated Modules and Pragmata |
83a5d6b6 | 26 | |
e5998677 | 27 | =over 4 |
e455391f SH |
28 | |
29 | =item * | |
30 | ||
79a77127 | 31 | L<attributes> has been upgraded from version 0.26 to 0.27. |
53902397 | 32 | |
79a77127 SH |
33 | =item * |
34 | ||
c14a43b7 SH |
35 | L<B> has been upgraded from version 1.57 to 1.58. |
36 | ||
37 | =item * | |
38 | ||
39 | L<B::Deparse> has been upgraded from version 1.34 to 1.35. | |
40 | ||
47cb8ddb SH |
41 | C<< <<>> >> is now correctly deparsed. |
42 | ||
c14a43b7 SH |
43 | =item * |
44 | ||
45 | L<Config::Perl::V> has been upgraded from version 0.23 to 0.24. | |
46 | ||
47 | =item * | |
48 | ||
51c2f40f SH |
49 | L<CPAN> has been upgraded from version 2.10 to 2.11. |
50 | ||
51 | =item * | |
52 | ||
79a77127 | 53 | L<Cwd> has been upgraded from version 3.55 to 3.56. |
83a5d6b6 | 54 | |
abec5bed DIM |
55 | =item * |
56 | ||
57 | L<ExtUtils::Miniperl> has been upgraded from version 1.04 to 1.05. | |
58 | ||
59 | =item * | |
60 | ||
c14a43b7 SH |
61 | L<ExtUtils::ParseXS> has been upgraded from version 3.27 to 3.28. |
62 | ||
63 | =item * | |
64 | ||
65 | L<ExtUtils::Typemaps> has been upgraded from version 3.25 to 3.28. | |
66 | ||
67 | =item * | |
68 | ||
69 | L<File::Spec> has been upgraded from version 3.55 to 3.56. | |
70 | ||
71 | =item * | |
72 | ||
73 | L<if> has been upgraded from version 0.0603 to 0.0604. | |
74 | ||
be39acb2 SH |
75 | The documentation now notes that this module also works with C<no>. |
76 | ||
c14a43b7 SH |
77 | =item * |
78 | ||
60dcce55 SH |
79 | L<IO::Socket::IP> has been upgraded from version 0.36 to 0.37. |
80 | ||
81 | =item * | |
82 | ||
79a77127 SH |
83 | L<Module::CoreList> has been upgraded from version 5.20150320 to 5.20150420. |
84 | ||
3e91b205 | 85 | Updated to cover the latest releases of Perl. Also fixes a fencepost error in |
be39acb2 | 86 | is_core() and copes with versions that do not match x.yyyzzz. |
abec5bed DIM |
87 | |
88 | =item * | |
89 | ||
9749148e TC |
90 | L<perl5db.pl> has been upgraded from 1.48 to 1.49. |
91 | ||
799b8ca7 SH |
92 | The debugger would cause an assertion failure. |
93 | L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127> | |
9749148e TC |
94 | |
95 | =item * | |
96 | ||
abec5bed DIM |
97 | L<PerlIO::mmap> has been upgraded from version 0.013 to 0.014. |
98 | ||
99 | =item * | |
100 | ||
79a77127 | 101 | L<utf8> has been upgraded from version 1.15 to 1.16. |
abec5bed | 102 | |
be39acb2 SH |
103 | Minor documentation update only. |
104 | ||
2e4abf26 DG |
105 | =item * |
106 | ||
107 | L<warnings> has been upgraded from version 1.31 to 1.32. | |
108 | ||
e5998677 | 109 | =back |
83a5d6b6 | 110 | |
e5998677 | 111 | =head1 Documentation |
83a5d6b6 | 112 | |
e5998677 | 113 | =head2 Changes to Existing Documentation |
338906ce | 114 | |
5de148ee SH |
115 | =head3 L<perlebcdic> |
116 | ||
117 | =over 4 | |
118 | ||
119 | =item * | |
120 | ||
121 | This document has been significantly updated in the light of recent | |
122 | improvements to EBCDIC support. | |
123 | ||
124 | =back | |
125 | ||
47cb8ddb SH |
126 | =head3 L<perlfunc> |
127 | ||
128 | =over 4 | |
129 | ||
130 | =item * | |
131 | ||
132 | Mention that C<study()> is currently a no-op. | |
133 | ||
134 | =back | |
135 | ||
136 | =head3 L<perlguts> | |
137 | ||
138 | =over 4 | |
139 | ||
140 | =item * | |
141 | ||
142 | The OOK example has been updated to account for COW changes and a change in the | |
143 | storage of the offset. | |
144 | ||
145 | =back | |
146 | ||
5de148ee SH |
147 | =head3 L<perlhacktips> |
148 | ||
149 | =over 4 | |
150 | ||
151 | =item * | |
152 | ||
3e91b205 SH |
153 | Documentation has been added illustrating the perils of assuming the contents |
154 | of static memory pointed to by the return values of Perl wrappers for C library | |
5de148ee SH |
155 | functions doesn't change. |
156 | ||
157 | =back | |
158 | ||
be39acb2 SH |
159 | =head3 L<perlport> |
160 | ||
161 | =over 4 | |
162 | ||
163 | =item * | |
164 | ||
165 | Out-of-date VMS-specific information has been fixed/simplified. | |
166 | ||
167 | =back | |
168 | ||
169 | =head3 L<perluniintro> | |
170 | ||
171 | =over 4 | |
172 | ||
173 | =item * | |
174 | ||
175 | Advice for how to make sure your strings and regular expression patterns are | |
3e91b205 | 176 | interpreted as Unicode has been revised to account for the new Perl 5.22 EBCDIC |
be39acb2 SH |
177 | handling. |
178 | ||
179 | =back | |
180 | ||
5de148ee | 181 | =head3 L<perlvms> |
83a5d6b6 | 182 | |
e5998677 | 183 | =over 4 |
83a5d6b6 SH |
184 | |
185 | =item * | |
186 | ||
5de148ee | 187 | Out-of-date and/or incorrect material has been removed. |
83a5d6b6 | 188 | |
e5998677 | 189 | =back |
338906ce | 190 | |
a9c3e753 | 191 | =head1 Testing |
cd7bac54 | 192 | |
b5d4d3b9 | 193 | =over 4 |
83b69bfd DD |
194 | |
195 | =item * | |
196 | ||
62ddb720 SH |
197 | F<t/porting/re_context.t> has been added to test that L<utf8> and its |
198 | dependencies only use the subset of the C<$1..$n> capture vars that | |
199 | Perl_save_re_context() is hard-coded to localize, because that function has no | |
200 | efficient way of determining at runtime what vars to localize. | |
13adb056 | 201 | |
b5d4d3b9 | 202 | =back |
391823f2 | 203 | |
a9c3e753 | 204 | =head1 Platform Support |
6c8457e9 | 205 | |
e5998677 | 206 | =head2 Platform-Specific Notes |
2bf83140 | 207 | |
e5998677 | 208 | =over 4 |
041a5927 | 209 | |
86e0176a | 210 | =item Win32 |
69e954a5 | 211 | |
3e91b205 SH |
212 | F<miniperl.exe> is now built with C<-fno-strict-aliasing>, allowing 64-bit |
213 | builds to complete on GCC 4.8. | |
799b8ca7 | 214 | L<[perl #123976]|https://rt.perl.org/Ticket/Display.html?id=123976> |
86e0176a | 215 | |
799b8ca7 SH |
216 | C<test-prep> again depends on C<test-prep-gcc> for GCC builds. |
217 | L<[perl #124221]|https://rt.perl.org/Ticket/Display.html?id=124221> | |
69e954a5 | 218 | |
e5998677 | 219 | =back |
20b5e916 | 220 | |
e5998677 | 221 | =head1 Internal Changes |
d76c14eb | 222 | |
532ecd00 DM |
223 | =over 4 |
224 | ||
225 | =item * | |
d76c14eb | 226 | |
3e91b205 SH |
227 | Perl 5.21.2 introduced a new build option, C<-DPERL_OP_PARENT>, which causes |
228 | the last C<op_sibling> pointer to refer back to the parent rather than being | |
229 | C<NULL>, and where instead a new flag indicates the end of the chain. In this | |
230 | release, the new implementation has been revised; in particular: | |
d547bad0 | 231 | |
e5998677 | 232 | =over 4 |
d547bad0 | 233 | |
8a95d307 FC |
234 | =item * |
235 | ||
532ecd00 | 236 | On C<PERL_OP_PARENT> builds, the C<op_sibling> field has been renamed |
3e91b205 | 237 | C<op_sibparent> to reflect its new dual purpose. Since the intention is that |
532ecd00 DM |
238 | this field should primarily be accessed via macros, this change should be |
239 | transparent for code written to work under C<PERL_OP_PARENT>. | |
240 | ||
241 | =item * | |
242 | ||
3e91b205 SH |
243 | The newly-introduced C<op_lastsib> flag bit has been renamed C<op_moresib> and |
244 | its logic inverted; i.e. it is initialised to zero in a new op, and is changed | |
245 | to 1 when an op gains a sibling. | |
532ecd00 DM |
246 | |
247 | =item * | |
248 | ||
249 | The function C<Perl_op_parent> is now only available on C<PERL_OP_PARENT> | |
3e91b205 | 250 | builds. Using it on a plain build will be a compile-timer error. |
532ecd00 DM |
251 | |
252 | =item * | |
253 | ||
3e91b205 SH |
254 | Three new macros, C<OpMORESIB_set>, C<OpLASTSIB_set>, C<OpMAYBESIB_set> have |
255 | been added, which are intended to be a low-level portable way to set | |
256 | C<op_sibling> / C<op_sibparent> while also updating C<op_moresib>. The first | |
257 | sets the sibling pointer to a new sibling, the second makes the op the last | |
258 | sibling, and the third conditionally does the first or second action. The | |
259 | C<op_sibling_splice()> function is retained as a higher-level interface that | |
260 | can also maintain consistency in the parent at the same time (e.g. by updating | |
261 | C<op_first> and C<op_last> where appropriate). | |
532ecd00 DM |
262 | |
263 | =item * | |
264 | ||
3e91b205 SH |
265 | The macro C<OpSIBLING_set>, added in Perl 5.21.2, has been removed. It didn't |
266 | manipulate C<op_moresib> and has been superseded by C<OpMORESIB_set> et al. | |
532ecd00 DM |
267 | |
268 | =item * | |
269 | ||
3e91b205 SH |
270 | The C<op_sibling_splice> function now accepts a null C<parent> argument where |
271 | the splicing doesn't affect the first or last ops in the sibling chain, and | |
272 | thus where the parent doesn't need to be updated accordingly. | |
532ecd00 DM |
273 | |
274 | =back | |
275 | ||
e5998677 | 276 | =back |
338906ce | 277 | |
e5998677 | 278 | =head1 Selected Bug Fixes |
338906ce | 279 | |
e5998677 | 280 | =over 4 |
338906ce SH |
281 | |
282 | =item * | |
283 | ||
3e91b205 SH |
284 | C<pack("D", $x)> and C<pack("F", $x)> now zero the padding on x86 long double |
285 | builds. GCC 4.8 and later, under some build options, would either overwrite | |
286 | the zero-initialized padding, or bypass the initialized buffer entirely. This | |
287 | caused F<op/pack.t> to fail. | |
799b8ca7 | 288 | L<[perl #123971]|https://rt.perl.org/Ticket/Display.html?id=123971> |
2f304be9 | 289 | |
9749148e TC |
290 | =item * |
291 | ||
3e91b205 SH |
292 | Extending an array cloned from a parent thread could result in "Modification of |
293 | a read-only value attempted" errors when attempting to modify the new elements. | |
799b8ca7 | 294 | L<[perl #124127]|https://rt.perl.org/Ticket/Display.html?id=124127> |
9749148e | 295 | |
47cb8ddb SH |
296 | =item * |
297 | ||
298 | An assertion failure and subsequent crash with C<< *x=<y> >> has been fixed. | |
799b8ca7 | 299 | L<[perl #123790]|https://rt.perl.org/Ticket/Display.html?id=123790> |
47cb8ddb SH |
300 | |
301 | =item * | |
302 | ||
303 | An optimization for state variable initialization introduced in Perl 5.21.6 has | |
304 | been reverted because it was found to exacerbate some other existing buggy | |
799b8ca7 SH |
305 | behaviour. |
306 | L<[perl #124160]|https://rt.perl.org/Ticket/Display.html?id=124160> | |
47cb8ddb SH |
307 | |
308 | =item * | |
309 | ||
310 | The extension of another optimization to cover more ops in Perl 5.21 has also | |
311 | been reverted to its Perl 5.20 state as a temporary fix for regression issues | |
799b8ca7 SH |
312 | that it caused. |
313 | L<[perl #123790]|https://rt.perl.org/Ticket/Display.html?id=123790> | |
47cb8ddb | 314 | |
be39acb2 SH |
315 | =item * |
316 | ||
317 | New bitwise ops added in Perl 5.21.9 accidentally caused C<$^H |= 0x1c020000> | |
318 | to enable all features. This has now been fixed. | |
319 | ||
320 | =item * | |
321 | ||
799b8ca7 SH |
322 | A possible crashing/looping bug has been fixed. |
323 | L<[perl #124099]|https://rt.perl.org/Ticket/Display.html?id=124099> | |
be39acb2 SH |
324 | |
325 | =item * | |
326 | ||
327 | UTF-8 variable names used in array indexes, unquoted UTF-8 HERE-document | |
799b8ca7 SH |
328 | terminators and UTF-8 function names all now work correctly. |
329 | L<[perl #124113]|https://rt.perl.org/Ticket/Display.html?id=124113> | |
be39acb2 SH |
330 | |
331 | =item * | |
332 | ||
333 | Breakage in C<require(VERSION)> (with parentheses), introduced in Perl 5.21.6, | |
799b8ca7 SH |
334 | has been fixed. |
335 | L<[perl #124135]|https://rt.perl.org/Ticket/Display.html?id=124135> | |
be39acb2 SH |
336 | |
337 | =item * | |
338 | ||
339 | Wide char warnings, wrongly raised in UTF-8 locales since Perl 5.21.8, are now | |
799b8ca7 SH |
340 | suppressed. |
341 | L<[perl #123527]|https://rt.perl.org/Ticket/Display.html?id=123527> | |
be39acb2 SH |
342 | |
343 | =item * | |
344 | ||
345 | A subtle bug introduced in Perl 5.21.4 involving UTF-8 in regular expressions | |
3e91b205 | 346 | and sometimes causing a crash has been fixed. A new test script has been added |
799b8ca7 SH |
347 | to test this fix; see under L</Testing>. |
348 | L<[perl #124109]|https://rt.perl.org/Ticket/Display.html?id=124109> | |
be39acb2 SH |
349 | |
350 | =item * | |
351 | ||
352 | A change introduced in Perl 5.21.10 that broke the autovivification CPAN module | |
353 | has been reverted. | |
354 | ||
355 | =item * | |
356 | ||
357 | A bug whereby C<< 'FOO'->f() >> lost the read-only status of C<FOO>, introduced | |
799b8ca7 SH |
358 | in Perl 5.21.7, has been fixed. |
359 | L<[perl #123619]|https://rt.perl.org/Ticket/Display.html?id=123619> | |
be39acb2 SH |
360 | |
361 | =item * | |
362 | ||
363 | A regression in Perl 5.21 in the matching of C</[A-Z]/ai> has been fixed. | |
364 | ||
a9c3e753 | 365 | =back |
ea13b07e | 366 | |
e5998677 | 367 | =head1 Acknowledgements |
0d42058e | 368 | |
2a7a05b4 SH |
369 | Perl 5.21.11 represents approximately 4 weeks of development since Perl 5.21.10 |
370 | and contains approximately 5,800 lines of changes across 240 files from 24 | |
371 | authors. | |
372 | ||
373 | Excluding auto-generated files, documentation and release tools, there were | |
374 | approximately 1,700 lines of changes to 160 .pm, .t, .c and .h files. | |
375 | ||
376 | Perl continues to flourish into its third decade thanks to a vibrant community | |
377 | of users and developers. The following people are known to have contributed | |
378 | the improvements that became Perl 5.21.11: | |
379 | ||
380 | Alex Vandiver, Andreas König, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel | |
381 | Dragan, David Golden, David Mitchell, Father Chrysostomos, H.Merijn Brand, | |
382 | Herbert Breunung, Hugo van der Sanden, James E Keenan, James McCoy, Karl | |
383 | Williamson, Matthew Horsfall, Max Maischein, Nicholas Clark, Rafael | |
384 | Garcia-Suarez, Randy Stauner, Ricardo Signes, Shirakata Kentaro, Steffen | |
385 | Müller, Steve Hay, Tony Cook. | |
386 | ||
387 | The list above is almost certainly incomplete as it is automatically generated | |
388 | from version control history. In particular, it does not include the names of | |
389 | the (very much appreciated) contributors who reported issues to the Perl bug | |
390 | tracker. | |
391 | ||
392 | Many of the changes included in this version originated in the CPAN modules | |
393 | included in Perl's core. We're grateful to the entire CPAN community for | |
394 | helping Perl to flourish. | |
395 | ||
396 | For a more complete list of all of Perl's historical contributors, please see | |
397 | the F<AUTHORS> file in the Perl source distribution. | |
f5b73711 | 398 | |
44691e6f AB |
399 | =head1 Reporting Bugs |
400 | ||
e08634c5 SH |
401 | If you find what you think is a bug, you might check the articles recently |
402 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at | |
e5998677 SH |
403 | https://rt.perl.org/ . There may also be information at |
404 | http://www.perl.org/ , the Perl Home Page. | |
44691e6f | 405 | |
e08634c5 SH |
406 | If you believe you have an unreported bug, please run the L<perlbug> program |
407 | included with your release. Be sure to trim your bug down to a tiny but | |
408 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
409 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
44691e6f AB |
410 | |
411 | If the bug you are reporting has security implications, which make it | |
e08634c5 SH |
412 | inappropriate to send to a publicly archived mailing list, then please send it |
413 | to perl5-security-report@perl.org. This points to a closed subscription | |
414 | unarchived mailing list, which includes all the core committers, who will be | |
415 | able to help assess the impact of issues, figure out a resolution, and help | |
f9001595 | 416 | co-ordinate the release of patches to mitigate or fix the problem across all |
e08634c5 SH |
417 | platforms on which Perl is supported. Please only use this address for |
418 | security issues in the Perl core, not for modules independently distributed on | |
419 | CPAN. | |
44691e6f AB |
420 | |
421 | =head1 SEE ALSO | |
422 | ||
e08634c5 SH |
423 | The F<Changes> file for an explanation of how to view exhaustive details on |
424 | what changed. | |
44691e6f AB |
425 | |
426 | The F<INSTALL> file for how to build Perl. | |
427 | ||
428 | The F<README> file for general stuff. | |
429 | ||
430 | The F<Artistic> and F<Copying> files for copyright information. | |
431 | ||
432 | =cut |