This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Changes for 5.21.1 -> 5.21.2.
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.21.2
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.21.1 release and the 5.21.2
10 release.
11
12 If you are upgrading from an earlier release such as 5.21.0, first read
13 L<perl5211delta>, which describes differences between 5.21.0 and 5.21.1.
14
15 =head1 Core Enhancements
16
17 =head2 Better heuristics on older platforms for determining locale UTF8ness
18
19 On platforms that implement neither the C99 standard nor the POSIX 2001
20 standard, determining if the current locale is UTF8 or not depends on
21 heuristics.  These are improved in this release.
22
23 =head1 Security
24
25 =head2 Perl is now always compiled with -D_FORTIFY_SOURCE=2 if available
26
27 The 'code hardening' option called C<_FORTIFY_SOURCE>, available in
28 gcc 4.*, is now always used for compiling Perl, if available.
29
30 Note that this isn't necessarily a huge step since in many platforms
31 the step had already been taken several years ago: many Linux
32 distributions (like Fedora) have been using this option for Perl,
33 and OS X has enforced the same for many years.
34
35
36 =head1 Deprecations
37
38 =head2 C<< /\C/ >> character class
39
40 This character class, which matches a single byte, even if it appears
41 in a multi-byte character has been deprecated. Matching single bytes
42 in a multi-byte character breaks encapsulation, and can corrupt utf8
43 strings.
44
45 =head1 Performance Enhancements
46
47 =over 4
48
49 =item *
50
51 Refactoring of C<< pp_tied >> and CC<< pp_ref >> for small improvements.
52
53 =item *
54
55 Pathtools don't try to load XS on miniperl.
56
57 =item *
58
59 A typo fix reduces the size of the C<< OP >> structure.
60
61 =item *
62
63 Hash lookups where the key is a constant is faster.
64
65 =back
66
67 =head1 Modules and Pragmata
68
69 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
70 go here.  If Module::CoreList is updated, generate an initial draft of the
71 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
72 for important changes should then be added by hand.  In an ideal world,
73 dual-life modules would have a F<Changes> file that could be cribbed.
74
75 [ Within each section, list entries as a =item entry ]
76
77 =head2 New Modules and Pragmata
78
79 =over 4
80
81 =item *
82
83 XXX
84
85 =back
86
87 =head2 Updated Modules and Pragmata
88
89 =over 4
90
91 =item *
92
93 L<ExtUtils::Manifest> has been upgraded to 1.64.
94
95 =item *
96
97 L<IO::Socket::IP> has been upgraded from version 0.29 to 0.31.
98
99 A better fix for subclassing C<connect()>.
100 L<[cpan #95983]|https://rt.cpan.org/Ticket/Display.html?id=95983>
101 L<[cpan #97050]|https://rt.cpan.org/Ticket/Display.html?id=97050>
102
103 =item *
104
105 L<Math::BigInt> has been upgraded from version 1.9995 to 1.9996.
106
107 Correct handling of subclasses.
108 L<[cpan #96254]|https://rt.cpan.org/Ticket/Display.html?id=96254>
109 L<[cpan #96329]|https://rt.cpan.org/Ticket/Display.html?id=96329>
110
111 =item *
112
113 L<Module::CoreList> has been upgraded from version 5.021001_1 to 5.021002.
114
115 =item *
116
117 The PathTools module collection has been upgraded from version 3.48 to
118 3.49.
119
120 =item *
121
122 L<threads> has been upgraded from version 1.94 to 1.95.
123
124 =back
125
126 =head2 Removed Modules and Pragmata
127
128 =over 4
129
130 =item *
131
132 XXX
133
134 =back
135
136 =head1 Documentation
137
138 =head2 Changes to Existing Documentation
139
140 =head3 L<< perlpolicy >>
141
142 =over 4
143
144 =item *
145
146 We now have a code of conduct for the I<< p5p >> mailing list, as documented
147 in L<< perlpolicy/STANDARDS OF CONDUCT >>.
148
149 =back
150
151 =head3 L<< perlfunc >>
152
153 =over 4
154
155 =item *
156
157 Improve documentation of C<< our >>.
158
159 =back
160
161 =head3 L<< perlsyn >>
162
163 =over 4
164
165 =item *
166
167 The empty conditional in C<< for >> and C<< while >> is now documented
168 in L<< perlsyn >>.
169
170 =back
171
172 =head1 Diagnostics
173
174 =head2 New Diagnostics
175
176 =head3 New Warnings
177
178 =over 4
179
180 =item *
181
182 L<Argument "%s" treated as 0 in increment (++)|perldiag/"Argument "%s" treated
183 as 0 in increment (++)">
184
185 (W numeric) The indicated string was fed as an argument to the C<++> operator
186 which expects either a number or a string matching C</^[a-zA-Z]*[0-9]*\z/>.
187 See L<perlop/Auto-increment and Auto-decrement> for details.
188
189 =item *
190
191 L<Redundant argument in %s|perldiag/Redundant argument in %s>
192
193 (W redundant) You called a function with more arguments than other
194 arguments you supplied indicated would be needed. Currently only
195 emitted when a printf-type format required fewer arguments than were
196 supplied, but might be used in the future for e.g. L<perlfunc/pack>.
197
198 The warnings category C<< redundant >> is new. See also [RT #121025]
199
200 =back
201
202 =head1 Configuration and Compilation
203
204 =over 4
205
206 =item *
207
208 A new compilation flag, C<< -DPERL_OP_PARENT >> is available. For details,
209 see the discussion below at L<< /Internal Changes >>.
210
211 =back
212
213 =head1 Testing
214
215 =over 4
216
217 =item *
218
219 C<< test.pl >> now allows C<< plan skip_all => $reason >>, to make it
220 more compatible with C<< Test::More >>.
221
222 =back
223
224 =head1 Platform Support
225
226 =head2 Platform-Specific Notes
227
228 =over 4
229
230 =item Solaris
231
232 Builds on Solaris 10 with C<-Dusedtrace> would fail early since make
233 didn't follow implied dependencies to build C<perldtrace.h>.  Added an
234 explicit dependency to C<depend>.
235 L<[perl #120120]|https://rt.perl.org/Ticket/Display.html?id=120120>
236
237 =back
238
239 =head1 Internal Changes
240
241 =over 4
242
243 =item *
244
245 The following private API functions had their context parameter removed,
246 C<Perl_cast_ulong>,  C<Perl_cast_i32>, C<Perl_cast_iv>,    C<Perl_cast_uv>,
247 C<Perl_cv_const_sv>, C<Perl_mg_find>,  C<Perl_mg_findext>, C<Perl_mg_magical>,
248 C<Perl_mini_mktime>, C<Perl_my_dirfd>, C<Perl_sv_backoff>, C<Perl_utf8_hop>.
249
250 Users of the public API prefix-less calls remain unaffected.
251
252 =item *
253
254 Experimental support for ops in the optree to be able to locate their
255 parent, if any. A general-purpose function, C<< op_sibling_splice() >>
256 allows for general manipulating an C<< op_sibling >> chain. The last op
257 in such a chain is now marked with the field C<< op_lastsib >>.
258
259 A new build define, C<< -DPERL_OP_PARENT >> has been added; if
260 given, it forces the core to use C<< op_lastsib >> to detect the
261 last sibling in a chain, freeing the last C<< op_sibling >> pointer,
262 which then points back to the parent (instead of being C<< NULL >>).
263
264 A C-level C<< op_parent() >> function, and a C<< B >> C<< parent() >> method
265 have been added; under a default build, they return C<< NULL >>, but when
266 C<< -DPERL_OP_PARENT >> has been set, they return the parent of the current op.
267
268 =back
269
270 =head1 Selected Bug Fixes
271
272 =over 4
273
274 =item *
275
276 C<< s///e >> on tainted utf8 strings got C<< pos() >> messed up. This bug,
277 introduced in 5.20, is now fixed. [RT #122148]
278
279 =item *
280
281 A non-word boundary in a regular expression (C<< \B >>) did not always
282 match the end of the string; in particular C<< q{} =~ /\B/ >> did not
283 match. This bug, introduced in perl 5.14, is now fixed. [RT #122090]
284
285 =item *
286
287 C<< " P" =~ /(?=.*P)P/ >> should match, but did not. This is now fixed.
288 [RT #122171].
289
290 =back
291
292 =head1 Acknowledgements
293
294 XXX Generate this with:
295
296   perl Porting/acknowledgements.pl v5.21.1..HEAD
297
298 =head1 Reporting Bugs
299
300 If you find what you think is a bug, you might check the articles recently
301 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
302 https://rt.perl.org/ .  There may also be information at
303 http://www.perl.org/ , the Perl Home Page.
304
305 If you believe you have an unreported bug, please run the L<perlbug> program
306 included with your release.  Be sure to trim your bug down to a tiny but
307 sufficient test case.  Your bug report, along with the output of C<perl -V>,
308 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
309
310 If the bug you are reporting has security implications, which make it
311 inappropriate to send to a publicly archived mailing list, then please send it
312 to perl5-security-report@perl.org.  This points to a closed subscription
313 unarchived mailing list, which includes all the core committers, who will be
314 able to help assess the impact of issues, figure out a resolution, and help
315 co-ordinate the release of patches to mitigate or fix the problem across all
316 platforms on which Perl is supported.  Please only use this address for
317 security issues in the Perl core, not for modules independently distributed on
318 CPAN.
319
320 =head1 SEE ALSO
321
322 The F<Changes> file for an explanation of how to view exhaustive details on
323 what changed.
324
325 The F<INSTALL> file for how to build Perl.
326
327 The F<README> file for general stuff.
328
329 The F<Artistic> and F<Copying> files for copyright information.
330
331 =cut