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