Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
13900f93 | 5 | perldelta - what is new for perl v5.21.3 |
c68523cb | 6 | |
238894db | 7 | =head1 DESCRIPTION |
c68523cb | 8 | |
13900f93 | 9 | This document describes differences between the 5.21.2 release and the 5.21.3 |
238894db | 10 | release. |
c68523cb | 11 | |
13900f93 A |
12 | If you are upgrading from an earlier release such as 5.21.1, first read |
13 | L<perl5212delta>, which describes differences between 5.21.1 and 5.21.2. | |
14 | ||
7065301c RS |
15 | =head1 Core Enhancements |
16 | ||
d1f01a63 | 17 | =head2 C<defined(@array = LIST)> is no longer fatal |
7e957246 | 18 | |
d1f01a63 PM |
19 | In 5.21.1, C<defined(@array)> was made fatal. This has been relaxed |
20 | to not die if the argument is assigning to an array. | |
7e957246 | 21 | |
f88f10f5 PM |
22 | =head2 Floating point handling and parsing has been improved |
23 | ||
21f3b41e JH |
24 | Parsing and printing of floating point values has been improved. |
25 | XXX what in addition to hexadecimal floats? if nothing, change the head2. | |
26 | ||
27 | As a completely new feature, hexadecimal floating point literals | |
28 | (like 0x1.23p-4) are now supported, and they can be output with | |
29 | C<printf %a>. | |
f88f10f5 | 30 | |
0346c3a9 | 31 | =head1 Security |
7e957246 | 32 | |
6ab3666b | 33 | =head2 The L<Safe> module could allow outside packages to be replaced |
13900f93 | 34 | |
6ab3666b PM |
35 | Critical bugfix: outside packages could be replaced. L<Safe> has |
36 | been patched to 2.38 to address this. | |
8bdb3f93 | 37 | |
13900f93 | 38 | =head1 Incompatible Changes |
8bdb3f93 | 39 | |
1178d2cf DIM |
40 | =head2 S<C<use UNIVERSAL '...'>> is now a fatal error |
41 | ||
42 | Importing functions from C<UNIVERSAL> has been deprecated since v5.12, and | |
43 | is now a fatal error. S<C<"use UNIVERSAL">> without any arguments is still | |
44 | allowed. | |
45 | ||
7ef8b31d | 46 | =head1 Modules and Pragmata |
f6f3144e | 47 | |
13900f93 | 48 | =head2 Updated Modules and Pragmata |
7065301c | 49 | |
13900f93 | 50 | =over 4 |
7065301c | 51 | |
aac7f82f A |
52 | =item * |
53 | ||
f88f10f5 | 54 | L<B::Debug> has been upgraded from version 1.19 to 1.21. |
b3e82ed1 PM |
55 | |
56 | =item * | |
57 | ||
ca58223b PM |
58 | L<Config::Perl::V> has been upgraded from version 0.20 to 0.22. |
59 | ||
60 | =item * | |
61 | ||
23b03637 PM |
62 | L<CPAN::Meta> has been upgraded from version 2.141520 to 2.142060. |
63 | ||
64 | =item * | |
65 | ||
85e8fb10 PM |
66 | L<CPAN::Meta::Requirements> has been upgraded from version 2.125 to 2.126. |
67 | ||
68 | =item * | |
69 | ||
134f90c2 PM |
70 | L<ExtUtils::CBuilder> was moved from F<dist> to F<cpan>. |
71 | ||
72 | =item * | |
73 | ||
74 | L<ExtUtils::Install> was moved from F<dist> to F<cpan>. | |
75 | ||
76 | =item * | |
77 | ||
7d19f6a1 | 78 | L<ExtUtils::Manifest> has been upgraded from version 1.64 to 1.65. |
134f90c2 | 79 | It was also moved from F<dist> to F<cpan>. |
7d19f6a1 | 80 | |
7d19f6a1 PM |
81 | =item * |
82 | ||
55e8b286 PM |
83 | L<HTTP::Tiny> has been upgraded from version 0.043 to 0.047. |
84 | ||
85 | =item * | |
86 | ||
796f59e8 | 87 | L<perl5db.pl> has been upgraded from version 1.45 to 1.46. |
f7df1a8c | 88 | |
0bb39c26 TC |
89 | =item * |
90 | ||
91 | L<POSIX> has been upgraded from version 1.41 to 1.42. | |
92 | ||
9c97a342 PM |
93 | =item * |
94 | ||
6ab3666b PM |
95 | L<Safe> has been upgraded from version 2.37 to 2.38. |
96 | ||
6ab3666b PM |
97 | =item * |
98 | ||
9c97a342 PM |
99 | L<Socket> has been upgraded from version 2.014 to 2.015. |
100 | ||
13900f93 | 101 | =back |
aac7f82f | 102 | |
13900f93 | 103 | =head1 Documentation |
aac7f82f | 104 | |
13900f93 | 105 | =head2 Changes to Existing Documentation |
6d9b7c7c | 106 | |
2a395b86 PM |
107 | =head3 L<perlexperiment> |
108 | ||
109 | =over 4 | |
110 | ||
111 | =item * | |
112 | ||
113 | Added reference to L<feature>. | |
114 | ||
115 | =back | |
116 | ||
117 | =head3 L<perlguts> | |
118 | ||
119 | =over 4 | |
120 | ||
121 | =item * | |
122 | ||
123 | Details on C level symbols and libperl.t added. | |
124 | ||
125 | =back | |
126 | ||
127 | =head3 L<perlhacktips> | |
128 | ||
129 | =over 4 | |
130 | ||
131 | =item * | |
132 | ||
133 | Recommended replacements for tmpfile, atoi, strtol, and strtoul added. | |
0f4a583b | 134 | |
2a395b86 PM |
135 | =back |
136 | ||
137 | =head3 L<perlop> | |
138 | ||
139 | =over 4 | |
140 | ||
141 | =item * | |
142 | ||
143 | ASCII v. EBCDIC clarifications added. | |
144 | ||
145 | =back | |
146 | ||
147 | =head3 L<perlsec> | |
148 | ||
149 | =over 4 | |
150 | ||
151 | =item * | |
152 | ||
153 | Comments added on algorithmic complexity and tied hashes. | |
154 | ||
155 | =back | |
6d9b7c7c | 156 | |
2a395b86 | 157 | =head3 L<perlvms> |
7f55cec0 | 158 | |
13900f93 | 159 | =over 4 |
7f55cec0 SH |
160 | |
161 | =item * | |
162 | ||
2a395b86 | 163 | Updated documentation on environment and shell interaction in VMS. |
aac7f82f | 164 | |
13900f93 | 165 | =back |
aac7f82f | 166 | |
13900f93 | 167 | =head1 Diagnostics |
091fed7c | 168 | |
13900f93 A |
169 | The following additions or changes have been made to diagnostic output, |
170 | including warnings and fatal error messages. For the complete list of | |
171 | diagnostic messages, see L<perldiag>. | |
902c1f75 | 172 | |
13900f93 | 173 | =head2 New Diagnostics |
2901561d | 174 | |
13900f93 | 175 | =head3 New Errors |
4594cf53 | 176 | |
13900f93 | 177 | =over 4 |
96dcbc37 DD |
178 | |
179 | =item * | |
180 | ||
a1d26ccd PM |
181 | L<Hexadecimal float: internal error|perldiag/"Hexadecimal float: internal error"> |
182 | ||
183 | (F) Something went horribly bad in hexadecimal float handling. | |
184 | ||
185 | =item * | |
186 | ||
187 | L<Hexadecimal float: unsupported long double format|perldiag/"Hexadecimal float: unsupported long double format"> | |
188 | ||
189 | (F) You have configured Perl to use long doubles but | |
190 | the internals of the long double format are unknown, | |
191 | therefore the hexadecimal float output is impossible. | |
7065301c | 192 | |
13900f93 | 193 | =back |
58f25ac1 | 194 | |
13900f93 A |
195 | =head3 New Warnings |
196 | ||
197 | =over 4 | |
58f25ac1 MH |
198 | |
199 | =item * | |
200 | ||
a5873648 PM |
201 | L<Hexadecimal float: exponent overflow|perldiag/"Hexadecimal float: exponent overflow"> |
202 | ||
203 | (W overflow) The hexadecimal floating point has larger exponent | |
204 | than the floating point supports. | |
205 | ||
206 | =item * | |
207 | ||
208 | L<Hexadecimal float: exponent underflow|perldiag/"Hexadecimal float: exponent underflow"> | |
209 | ||
210 | (W overflow) The hexadecimal floating point has smaller exponent | |
211 | than the floating point supports. | |
212 | ||
213 | =item * | |
214 | ||
a5873648 PM |
215 | L<Hexadecimal float: mantissa overflow|perldiag/"Hexadecimal float: mantissa overflow"> |
216 | ||
217 | (W overflow) The hexadecimal floating point literal had more bits in | |
218 | the mantissa (the part between the 0x and the exponent, also known as | |
219 | the fraction or the significand) than the floating point supports. | |
220 | ||
221 | =item * | |
222 | ||
223 | L<Hexadecimal float: precision loss|perldiag/"Hexadecimal float: precision loss"> | |
224 | ||
225 | (W overflow) The hexadecimal floating point had internally more | |
226 | digits than could be output. This can be caused by unsupported | |
227 | long double formats, or by 64-bit integers not being available | |
228 | (needed to retrieve the digits under some configurations). | |
229 | ||
58f25ac1 MH |
230 | =back |
231 | ||
13900f93 | 232 | =head2 Changes to Existing Diagnostics |
12042f24 | 233 | |
b10906fb MH |
234 | =over 4 |
235 | ||
236 | =item * | |
237 | ||
0f4a583b | 238 | C<require> with no argument or undef used to warn about a Null filename; now |
258ced86 | 239 | it dies with C<Missing or undefined argument to require>. |
b10906fb MH |
240 | |
241 | =back | |
242 | ||
13900f93 A |
243 | =head1 Configuration and Compilation |
244 | ||
7065301c | 245 | =over 4 |
24a38d90 RS |
246 | |
247 | =item * | |
248 | ||
bb076206 PM |
249 | MurmurHash64A and MurmurHash64B can now be configured as the internal hash |
250 | function. | |
251 | ||
7065301c RS |
252 | =back |
253 | ||
13900f93 | 254 | =head1 Platform Support |
097675bf | 255 | |
6e97d65d | 256 | =head2 Platform-Specific Notes |
b3211734 | 257 | |
6e97d65d | 258 | =over 4 |
b3211734 | 259 | |
6e97d65d | 260 | =item Android |
7065301c | 261 | |
6e97d65d PM |
262 | Build support has been improved for cross-compiling in general and for |
263 | Android in particular. | |
13900f93 | 264 | |
6e97d65d | 265 | =item Solaris |
7d0ccdba | 266 | |
6e97d65d PM |
267 | C<c99> options have been cleaned up, hints look for C<solstudio> |
268 | as well as C<SUNWspro>, and support for native C<setenv> has been added. | |
7d0ccdba | 269 | |
6e97d65d PM |
270 | =item VMS |
271 | ||
272 | C<finite>, C<finitel>, and C<isfinite> detection has been added to | |
273 | C<configure.com>, environment handling has had some minor changes, and | |
274 | a fix for legacy feature checking status. | |
275 | ||
276 | =item Windows | |
277 | ||
278 | C<%I64d> is now being used instead of C<%lld> for MinGW. | |
7d0ccdba | 279 | |
7065301c RS |
280 | =back |
281 | ||
282 | =head1 Internal Changes | |
283 | ||
13900f93 | 284 | =over 4 |
c9fcb674 | 285 | |
a835cd47 KW |
286 | =item * |
287 | ||
d8bcb4d6 KW |
288 | Added L<perlapi/sync_locale>. |
289 | Changing the program's locale should be avoided by XS code. Nevertheless, | |
290 | certain non-Perl libraries called from XS, such as C<Gtk> do so. When this | |
291 | happens, Perl needs to be told that the locale has changed. Use this function | |
292 | to do so, before returning to Perl. | |
c1284011 | 293 | |
1c43698b PM |
294 | =item * |
295 | ||
296 | Added L<perlapi/grok_atou> as a safer replacement for atoi and strtol. | |
297 | ||
6d9b7c7c | 298 | =back |
c1284011 | 299 | |
6d9b7c7c | 300 | =head1 Selected Bug Fixes |
375f5f06 | 301 | |
0346c3a9 | 302 | =over 4 |
375f5f06 | 303 | |
2884baee MH |
304 | =item * |
305 | ||
0dd816ae TC |
306 | Failing to compile C<use Foo> in an eval could leave a spurious |
307 | C<BEGIN> subroutine definition, which would produce a "Subroutine | |
308 | BEGIN redefined" warning on the next use of C<use>, or other C<BEGIN> | |
309 | block. [perl #122107] | |
2884baee | 310 | |
b756670b FC |
311 | =item * |
312 | ||
313 | C<method { BLOCK } ARGS> syntax now correctly parses the arguments if they | |
314 | begin with an opening brace. [perl #46947] | |
315 | ||
e917e94e PM |
316 | =item * |
317 | ||
318 | External libraries and Perl may have different ideas of what the locale is. | |
319 | This is problematic when parsing version strings if the locale's numeric | |
320 | separator has been changed. Version parsing has been patched to ensure | |
321 | it handles the locales correctly. [perl #121930] | |
322 | ||
26dd5fd6 PM |
323 | =item * |
324 | ||
325 | A bug has been fixed where zero-length assertions and code blocks inside of a | |
0f4a583b | 326 | regex could cause C<pos> to see an incorrect value. [perl #122460] |
26dd5fd6 | 327 | |
13900f93 A |
328 | =back |
329 | ||
13900f93 | 330 | =head1 Acknowledgements |
e831f11a | 331 | |
13900f93 | 332 | XXX Generate this with: |
e831f11a | 333 | |
13900f93 | 334 | perl Porting/acknowledgements.pl v5.21.2..HEAD |
f5b73711 | 335 | |
44691e6f AB |
336 | =head1 Reporting Bugs |
337 | ||
e08634c5 SH |
338 | If you find what you think is a bug, you might check the articles recently |
339 | posted to the comp.lang.perl.misc newsgroup and the perl bug database at | |
238894db | 340 | https://rt.perl.org/ . There may also be information at |
7ef8b31d | 341 | http://www.perl.org/ , the Perl Home Page. |
44691e6f | 342 | |
e08634c5 SH |
343 | If you believe you have an unreported bug, please run the L<perlbug> program |
344 | included with your release. Be sure to trim your bug down to a tiny but | |
345 | sufficient test case. Your bug report, along with the output of C<perl -V>, | |
346 | will be sent off to perlbug@perl.org to be analysed by the Perl porting team. | |
44691e6f AB |
347 | |
348 | If the bug you are reporting has security implications, which make it | |
e08634c5 SH |
349 | inappropriate to send to a publicly archived mailing list, then please send it |
350 | to perl5-security-report@perl.org. This points to a closed subscription | |
351 | unarchived mailing list, which includes all the core committers, who will be | |
352 | able to help assess the impact of issues, figure out a resolution, and help | |
f9001595 | 353 | co-ordinate the release of patches to mitigate or fix the problem across all |
e08634c5 SH |
354 | platforms on which Perl is supported. Please only use this address for |
355 | security issues in the Perl core, not for modules independently distributed on | |
356 | CPAN. | |
44691e6f AB |
357 | |
358 | =head1 SEE ALSO | |
359 | ||
e08634c5 SH |
360 | The F<Changes> file for an explanation of how to view exhaustive details on |
361 | what changed. | |
44691e6f AB |
362 | |
363 | The F<INSTALL> file for how to build Perl. | |
364 | ||
365 | The F<README> file for general stuff. | |
366 | ||
367 | The F<Artistic> and F<Copying> files for copyright information. | |
368 | ||
369 | =cut |