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