| 1 | =head1 NAME |
| 2 | |
| 3 | perl5115delta - what is new for perl v5.11.5 |
| 4 | |
| 5 | =head1 DESCRIPTION |
| 6 | |
| 7 | This document describes differences between the 5.11.4 release and |
| 8 | the 5.11.5 release. |
| 9 | |
| 10 | If you are upgrading from an earlier release such as 5.11.3, first read |
| 11 | L<perl5114delta>, which describes differences between 5.11.3 and |
| 12 | 5.11.4. |
| 13 | |
| 14 | =head1 Core Enhancements |
| 15 | |
| 16 | =head2 32-bit limit on substr arguments removed |
| 17 | |
| 18 | The 32-bit limit on C<substr> arguments has now been removed. The full range |
| 19 | of the system's signed and unsigned integers is now available for the C<pos> |
| 20 | and C<len> arguments. |
| 21 | |
| 22 | =head1 Modules and Pragmata |
| 23 | |
| 24 | =head2 Pragmata Changes |
| 25 | |
| 26 | =over 4 |
| 27 | |
| 28 | =item C<version> |
| 29 | |
| 30 | Upgraded from version 0.81 to 0.82. |
| 31 | |
| 32 | The C<is_lax> and C<is_strict> functions can now be optionally exported to the |
| 33 | caller's namespace and are also now documented. |
| 34 | |
| 35 | Undefined version objects are now uninitialized with zero rather than C<undef>. |
| 36 | |
| 37 | =back |
| 38 | |
| 39 | =head2 Updated Modules |
| 40 | |
| 41 | =over 4 |
| 42 | |
| 43 | =item C<B::Debug> |
| 44 | |
| 45 | Upgraded from version 1.11 to 1.12. |
| 46 | |
| 47 | =item C<CPAN> |
| 48 | |
| 49 | Upgraded from version 1.94_53 to 1.94_56. |
| 50 | |
| 51 | This resolves RT #72362, in which CPAN was ignoring C<configure_requires>, |
| 52 | and RT #72348, in which the command C<o conf init> in the CPAN shell could |
| 53 | cause an exception to be thrown. |
| 54 | |
| 55 | This module is also now built in a less specialized way, which resolves a |
| 56 | problem that caused C<make> after C<make clean> to fail, fixing RT #72218. |
| 57 | |
| 58 | =item C<CPANPLUS::Dist::Build> |
| 59 | |
| 60 | Upgraded from version 0.44 to 0.46. |
| 61 | |
| 62 | This makes the prereq resolving fall back to F<_build/> querying if the |
| 63 | C<prereq_data> action fails. |
| 64 | |
| 65 | =item C<Pod::Perldoc> |
| 66 | |
| 67 | Upgraded from version 3.15_01 to 3.15_02. |
| 68 | |
| 69 | =item C<Pod::Plainer> |
| 70 | |
| 71 | Upgraded from version 1.01 to 1.02. |
| 72 | |
| 73 | =item C<Safe> |
| 74 | |
| 75 | Upgraded from version 2.21 to 2.22. |
| 76 | |
| 77 | This resolves RT #72700, in which an exception thrown from a closure was |
| 78 | getting lost. |
| 79 | |
| 80 | =item C<Socket> |
| 81 | |
| 82 | Upgraded from version 1.85 to 1.86. |
| 83 | |
| 84 | This makes the new Socket implementation of C<inet_pton> consistent with the |
| 85 | existing Socket6 implementation of C<inet_pton>, fixing RT #72884. |
| 86 | |
| 87 | =item C<podlators> |
| 88 | |
| 89 | Upgraded from version 2.2.2 to 2.3.1. |
| 90 | |
| 91 | =back |
| 92 | |
| 93 | =head1 Changes to Existing Documentation |
| 94 | |
| 95 | The syntax C<unless (EXPR) BLOCK else BLOCK> is now documented as valid, as |
| 96 | is the syntax C<unless (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK>, |
| 97 | although actually using the latter may not be the best idea for the |
| 98 | readability of your source code. |
| 99 | |
| 100 | =head1 Installation and Configuration Improvements |
| 101 | |
| 102 | =head2 Configuration improvements |
| 103 | |
| 104 | Support for SystemTap's C<dtrace> compatibility layer has been added and an |
| 105 | issue with linking C<miniperl> has been fixed in the process. |
| 106 | |
| 107 | C<less -R> is now used instead of C<less> for C<groff>'s new usage of ANSI |
| 108 | escape codes by setting C<$Config{less}> (and thereby C<$Config{pager}>, |
| 109 | which fixes RT #72156. |
| 110 | |
| 111 | USE_PERL_ATOF is now reported in the compile-time options listed by the C<-V> |
| 112 | switch. |
| 113 | |
| 114 | =head1 Selected Bug Fixes |
| 115 | |
| 116 | =over 4 |
| 117 | |
| 118 | =item * |
| 119 | |
| 120 | Arbitrary whitespace is now allowed between C<NAME> and C<VERSION> in |
| 121 | C<package NAME VERSION;> statements. (Fixes RT #72432) |
| 122 | |
| 123 | =item * |
| 124 | |
| 125 | A panic caused by trying to load C<charnames> when the parser is already in |
| 126 | error (e.g. by a missing C<my> under C<use strict;>) is now averted. This |
| 127 | was a regression since Perl 5.10.0. (Fixes RT #72590) |
| 128 | |
| 129 | =item * |
| 130 | |
| 131 | Reading C<$!> no longer causes a SEGV for out of range C<errno> values. (Fixes |
| 132 | RT #72850) |
| 133 | |
| 134 | =item * |
| 135 | |
| 136 | A possible SEGV in C</\N{...}/> has been fixed. This was a regression since |
| 137 | Perl 5.10. |
| 138 | |
| 139 | =item * |
| 140 | |
| 141 | A possible SEGV when freeing a scalar that was upgraded to an C<SVt_REGEXP> |
| 142 | type from a simple(r) scalar has been fixed. |
| 143 | |
| 144 | =item * |
| 145 | |
| 146 | A type conversion bug in C<gmtime64> that caused it to break around C<2**48> |
| 147 | has been fixed. |
| 148 | |
| 149 | =item * |
| 150 | |
| 151 | Interpolating a regex that makes use of the C<charnames> pragma will no longer |
| 152 | cause a run-time error. (Fixes RT #56444) |
| 153 | |
| 154 | =item * |
| 155 | |
| 156 | Array references assigned to C<*Foo::ISA> now have the necessary magic added |
| 157 | to them to catch any further updates to the new C<@ISA>. (Fixes RT #72866) |
| 158 | |
| 159 | =item * |
| 160 | |
| 161 | Filehandles are now always blessed into C<IO::File>, which, together with |
| 162 | some suitable manipulation of C<@IO::File::ISA>, fixes a breakage introduced |
| 163 | in Perl 5.11.3 by a change that always blessed filehandles into C<IO::Handle> |
| 164 | rather than checking for C<FileHandle> first. |
| 165 | |
| 166 | =item * |
| 167 | |
| 168 | A change in the behaviour of C<warnings::enabled> and C<warnings::warnif> in |
| 169 | Perl 5.10.0 that wasn't documented at the time is now documented in |
| 170 | L<perl5100delta>. (Fixes RT #62522) |
| 171 | |
| 172 | =item * |
| 173 | |
| 174 | RT #71504 is now fixed by simply skipping the tests that failed on OpenBSD |
| 175 | with ithreads and perlio. |
| 176 | |
| 177 | =back |
| 178 | |
| 179 | =head1 New or Changed Diagnostics |
| 180 | |
| 181 | =over 4 |
| 182 | |
| 183 | =item * |
| 184 | |
| 185 | The fatal error C<Malformed UTF-8 returned by \N> is now produced if the |
| 186 | C<charnames> handler returns malformed UTF-8. |
| 187 | |
| 188 | =item * |
| 189 | |
| 190 | If an unresolved named character or sequence was encountered when compiling a |
| 191 | regex pattern then the fatal error C<\\N{NAME} must be resolved by the lexer> |
| 192 | is now produced. This can happen, for example, when using a single-quotish |
| 193 | context like C<$re = '\N{SPACE}'; $re;>. See L<perldiag> for more examples of |
| 194 | how the lexer can get bypassed. |
| 195 | |
| 196 | =item * |
| 197 | |
| 198 | The fatal error C<Invalid hexadecimal number in \\N{U+...}> will be produced |
| 199 | if the character constant represented by C<...> is not a valid hexadecimal |
| 200 | number. |
| 201 | |
| 202 | =item * |
| 203 | |
| 204 | The new meaning of C<\N> as C<[^\n]> is not valid in a bracketed character |
| 205 | class, just like C<.> in a character class loses its special meaning, and will |
| 206 | cause the fatal error C<\\N in a character class must be a named character: |
| 207 | \\N{...}>. |
| 208 | |
| 209 | =item * |
| 210 | |
| 211 | The rules on what is legal for the C<...> in C<\N{...}> have been tightened |
| 212 | up so that unless the C<...> begins with an alphabetic character and continues |
| 213 | with a combination of alphanumerics, dashes, spaces, parentheses or colons |
| 214 | then the warning C<Deprecated character(s) in \\N{...} starting at '%s'> is |
| 215 | now issued. |
| 216 | |
| 217 | =item * |
| 218 | |
| 219 | The warning C<Using just the first characters returned by \N{}> will be |
| 220 | issued if the C<charnames> handler returns a sequence of characters which |
| 221 | exceeds the limit of the number of characters that can be used. The message |
| 222 | will indicate which characters were used and which were discarded. |
| 223 | |
| 224 | =item * |
| 225 | |
| 226 | Currently, all but the first of the several characters that the C<charnames> |
| 227 | handler may return are discarded when used in a regular expression pattern |
| 228 | bracketed character class. If this happens then the warning C<Using just the |
| 229 | first character returned by \N{} in character class> will be issued. |
| 230 | |
| 231 | =item * |
| 232 | |
| 233 | The warning C<Missing right brace on \\N{} or unescaped left brace after \\N. |
| 234 | Assuming the latter> will be issued if Perl encounters a C<\N{> but doesn't |
| 235 | find a matching C<}>. In this case Perl doesn't know if it was mistakenly |
| 236 | omitted, or if "match non-newline" followed by "match a C<{>" was desired. |
| 237 | It assumes the latter because that is actually a valid interpretation as |
| 238 | written, unlike the other case. If you meant the former, you need to add the |
| 239 | matching right brace. If you did mean the latter, you can silence this |
| 240 | warning by writing instead C<\N\{>. |
| 241 | |
| 242 | =item * |
| 243 | |
| 244 | C<gmtime> and C<localtime> called with numbers smaller than they can reliably |
| 245 | handle will now issue the warnings C<gmtime(%.0f) too small> and |
| 246 | C<localtime(%.0f) too small>. |
| 247 | |
| 248 | =back |
| 249 | |
| 250 | =head1 New Tests |
| 251 | |
| 252 | =over 4 |
| 253 | |
| 254 | =item F<t/op/filehandle.t> |
| 255 | |
| 256 | Tests some suitably portable filetest operators to check that they work as |
| 257 | expected, particularly in the light of some internal changes made in how |
| 258 | filehandles are blessed. |
| 259 | |
| 260 | =item F<t/op/time_loop.t> |
| 261 | |
| 262 | Tests that times greater than C<2**63>, which can now be handed to C<gmtime> |
| 263 | and C<localtime>, do not cause an internal overflow or an excessively long |
| 264 | loop. |
| 265 | |
| 266 | =back |
| 267 | |
| 268 | =head1 Known Problems |
| 269 | |
| 270 | Perl 5.11.5 is a development release leading up to Perl 5.12.0. |
| 271 | Some notable known problems found in 5.11.5 are listed as dependencies |
| 272 | of RT #69710, the Perl 5 version 12 meta-ticket. |
| 273 | |
| 274 | =head1 Acknowledgements |
| 275 | |
| 276 | Perl 5.11.5 represents approximately one month of development since |
| 277 | Perl 5.11.4 and contains 9618 lines of changes across 151 files |
| 278 | from 33 authors and committers: |
| 279 | |
| 280 | E<AElig>var ArnfjE<ouml>rE<eth> Bjarmason, Abigail, brian d foy, Chris |
| 281 | Williams, David Golden, David Mitchell, Eric Brine, Frank Wiegand, Gisle |
| 282 | Aas, H.Merijn Brand, Jan Dubois, Jesse Vincent, Jim Cromie, John Peacock, |
| 283 | Josh ben Jore, Karl Williamson, Marcus Holland-Moritz, Michael G Schwern, |
| 284 | Nicholas Clark, Offer Kaye, Philippe Bruhat (BooK), Rafael Garcia-Suarez, |
| 285 | Reini Urban, Ricardo Signes, Robin Barker, Slaven Rezic, Steffen Mueller, |
| 286 | Steve Hay, Steve Peters, Tim Bunce, Todd Rinaldo, Tony Cook and |
| 287 | Vincent Pit. |
| 288 | |
| 289 | Many of the changes included in this version originated in the CPAN |
| 290 | modules included in Perl's core. We're grateful to the entire CPAN |
| 291 | community for helping Perl to flourish. |
| 292 | |
| 293 | =head1 Reporting Bugs |
| 294 | |
| 295 | If you find what you think is a bug, you might check the articles |
| 296 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
| 297 | bug database at http://rt.perl.org/perlbug/ . There may also be |
| 298 | information at http://www.perl.org/ , the Perl Home Page. |
| 299 | |
| 300 | If you believe you have an unreported bug, please run the B<perlbug> |
| 301 | program included with your release. Be sure to trim your bug down |
| 302 | to a tiny but sufficient test case. Your bug report, along with the |
| 303 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
| 304 | analyzed by the Perl porting team. |
| 305 | |
| 306 | If the bug you are reporting has security implications, which make it |
| 307 | inappropriate to send to a publicly archived mailing list, then please send |
| 308 | it to perl5-security-report@perl.org. This points to a closed subscription |
| 309 | unarchived mailing list, which includes |
| 310 | all the core committers, who will be able |
| 311 | to help assess the impact of issues, figure out a resolution, and help |
| 312 | co-ordinate the release of patches to mitigate or fix the problem across all |
| 313 | platforms on which Perl is supported. Please only use this address for |
| 314 | security issues in the Perl core, not for modules independently |
| 315 | distributed on CPAN. |
| 316 | |
| 317 | =head1 SEE ALSO |
| 318 | |
| 319 | The F<Changes> file for an explanation of how to view exhaustive details |
| 320 | on what changed. |
| 321 | |
| 322 | The F<INSTALL> file for how to build Perl. |
| 323 | |
| 324 | The F<README> file for general stuff. |
| 325 | |
| 326 | The F<Artistic> and F<Copying> files for copyright information. |
| 327 | |
| 328 | =cut |