| 1 | =encoding utf8 |
| 2 | |
| 3 | =head1 NAME |
| 4 | |
| 5 | perl5122delta - what is new for perl v5.12.2 |
| 6 | |
| 7 | =head1 DESCRIPTION |
| 8 | |
| 9 | This document describes differences between the 5.12.1 release and |
| 10 | the 5.12.2 release. |
| 11 | |
| 12 | If you are upgrading from an earlier major version, such as 5.10.1, |
| 13 | first read L<perl5120delta>, which describes differences between 5.10.1 |
| 14 | and 5.12.0, as well as L<perl5121delta>, which describes earlier changes |
| 15 | in the 5.12 stable release series. |
| 16 | |
| 17 | =head1 Incompatible Changes |
| 18 | |
| 19 | There are no changes intentionally incompatible with 5.12.1. If any exist, they |
| 20 | are bugs and reports are welcome. |
| 21 | |
| 22 | =head1 Core Enhancements |
| 23 | |
| 24 | Other than the bug fixes listed below, there should be no user-visible |
| 25 | changes to the core language in this release. |
| 26 | |
| 27 | =head1 Modules and Pragmata |
| 28 | |
| 29 | =head2 New Modules and Pragmata |
| 30 | |
| 31 | This release does not introduce any new modules or pragmata. |
| 32 | |
| 33 | =head2 Pragmata Changes |
| 34 | |
| 35 | In the previous release, C<no I<VERSION>;> statements triggered a bug |
| 36 | which could cause L<feature> bundles to be loaded and L<strict> mode to |
| 37 | be enabled unintentionally. |
| 38 | |
| 39 | =head2 Updated Modules |
| 40 | |
| 41 | =over 4 |
| 42 | |
| 43 | =item C<Carp> |
| 44 | |
| 45 | Upgraded from version 1.16 to 1.17. |
| 46 | |
| 47 | L<Carp> now detects incomplete L<caller()|perlfunc/"caller EXPR"> |
| 48 | overrides and avoids using bogus C<@DB::args>. To provide backtraces, Carp |
| 49 | relies on particular behaviour of the caller built-in. Carp now detects |
| 50 | if other code has overridden this with an incomplete implementation, and |
| 51 | modifies its backtrace accordingly. Previously incomplete overrides would |
| 52 | cause incorrect values in backtraces (best case), or obscure fatal errors |
| 53 | (worst case) |
| 54 | |
| 55 | This fixes certain cases of C<Bizarre copy of ARRAY> caused by modules |
| 56 | overriding C<caller()> incorrectly. |
| 57 | |
| 58 | =item C<CPANPLUS> |
| 59 | |
| 60 | A patch to F<cpanp-run-perl> has been backported from CPANPLUS C<0.9004>. This |
| 61 | resolves L<[perl #55964]|http://rt.perl.org/rt3/Ticket/Display.html?id=55964> |
| 62 | and L<[perl #57106]|http://rt.perl.org/rt3/Ticket/Display.html?id=57106>, both |
| 63 | of which related to failures to install distributions that use |
| 64 | C<Module::Install::DSL>. |
| 65 | |
| 66 | =item C<File::Glob> |
| 67 | |
| 68 | A regression which caused a failure to find C<CORE::GLOBAL::glob> after |
| 69 | loading C<File::Glob> to crash has been fixed. Now, it correctly falls back |
| 70 | to external globbing via C<pp_glob>. |
| 71 | |
| 72 | =item C<File::Copy> |
| 73 | |
| 74 | C<File::Copy::copy(FILE, DIR)> is now documented. |
| 75 | |
| 76 | =item C<File::Spec> |
| 77 | |
| 78 | Upgraded from version 3.31 to 3.31_01. |
| 79 | |
| 80 | Several portability fixes were made in C<File::Spec::VMS>: a colon is now |
| 81 | recognized as a delimiter in native filespecs; caret-escaped delimiters are |
| 82 | recognized for better handling of extended filespecs; C<catpath()> returns |
| 83 | an empty directory rather than the current directory if the input directory |
| 84 | name is empty; C<abs2rel()> properly handles Unix-style input. |
| 85 | |
| 86 | =back |
| 87 | |
| 88 | =head1 Utility Changes |
| 89 | |
| 90 | =over |
| 91 | |
| 92 | =item * |
| 93 | |
| 94 | F<perlbug> now always gives the reporter a chance to change the email address it |
| 95 | guesses for them. |
| 96 | |
| 97 | =item * |
| 98 | |
| 99 | F<perlbug> should no longer warn about uninitialized values when using the C<-d> |
| 100 | and C<-v> options. |
| 101 | |
| 102 | =back |
| 103 | |
| 104 | =head1 Changes to Existing Documentation |
| 105 | |
| 106 | =over |
| 107 | |
| 108 | =item * |
| 109 | |
| 110 | The existing policy on backward-compatibility and deprecation has |
| 111 | been added to L<perlpolicy>, along with definitions of terms like |
| 112 | I<deprecation>. |
| 113 | |
| 114 | =item * |
| 115 | |
| 116 | L<perlfunc/srand>'s usage has been clarified. |
| 117 | |
| 118 | =item * |
| 119 | |
| 120 | The entry for L<perlfunc/die> was reorganized to emphasize its |
| 121 | role in the exception mechanism. |
| 122 | |
| 123 | =item * |
| 124 | |
| 125 | Perl's L<INSTALL> file has been clarified to explicitly state that Perl |
| 126 | requires a C89 compliant ANSI C Compiler. |
| 127 | |
| 128 | =item * |
| 129 | |
| 130 | L<IO::Socket>'s C<getsockopt()> and C<setsockopt()> have been documented. |
| 131 | |
| 132 | =item * |
| 133 | |
| 134 | F<alarm()>'s inability to interrupt blocking IO on Windows has been documented. |
| 135 | |
| 136 | =item * |
| 137 | |
| 138 | L<Math::TrulyRandom> hasn't been updated since 1996 and has been removed |
| 139 | as a recommended solution for random number generation. |
| 140 | |
| 141 | =item * |
| 142 | |
| 143 | L<perlrun> has been updated to clarify the behaviour of octal flags to F<perl>. |
| 144 | |
| 145 | =item * |
| 146 | |
| 147 | To ease user confusion, C<$#> and C<$*>, two special variables that were |
| 148 | removed in earlier versions of Perl have been documented. |
| 149 | |
| 150 | =item * |
| 151 | |
| 152 | The version of L<perlfaq> shipped with the Perl core has been updated from the |
| 153 | official FAQ version, which is now maintained in the C<briandfoy/perlfaq> |
| 154 | branch of the Perl repository at L<git://perl5.git.perl.org/perl.git>. |
| 155 | |
| 156 | =back |
| 157 | |
| 158 | =head1 Installation and Configuration Improvements |
| 159 | |
| 160 | =head2 Configuration improvements |
| 161 | |
| 162 | =over |
| 163 | |
| 164 | =item * |
| 165 | |
| 166 | The C<d_u32align> configuration probe on ARM has been fixed. |
| 167 | |
| 168 | =back |
| 169 | |
| 170 | =head2 Compilation improvements |
| 171 | |
| 172 | =over |
| 173 | |
| 174 | =item * |
| 175 | |
| 176 | An "C<incompatible operand types>" error in ternary expressions when building |
| 177 | with C<clang> has been fixed. |
| 178 | |
| 179 | =item * |
| 180 | |
| 181 | Perl now skips setuid C<File::Copy> tests on partitions it detects to be mounted |
| 182 | as C<nosuid>. |
| 183 | |
| 184 | =back |
| 185 | |
| 186 | =head1 Selected Bug Fixes |
| 187 | |
| 188 | =over 4 |
| 189 | |
| 190 | =item * |
| 191 | |
| 192 | A possible segfault in the C<T_PRTOBJ> default typemap has been fixed. |
| 193 | |
| 194 | =item * |
| 195 | |
| 196 | A possible memory leak when using L<caller()|perlfunc/"caller EXPR"> to set |
| 197 | C<@DB::args> has been fixed. |
| 198 | |
| 199 | =item * |
| 200 | |
| 201 | Several memory leaks when loading XS modules were fixed. |
| 202 | |
| 203 | =item * |
| 204 | |
| 205 | C<unpack()> now handles scalar context correctly for C<%32H> and C<%32u>, |
| 206 | fixing a potential crash. C<split()> would crash because the third item |
| 207 | on the stack wasn't the regular expression it expected. C<unpack("%2H", |
| 208 | ...)> would return both the unpacked result and the checksum on the stack, |
| 209 | as would C<unpack("%2u", ...)>. |
| 210 | L<[perl #73814]|http://rt.perl.org/rt3/Ticket/Display.html?id=73814> |
| 211 | |
| 212 | =item * |
| 213 | |
| 214 | Perl now avoids using memory after calling C<free()> in F<pp_require> |
| 215 | when there are CODEREFs in C<@INC>. |
| 216 | |
| 217 | =item * |
| 218 | |
| 219 | A bug that could cause "C<Unknown error>" messages when |
| 220 | "C<call_sv(code, G_EVAL)>" is called from an XS destructor has been fixed. |
| 221 | |
| 222 | =item * |
| 223 | |
| 224 | The implementation of the C<open $fh, 'E<gt>' \$buffer> feature |
| 225 | now supports get/set magic and thus tied buffers correctly. |
| 226 | |
| 227 | =item * |
| 228 | |
| 229 | The C<pp_getc>, C<pp_tell>, and C<pp_eof> opcodes now make room on the |
| 230 | stack for their return values in cases where no argument was passed in. |
| 231 | |
| 232 | =item * |
| 233 | |
| 234 | When matching unicode strings under some conditions inappropriate backtracking would |
| 235 | result in a C<Malformed UTF-8 character (fatal)> error. This should no longer occur. |
| 236 | See L<[perl #75680]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=75680> |
| 237 | |
| 238 | =back |
| 239 | |
| 240 | =head1 Platform Specific Notes |
| 241 | |
| 242 | =head2 AIX |
| 243 | |
| 244 | =over |
| 245 | |
| 246 | =item * |
| 247 | |
| 248 | F<README.aix> has been updated with information about the XL C/C++ V11 compiler |
| 249 | suite. |
| 250 | |
| 251 | =back |
| 252 | |
| 253 | =head2 Windows |
| 254 | |
| 255 | =over |
| 256 | |
| 257 | =item * |
| 258 | |
| 259 | When building Perl with the mingw64 x64 cross-compiler C<incpath>, |
| 260 | C<libpth>, C<ldflags>, C<lddlflags> and C<ldflags_nolargefiles> values |
| 261 | in F<Config.pm> and F<Config_heavy.pl> were not previously not being set |
| 262 | correctly because, with that compiler, the include and lib directories |
| 263 | are not immediately below C<$(CCHOME)>. |
| 264 | |
| 265 | =back |
| 266 | |
| 267 | =head2 VMS |
| 268 | |
| 269 | =over |
| 270 | |
| 271 | =item * |
| 272 | |
| 273 | F<git_version.h> is now installed on VMS. This was an oversight in v5.12.0 which |
| 274 | caused some extensions to fail to build. |
| 275 | |
| 276 | =item * |
| 277 | |
| 278 | Several memory leaks in L<stat()|perlfunc/"stat FILEHANDLE"> have been fixed. |
| 279 | |
| 280 | =item * |
| 281 | |
| 282 | A memory leak in C<Perl_rename()> due to a double allocation has been |
| 283 | fixed. |
| 284 | |
| 285 | =item * |
| 286 | |
| 287 | A memory leak in C<vms_fid_to_name()> (used by C<realpath()> and |
| 288 | C<realname()>) has been fixed. |
| 289 | |
| 290 | =back |
| 291 | |
| 292 | =head1 Acknowledgements |
| 293 | |
| 294 | Perl 5.12.2 represents approximately three months of development since |
| 295 | Perl 5.12.1 and contains approximately 2,000 lines of changes across |
| 296 | 100 files from 36 authors. |
| 297 | |
| 298 | Perl continues to flourish into its third decade thanks to a vibrant |
| 299 | community of users and developers. The following people are known to |
| 300 | have contributed the improvements that became Perl 5.12.2: |
| 301 | |
| 302 | Abigail, Ævar Arnfjörð Bjarmason, Ben Morrow, brian d foy, Brian |
| 303 | Phillips, Chas. Owens, Chris 'BinGOs' Williams, Chris Williams, |
| 304 | Craig A. Berry, Curtis Jewell, Dan Dascalescu, David Golden, David |
| 305 | Mitchell, Father Chrysostomos, Florian Ragwitz, George Greer, H.Merijn |
| 306 | Brand, Jan Dubois, Jesse Vincent, Jim Cromie, Karl Williamson, Lars |
| 307 | Dɪᴇᴄᴋᴏᴡ 迪拉斯, Leon Brocard, Maik Hentsche, Matt S Trout, |
| 308 | Nicholas Clark, Rafael Garcia-Suarez, Rainer Tammer, Ricardo Signes, |
| 309 | Salvador Ortiz Garcia, Sisyphus, Slaven Rezic, Steffen Mueller, Tony Cook, |
| 310 | Vincent Pit and Yves Orton. |
| 311 | |
| 312 | =head1 Reporting Bugs |
| 313 | |
| 314 | If you find what you think is a bug, you might check the articles |
| 315 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
| 316 | bug database at http://rt.perl.org/perlbug/ . There may also be |
| 317 | information at http://www.perl.org/ , the Perl Home Page. |
| 318 | |
| 319 | If you believe you have an unreported bug, please run the B<perlbug> |
| 320 | program included with your release. Be sure to trim your bug down |
| 321 | to a tiny but sufficient test case. Your bug report, along with the |
| 322 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
| 323 | analysed by the Perl porting team. |
| 324 | |
| 325 | If the bug you are reporting has security implications, which make it |
| 326 | inappropriate to send to a publicly archived mailing list, then please send |
| 327 | it to perl5-security-report@perl.org. This points to a closed subscription |
| 328 | unarchived mailing list, which includes all the core committers, who be able |
| 329 | to help assess the impact of issues, figure out a resolution, and help |
| 330 | co-ordinate the release of patches to mitigate or fix the problem across all |
| 331 | platforms on which Perl is supported. Please only use this address for |
| 332 | security issues in the Perl core, not for modules independently |
| 333 | distributed on CPAN. |
| 334 | |
| 335 | =head1 SEE ALSO |
| 336 | |
| 337 | The F<Changes> file for an explanation of how to view exhaustive details |
| 338 | on what changed. |
| 339 | |
| 340 | The F<INSTALL> file for how to build Perl. |
| 341 | |
| 342 | The F<README> file for general stuff. |
| 343 | |
| 344 | The F<Artistic> and F<Copying> files for copyright information. |
| 345 | |
| 346 | =cut |