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