This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
"who be" should be "who are" in perl*delta.pod
[perl5.git] / pod / perl5115delta.pod
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 all the core committers, who are able
310 to help assess the impact of issues, figure out a resolution, and help
311 co-ordinate the release of patches to mitigate or fix the problem across all
312 platforms on which Perl is supported. Please only use this address for
313 security issues in the Perl core, not for modules independently
314 distributed on CPAN.
315
316 =head1 SEE ALSO
317
318 The F<Changes> file for an explanation of how to view exhaustive details
319 on what changed.
320
321 The F<INSTALL> file for how to build Perl.
322
323 The F<README> file for general stuff.
324
325 The F<Artistic> and F<Copying> files for copyright information.
326
327 =cut