| 1 | =encoding utf8 |
| 2 | |
| 3 | =head1 NAME |
| 4 | |
| 5 | perl5121delta - what is new for perl v5.12.1 |
| 6 | |
| 7 | =head1 DESCRIPTION |
| 8 | |
| 9 | This document describes differences between the 5.12.0 release and |
| 10 | the 5.12.1 release. |
| 11 | |
| 12 | If you are upgrading from an earlier release such as 5.10.1, first read |
| 13 | L<perl5120delta>, which describes differences between 5.10.1 and |
| 14 | 5.12.0. |
| 15 | |
| 16 | =head1 Incompatible Changes |
| 17 | |
| 18 | There are no changes intentionally incompatible with 5.12.0. If any |
| 19 | incompatibilities with 5.12.0 exist, they are bugs. Please report them. |
| 20 | |
| 21 | =head1 Core Enhancements |
| 22 | |
| 23 | Other than the bug fixes listed below, there should be no user-visible |
| 24 | changes to the core language in this release. |
| 25 | |
| 26 | =head1 Modules and Pragmata |
| 27 | |
| 28 | =head2 Pragmata Changes |
| 29 | |
| 30 | =over |
| 31 | |
| 32 | =item * |
| 33 | |
| 34 | We fixed exporting of C<is_strict> and C<is_lax> from L<version>. |
| 35 | |
| 36 | These were being exported with a wrapper that treated them as method |
| 37 | calls, which caused them to fail. They are just functions, are |
| 38 | documented as such, and should never be subclassed, so this patch |
| 39 | just exports them directly as functions without the wrapper. |
| 40 | |
| 41 | =back |
| 42 | |
| 43 | =head2 Updated Modules |
| 44 | |
| 45 | =over |
| 46 | |
| 47 | =item * |
| 48 | |
| 49 | We upgraded L<CGI.pm> to version 3.49 to incorporate fixes for regressions |
| 50 | introduced in the release we shipped with Perl 5.12.0. |
| 51 | |
| 52 | =item * |
| 53 | |
| 54 | We upgraded L<Pod::Simple> to version 3.14 to get an improvement to \C\<\< \>\> |
| 55 | parsing. |
| 56 | |
| 57 | =item * |
| 58 | |
| 59 | We made a small fix to the L<CPANPLUS> test suite to fix an occasional spurious test failure. |
| 60 | |
| 61 | =item * |
| 62 | |
| 63 | We upgraded L<Safe> to version 2.27 to wrap coderefs returned by C<reval()> and C<rdo()>. |
| 64 | |
| 65 | =back |
| 66 | |
| 67 | =head1 Changes to Existing Documentation |
| 68 | |
| 69 | =over |
| 70 | |
| 71 | =item * |
| 72 | |
| 73 | We added the new maintenance release policy to L<perlpolicy.pod> |
| 74 | |
| 75 | =item * |
| 76 | |
| 77 | We've clarified the multiple-angle-bracket construct in the spec for POD |
| 78 | in L<perlpodspec> |
| 79 | |
| 80 | =item * |
| 81 | |
| 82 | We added a missing explanation for a warning about C<:=> to L<perldiag.pod> |
| 83 | |
| 84 | =item * |
| 85 | |
| 86 | We removed a false claim in L<perlunitut> that all text strings are Unicode strings in Perl. |
| 87 | |
| 88 | =item * |
| 89 | |
| 90 | We updated the Github mirror link in L<perlrepository> to mirrors/perl, not github/perl |
| 91 | |
| 92 | =item * |
| 93 | |
| 94 | We fixed a minor error in L<perl5114delta.pod>. |
| 95 | |
| 96 | =item * |
| 97 | |
| 98 | We replaced a mention of the now-obsolete L<Switch.pm> with F<given>/F<when>. |
| 99 | |
| 100 | =item * |
| 101 | |
| 102 | We improved documentation about F<$sitelibexp/sitecustomize.pl> in L<perlrun>. |
| 103 | |
| 104 | =item * |
| 105 | |
| 106 | We corrected L<perlmodlib.pod> which had unintentionally omitted a number of modules. |
| 107 | |
| 108 | =item * |
| 109 | |
| 110 | We updated the documentation for 'require' in L<perlfunc.pod> relating to putting Perl code in @INC. |
| 111 | |
| 112 | =item * |
| 113 | |
| 114 | We reinstated some erroneously-removed documentation about quotemeta in L<perlfunc>. |
| 115 | |
| 116 | =item * |
| 117 | |
| 118 | We fixed an F<a2p> example in L<perlutil.pod>. |
| 119 | |
| 120 | =item * |
| 121 | |
| 122 | We filled in a blank in L<perlport.pod> with the release date of Perl 5.12. |
| 123 | |
| 124 | =item * |
| 125 | |
| 126 | We fixed broken links in a number of perldelta files. |
| 127 | |
| 128 | =item * |
| 129 | |
| 130 | The documentation for L<Carp.pm> incorrectly stated that the $Carp::Verbose |
| 131 | variable makes cluck generate stack backtraces. |
| 132 | |
| 133 | =item * |
| 134 | |
| 135 | We fixed a number of typos in L<Pod::Functions> |
| 136 | |
| 137 | =item * |
| 138 | |
| 139 | We improved documentation of case-changing functions in L<perlfunc.pod> |
| 140 | |
| 141 | =item * |
| 142 | |
| 143 | We corrected L<perlgpl.pod> to contain the correct version of the GNU |
| 144 | General Public License. |
| 145 | |
| 146 | |
| 147 | |
| 148 | =back |
| 149 | |
| 150 | =head1 Testing |
| 151 | |
| 152 | =head2 Testing Improvements |
| 153 | |
| 154 | =over |
| 155 | |
| 156 | =item * |
| 157 | |
| 158 | F<t/op/sselect.t> is now less prone to clock jitter during timing checks |
| 159 | on Windows. |
| 160 | |
| 161 | sleep() time on Win32 may be rounded down to multiple of |
| 162 | the clock tick interval. |
| 163 | |
| 164 | =item * |
| 165 | |
| 166 | F<lib/blib.t> and F<lib/locale.t>: Fixes for test failures on Darwin/PPC |
| 167 | |
| 168 | =item * |
| 169 | |
| 170 | F<perl5db.t>: Fix for test failures when C<Term::ReadLine::Gnu> is installed. |
| 171 | |
| 172 | =back |
| 173 | |
| 174 | =head1 Installation and Configuration Improvements |
| 175 | |
| 176 | =head2 Configuration improvements |
| 177 | |
| 178 | =over |
| 179 | |
| 180 | =item * |
| 181 | |
| 182 | We updated F<INSTALL> with notes about how to deal with broken F<dbm.h> |
| 183 | on OpenSUSE (and possibly other platforms) |
| 184 | |
| 185 | =back |
| 186 | |
| 187 | =head1 Bug Fixes |
| 188 | |
| 189 | =over 4 |
| 190 | |
| 191 | =item * |
| 192 | |
| 193 | A bug in how we process filetest operations could cause a segfault. |
| 194 | Filetests don't always expect an op on the stack, so we now use |
| 195 | TOPs only if we're sure that we're not stat'ing the _ filehandle. |
| 196 | This is indicated by OPf_KIDS (as checked in ck_ftst). |
| 197 | |
| 198 | See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=74542> |
| 199 | |
| 200 | =item * |
| 201 | |
| 202 | When deparsing a nextstate op that has both a change of package (relative |
| 203 | to the previous nextstate) and a label, the package declaration is now |
| 204 | emitted first, because it is syntactically impermissible for a label to |
| 205 | prefix a package declaration. |
| 206 | |
| 207 | =item * |
| 208 | |
| 209 | XSUB.h now correctly redefines fgets under PERL_IMPLICIT_SYS |
| 210 | |
| 211 | See also: L<http://rt.cpan.org/Public/Bug/Display.html?id=55049> |
| 212 | |
| 213 | =item * |
| 214 | |
| 215 | utf8::is_utf8 now respects GMAGIC (e.g. $1) |
| 216 | |
| 217 | =item * |
| 218 | |
| 219 | XS code using C<fputc()> or C<fputs()>: on Windows could cause an error |
| 220 | due to their arguments being swapped. |
| 221 | |
| 222 | See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=72704> |
| 223 | |
| 224 | =item * |
| 225 | |
| 226 | We fixed a small bug in lex_stuff_pvn() that caused spurious syntax errors |
| 227 | in an obscure situation. It happened when stuffing was performed on the |
| 228 | last line of a file and the line ended with a statement that lacked a |
| 229 | terminating semicolon. |
| 230 | |
| 231 | See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=74006> |
| 232 | |
| 233 | =item * |
| 234 | |
| 235 | We fixed a bug that could cause \N{} constructs followed by a single . to |
| 236 | be parsed incorrectly. |
| 237 | |
| 238 | See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=74978> |
| 239 | |
| 240 | =item * |
| 241 | |
| 242 | |
| 243 | We fixed a bug that caused when(scalar) without an argument not to be |
| 244 | treated as a syntax error. |
| 245 | |
| 246 | See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=74114> |
| 247 | |
| 248 | =item * |
| 249 | |
| 250 | We fixed a regression in the handling of labels immediately before string |
| 251 | evals that was introduced in Perl 5.12.0. |
| 252 | |
| 253 | See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=74290> |
| 254 | |
| 255 | =item * |
| 256 | |
| 257 | We fixed a regression in case-insensitive matching of folded characters |
| 258 | in regular expressions introduced in Perl 5.10.1. |
| 259 | |
| 260 | See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=72998> |
| 261 | |
| 262 | =back |
| 263 | |
| 264 | =head1 Platform Specific Notes |
| 265 | |
| 266 | =head2 HP-UX |
| 267 | |
| 268 | =over |
| 269 | |
| 270 | =item * |
| 271 | |
| 272 | Perl now allows -Duse64bitint without promoting to use64bitall on HP-UX |
| 273 | |
| 274 | =back |
| 275 | |
| 276 | =head2 AIX |
| 277 | |
| 278 | =over |
| 279 | |
| 280 | =item * |
| 281 | |
| 282 | Perl now builds on AIX 4.2 |
| 283 | |
| 284 | The changes required work around AIX 4.2s' lack of support for IPv6, |
| 285 | and limited support for POSIX C<sigaction()>. |
| 286 | |
| 287 | =back |
| 288 | |
| 289 | =head2 FreeBSD 7 |
| 290 | |
| 291 | =over |
| 292 | |
| 293 | =item * |
| 294 | |
| 295 | FreeBSD 7 no longer contains F</usr/bin/objformat>. At build time, |
| 296 | Perl now skips the F<objformat> check for versions 7 and higher and |
| 297 | assumes ELF. |
| 298 | |
| 299 | =back |
| 300 | |
| 301 | =head2 VMS |
| 302 | |
| 303 | =over |
| 304 | |
| 305 | =item * |
| 306 | |
| 307 | It's now possible to build extensions on older (pre 7.3-2) VMS systems. |
| 308 | |
| 309 | DCL symbol length was limited to 1K up until about seven years or |
| 310 | so ago, but there was no particularly deep reason to prevent those |
| 311 | older systems from configuring and building Perl. |
| 312 | |
| 313 | =item * |
| 314 | |
| 315 | We fixed the previously-broken C<-Uuseperlio> build on VMS. |
| 316 | |
| 317 | We were checking a variable that doesn't exist in the non-default |
| 318 | case of disabling perlio. Now we only look at it when it exists. |
| 319 | |
| 320 | =item * |
| 321 | |
| 322 | We fixed the -Uuseperlio command-line option in configure.com. |
| 323 | |
| 324 | Formerly it only worked if you went through all the questions |
| 325 | interactively and explicitly answered no. |
| 326 | |
| 327 | =back |
| 328 | |
| 329 | =head1 Known Problems |
| 330 | |
| 331 | =over |
| 332 | |
| 333 | =item * |
| 334 | |
| 335 | C<List::Util::first> misbehaves in the presence of a lexical C<$_> |
| 336 | (typically introduced by C<my $_> or implicitly by C<given>). The variable |
| 337 | which gets set for each iteration is the package variable C<$_>, not the |
| 338 | lexical C<$_>. |
| 339 | |
| 340 | A similar issue may occur in other modules that provide functions which |
| 341 | take a block as their first argument, like |
| 342 | |
| 343 | foo { ... $_ ...} list |
| 344 | |
| 345 | See also: L<http://rt.perl.org/rt3/Public/Bug/Display.html?id=67694> |
| 346 | |
| 347 | =item * |
| 348 | |
| 349 | C<Module::Load::Conditional> and C<version> have an unfortunate |
| 350 | interaction which can cause C<CPANPLUS> to crash when it encounters |
| 351 | an unparseable version string. Upgrading to C<CPANPLUS> 0.9004 or |
| 352 | C<Module::Load::Conditional> 0.38 from CPAN will resolve this issue. |
| 353 | |
| 354 | =back |
| 355 | |
| 356 | |
| 357 | =head1 Acknowledgements |
| 358 | |
| 359 | Perl 5.12.1 represents approximately four weeks of development since |
| 360 | Perl 5.12.0 and contains approximately 4,000 lines of changes |
| 361 | across 142 files from 28 authors. |
| 362 | |
| 363 | Perl continues to flourish into its third decade thanks to a vibrant |
| 364 | community of users and developers. The following people are known to |
| 365 | have contributed the improvements that became Perl 5.12.1: |
| 366 | |
| 367 | Ævar Arnfjörð Bjarmason, Chris Williams, chromatic, Craig A. Berry, |
| 368 | David Golden, Father Chrysostomos, Florian Ragwitz, Frank Wiegand, |
| 369 | Gene Sullivan, Goro Fuji, H.Merijn Brand, James E Keenan, Jan Dubois, |
| 370 | Jesse Vincent, Josh ben Jore, Karl Williamson, Leon Brocard, Michael |
| 371 | Schwern, Nga Tang Chan, Nicholas Clark, Niko Tyni, Philippe Bruhat, |
| 372 | Rafael Garcia-Suarez, Ricardo Signes, Steffen Mueller, Todd Rinaldo, |
| 373 | Vincent Pit and Zefram. |
| 374 | |
| 375 | =head1 Reporting Bugs |
| 376 | |
| 377 | If you find what you think is a bug, you might check the articles |
| 378 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
| 379 | bug database at http://rt.perl.org/perlbug/ . There may also be |
| 380 | information at http://www.perl.org/ , the Perl Home Page. |
| 381 | |
| 382 | If you believe you have an unreported bug, please run the B<perlbug> |
| 383 | program included with your release. Be sure to trim your bug down |
| 384 | to a tiny but sufficient test case. Your bug report, along with the |
| 385 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
| 386 | analysed by the Perl porting team. |
| 387 | |
| 388 | If the bug you are reporting has security implications, which make it |
| 389 | inappropriate to send to a publicly archived mailing list, then please send |
| 390 | it to perl5-security-report@perl.org. This points to a closed subscription |
| 391 | unarchived mailing list, which includes |
| 392 | all the core committers, who will be able |
| 393 | to help assess the impact of issues, figure out a resolution, and help |
| 394 | co-ordinate the release of patches to mitigate or fix the problem across all |
| 395 | platforms on which Perl is supported. Please only use this address for |
| 396 | security issues in the Perl core, not for modules independently |
| 397 | distributed on CPAN. |
| 398 | |
| 399 | =head1 SEE ALSO |
| 400 | |
| 401 | The F<Changes> file for an explanation of how to view exhaustive details |
| 402 | on what changed. |
| 403 | |
| 404 | The F<INSTALL> file for how to build Perl. |
| 405 | |
| 406 | The F<README> file for general stuff. |
| 407 | |
| 408 | The F<Artistic> and F<Copying> files for copyright information. |
| 409 | |
| 410 | =cut |
| 411 | |