Commit | Line | Data |
---|---|---|
fd5868f3 SH |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5221delta - what is new for perl v5.22.1 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.22.0 release and the 5.22.1 | |
10 | release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.20.0, first read | |
13 | L<perl5220delta>, which describes differences between 5.20.0 and 5.22.0. | |
14 | ||
15 | =head1 Incompatible Changes | |
16 | ||
17 | There are no changes intentionally incompatible with 5.20.0 other than the | |
18 | following single exception, which we deemed to be a sensible change to make in | |
19 | order to get the new C<\b{wb}> and (in particular) C<\b{sb}> features sane | |
20 | before people decided they're worthless because of bugs in their Perl 5.22.0 | |
21 | implementation and avoided them in the future. | |
22 | If any others exist, they are bugs, and we request that you submit a report. | |
23 | See L</Reporting Bugs> below. | |
24 | ||
25 | =head2 Bounds Checking Constructs | |
26 | ||
27 | Several bugs, including a segmentation fault, have been fixed with the bounds | |
28 | checking constructs (introduced in Perl 5.22) C<\b{gcb}>, C<\b{sb}>, C<\b{wb}>, | |
29 | C<\B{gcb}>, C<\B{sb}>, and C<\B{wb}>. All the C<\B{}> ones now match an empty | |
30 | string; none of the C<\b{}> ones do. | |
31 | L<[perl #126319]|https://rt.perl.org/Ticket/Display.html?id=126319> | |
32 | ||
33 | =head1 Modules and Pragmata | |
34 | ||
35 | =head2 Updated Modules and Pragmata | |
36 | ||
37 | =over 4 | |
38 | ||
39 | =item * | |
40 | ||
41 | L<Module::CoreList> has been upgraded from version 5.20150520 to 5.20151213. | |
42 | ||
43 | =item * | |
44 | ||
45 | L<PerlIO::scalar> has been upgraded from version 0.22 to 0.23. | |
46 | ||
47 | =item * | |
48 | ||
49 | L<POSIX> has been upgraded from version 1.53 to 1.53_01. | |
50 | ||
51 | If C<POSIX::strerror> was passed C<$!> as its argument then it accidentally | |
52 | cleared C<$!>. This has been fixed. | |
53 | L<[perl #126229]|https://rt.perl.org/Ticket/Display.html?id=126229> | |
54 | ||
55 | =item * | |
56 | ||
57 | L<Storable> has been upgraded from version 2.53 to 2.53_01. | |
58 | ||
59 | =item * | |
60 | ||
61 | L<warnings> has been upgraded from version 1.32 to 1.34. | |
62 | ||
63 | The C<warnings::enabled> example now actually uses C<warnings::enabled>. | |
64 | L<[perl #126051]|https://rt.perl.org/Ticket/Display.html?id=126051> | |
65 | ||
66 | =item * | |
67 | ||
68 | L<Win32> has been upgraded from version 0.51 to 0.52. | |
69 | ||
70 | This has been updated for Windows 8.1, 10 and 2012 R2 Server. | |
71 | ||
72 | =back | |
73 | ||
74 | =head1 Documentation | |
75 | ||
76 | =head2 Changes to Existing Documentation | |
77 | ||
78 | =head3 L<perltie> | |
79 | ||
80 | =over 4 | |
81 | ||
82 | =item * | |
83 | ||
84 | The usage of C<FIRSTKEY> and C<NEXTKEY> has been clarified. | |
85 | ||
86 | =back | |
87 | ||
88 | =head3 L<perlvar> | |
89 | ||
90 | =over 4 | |
91 | ||
92 | =item * | |
93 | ||
94 | The specific true value of C<$!{E...}> is now documented, noting that it is | |
95 | subject to change and not guaranteed. | |
96 | ||
97 | =back | |
98 | ||
99 | =head1 Diagnostics | |
100 | ||
101 | The following additions or changes have been made to diagnostic output, | |
102 | including warnings and fatal error messages. For the complete list of | |
103 | diagnostic messages, see L<perldiag>. | |
104 | ||
105 | =head2 Changes to Existing Diagnostics | |
106 | ||
107 | =over 4 | |
108 | ||
109 | =item * | |
110 | ||
111 | The C<printf> and C<sprintf> builtins are now more careful about the warnings | |
112 | they emit: argument reordering now disables the "redundant argument" warning in | |
113 | all cases. | |
114 | L<[perl #125469]|https://rt.perl.org/Ticket/Display.html?id=125469> | |
115 | ||
116 | =back | |
117 | ||
118 | =head1 Configuration and Compilation | |
119 | ||
120 | =over 4 | |
121 | ||
122 | =item * | |
123 | ||
124 | Using the C<NO_HASH_SEED> define in combination with the default hash algorithm | |
125 | C<PERL_HASH_FUNC_ONE_AT_A_TIME_HARD> resulted in a fatal error while compiling | |
126 | the interpreter, since Perl 5.17.10. This has been fixed. | |
127 | ||
128 | =item * | |
129 | ||
130 | Configuring with ccflags containing quotes (e.g. | |
131 | C<< -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' >>) was broken in Perl 5.22.0 | |
132 | but has now been fixed again. | |
133 | L<[perl #125314]|https://rt.perl.org/Ticket/Display.html?id=125314> | |
134 | ||
135 | =back | |
136 | ||
137 | =head1 Platform Support | |
138 | ||
139 | =head2 Platform-Specific Notes | |
140 | ||
141 | =over 4 | |
142 | ||
143 | =item IRIX | |
144 | ||
145 | =over | |
146 | ||
147 | =item * | |
148 | ||
149 | Under some circumstances IRIX stdio fgetc() and fread() set the errno to | |
150 | C<ENOENT>, which made no sense according to either IRIX or POSIX docs. Errno | |
151 | is now cleared in such cases. | |
152 | L<[perl #123977]|https://rt.perl.org/Ticket/Display.html?id=123977> | |
153 | ||
154 | =item * | |
155 | ||
156 | Problems when multiplying long doubles by infinity have been fixed. | |
157 | L<[perl #126396]|https://rt.perl.org/Ticket/Display.html?id=126396> | |
158 | ||
159 | =item * | |
160 | ||
161 | All tests pass now on IRIX with the default build configuration. | |
162 | ||
163 | =back | |
164 | ||
165 | =back | |
166 | ||
167 | =head1 Selected Bug Fixes | |
168 | ||
169 | =over 4 | |
170 | ||
171 | =item * | |
172 | ||
173 | C<qr/(?[ () ])/> no longer segfaults, giving a syntax error message instead. | |
174 | L<[perl #125805]|https://rt.perl.org/Ticket/Display.html?id=125805> | |
175 | ||
176 | =item * | |
177 | ||
178 | Regular expression possessive quantifier Perl 5.20 regression now fixed. | |
179 | C<qr/>I<PAT>C<{>I<min>,I<max>C<}+>C</> is supposed to behave identically to | |
180 | C<qr/(?E<gt>>I<PAT>C<{>I<min>,I<max>C<})/>. Since Perl 5.20, this didn't work | |
181 | if I<min> and I<max> were equal. | |
182 | L<[perl #125825]|https://rt.perl.org/Ticket/Display.html?id=125825> | |
183 | ||
184 | =item * | |
185 | ||
186 | Certain syntax errors in | |
187 | L<perlrecharclass/Extended Bracketed Character Classes> caused panics instead | |
188 | of the proper error message. This has now been fixed. | |
189 | L<[perl #126481]|https://rt.perl.org/Ticket/Display.html?id=126481> | |
190 | ||
191 | =item * | |
192 | ||
193 | C<< BEGIN <> >> no longer segfaults and properly produces an error message. | |
194 | L<[perl #125341]|https://rt.perl.org/Ticket/Display.html?id=125341> | |
195 | ||
196 | =item * | |
197 | ||
198 | A regression from Perl 5.20 has been fixed, in which some syntax errors in | |
199 | L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> constructs | |
200 | within regular expression patterns could cause a segfault instead of a proper | |
201 | error message. | |
202 | L<[perl #126180]|https://rt.perl.org/Ticket/Display.html?id=126180> | |
203 | ||
204 | =item * | |
205 | ||
206 | Another problem with | |
207 | L<C<(?[...])>|perlrecharclass/Extended Bracketed Character Classes> | |
208 | constructs has been fixed wherein things like C<\c]> could cause panics. | |
209 | L<[perl #126181]|https://rt.perl.org/Ticket/Display.html?id=126181> | |
210 | ||
211 | =item * | |
212 | ||
213 | In Perl 5.22.0, the logic changed when parsing a numeric parameter to the -C | |
214 | option, such that the successfully parsed number was not saved as the option | |
215 | value if it parsed to the end of the argument. | |
216 | L<[perl #125381]|https://rt.perl.org/Ticket/Display.html?id=125381> | |
217 | ||
218 | =item * | |
219 | ||
220 | Warning fatality is now ignored when rewinding the stack. This prevents | |
221 | infinite recursion when the now fatal error also causes rewinding of the stack. | |
222 | L<[perl #123398]|https://rt.perl.org/Ticket/Display.html?id=123398> | |
223 | ||
224 | =item * | |
225 | ||
226 | A crash with C<< %::=(); J->${\"::"} >> has been fixed. | |
227 | L<[perl #125541]|https://rt.perl.org/Ticket/Display.html?id=125541> | |
228 | ||
229 | =item * | |
230 | ||
231 | Nested quantifiers such as C</.{1}??/> should cause perl to throw a fatal | |
232 | error, but were being silently accepted since Perl 5.20.0. This has been | |
233 | fixed. | |
234 | L<[perl #126253]|https://rt.perl.org/Ticket/Display.html?id=126253> | |
235 | ||
236 | =item * | |
237 | ||
238 | Regular expression sequences such as C</(?i/> (and similarly with other | |
239 | recognized flags or combination of flags) should cause perl to throw a fatal | |
240 | error, but were being silently accepted since Perl 5.18.0. This has been | |
241 | fixed. | |
242 | L<[perl #126178]|https://rt.perl.org/Ticket/Display.html?id=126178> | |
243 | ||
244 | =item * | |
245 | ||
246 | A bug in hexadecimal floating point literal support meant that high-order bits | |
247 | could be lost in cases where mantissa overflow was caused by too many trailing | |
248 | zeros in the fractional part. This has been fixed. | |
249 | L<[perl #126582]|https://rt.perl.org/Ticket/Display.html?id=126582> | |
250 | ||
251 | =item * | |
252 | ||
253 | Another hexadecimal floating point bug, causing low-order bits to be lost in | |
254 | cases where the last hexadecimal digit of the mantissa has bits straddling the | |
255 | limit of the number of bits allowed for the mantissa, has also been fixed. | |
256 | L<[perl #126586]|https://rt.perl.org/Ticket/Display.html?id=126586> | |
257 | ||
258 | =item * | |
259 | ||
260 | Further hexadecimal floating point bugs have been fixed: In some circumstances, | |
261 | the C<%a> format specifier could variously lose the sign of the negative zero, | |
262 | fail to display zeros after the radix point with the requested precision, or | |
263 | even lose the radix point after the leftmost hexadecimal digit completely. | |
264 | ||
265 | =item * | |
266 | ||
267 | A crash caused by incomplete expressions within C<< /(?[ ])/ >> (e.g. | |
268 | C<< /(?[[0]+()+])/ >>) has been fixed. | |
269 | L<[perl #126615]|https://rt.perl.org/Ticket/Display.html?id=126615> | |
270 | ||
271 | =back | |
272 | ||
273 | =head1 Acknowledgements | |
274 | ||
275 | Perl 5.22.1 represents approximately 6 months of development since Perl 5.22.0 | |
276 | and contains approximately 19,000 lines of changes across 130 files from 27 | |
277 | authors. | |
278 | ||
279 | Excluding auto-generated files, documentation and release tools, there were | |
280 | approximately 1,700 lines of changes to 44 .pm, .t, .c and .h files. | |
281 | ||
282 | Perl continues to flourish into its third decade thanks to a vibrant community | |
283 | of users and developers. The following people are known to have contributed | |
284 | the improvements that became Perl 5.22.1: | |
285 | ||
286 | Aaron Crane, Abigail, Andy Broad, Aristotle Pagaltzis, Chase Whitener, Chris | |
287 | 'BinGOs' Williams, Craig A. Berry, Daniel Dragan, David Mitchell, Father | |
288 | Chrysostomos, Herbert Breunung, Hugo van der Sanden, James E Keenan, Jan | |
289 | Dubois, Jarkko Hietaniemi, Karen Etheridge, Karl Williamson, Lukas Mai, Matthew | |
290 | Horsfall, Peter Martini, Rafael Garcia-Suarez, Ricardo Signes, Shlomi Fish, | |
291 | Sisyphus, Steve Hay, Tony Cook, Victor Adam. | |
292 | ||
293 | The list above is almost certainly incomplete as it is automatically generated | |
294 | from version control history. In particular, it does not include the names of | |
295 | the (very much appreciated) contributors who reported issues to the Perl bug | |
296 | tracker. | |
297 | ||
298 | Many of the changes included in this version originated in the CPAN modules | |
299 | included in Perl's core. We're grateful to the entire CPAN community for | |
300 | helping Perl to flourish. | |
301 | ||
302 | For a more complete list of all of Perl's historical contributors, please see | |
303 | the F<AUTHORS> file in the Perl source distribution. | |
304 | ||
305 | =head1 Reporting Bugs | |
306 | ||
307 | If you find what you think is a bug, you might check the articles recently | |
308 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at | |
309 | https://rt.perl.org/ . There may also be information at | |
310 | http://www.perl.org/ , the Perl Home Page. | |
311 | ||
312 | If you believe you have an unreported bug, please run the L<perlbug> program | |
313 | included with your release. Be sure to trim your bug down to a tiny but | |
314 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
315 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
316 | ||
317 | If the bug you are reporting has security implications, which make it | |
318 | inappropriate to send to a publicly archived mailing list, then please send it | |
319 | to perl5-security-report@perl.org. This points to a closed subscription | |
320 | unarchived mailing list, which includes all the core committers, who will be | |
321 | able to help assess the impact of issues, figure out a resolution, and help | |
322 | co-ordinate the release of patches to mitigate or fix the problem across all | |
323 | platforms on which Perl is supported. Please only use this address for | |
324 | security issues in the Perl core, not for modules independently distributed on | |
325 | CPAN. | |
326 | ||
327 | =head1 SEE ALSO | |
328 | ||
329 | The F<Changes> file for an explanation of how to view exhaustive details on | |
330 | what changed. | |
331 | ||
332 | The F<INSTALL> file for how to build Perl. | |
333 | ||
334 | The F<README> file for general stuff. | |
335 | ||
336 | The F<Artistic> and F<Copying> files for copyright information. | |
337 | ||
338 | =cut |