This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Release engineering work on perldelta
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.19.6
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.19.5 release and the 5.19.6
10 release.
11
12 If you are upgrading from an earlier release such as 5.19.4, first read
13 L<perl5195delta>, which describes differences between 5.19.4 and 5.19.5.
14
15 =head1 Core Enhancements
16
17 =head2 $a and $b warnings exemption
18
19 The special variables $a and $b, used in C<sort>, are now exempt from "used
20 once" warnings, even where C<sort> is not used.  This makes it easier for
21 CPAN modules to provide functions using $a and $b for similar purposes.
22 [perl #120462]
23
24 =head1 Deprecations
25
26 =head2 Module removals
27
28 The following modules will be removed from the core distribution in a
29 future release, and will at that time need to be installed from CPAN.
30 Distributions on CPAN which require these modules will need to list them as
31 prerequisites.
32
33 The core versions of these modules will now issue C<"deprecated">-category
34 warnings to alert you to this fact.  To silence these deprecation warnings,
35 install the modules in question from CPAN.
36
37 Note that these are (with rare exceptions) fine modules that you are encouraged
38 to continue to use.  Their disinclusion from core primarily hinges on their
39 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
40 not usually on concerns over their design.
41
42 =over
43
44 =item L<Package::Constants>
45
46 =back
47
48 =head1 Performance Enhancements
49
50 =over 4
51
52 =item *
53
54 Constant hash key lookups (C<$hash{key}> as opposed to C<$hash{$key}>) have
55 long had the internal hash value computed at compile time, to speed up
56 lookup.  This optimisation has only now been applied to hash slices as
57 well.
58
59 =item *
60
61 Combined C<and> and C<or> operators in void context, like those
62 generated for C<< unless ($a && $b) >> and C<< if ($a || b) >> now
63 short circuit directly to the end of the statement. [perl #120128]
64
65 =back
66
67 =head1 Modules and Pragmata
68
69 =head2 Updated Modules and Pragmata
70
71 =over 4
72
73 =item *
74
75 L<B> has been upgraded from version 1.46 to 1.47.
76
77 C<< B::PMOP->precomp >> now preserves the internal UTF8 flag correctly, so
78 chr 256 remains chr 256, instead of turning into "\xc4\x80".  This allows
79 L<B::Deparse> to deparse Unicode regular expression correctly.
80 [perl #120182]
81
82 C<< B::HV->ARRAY >> now preserves the UTF8 flag on returned hash keys.
83 [perl #120535]
84
85 =item *
86
87 L<B::Concise> has been upgraded from version 0.99 to 0.991.
88
89 B<-debug> output now includes C<op_other> pointers.
90
91 =item *
92
93 L<B::Deparse> has been upgraded from version 1.23 to 1.24.
94
95 C<s//\(3)/e> is now deparsed in a way that does not issue warnings when
96 parsed again.  [perl #119807]
97
98 C<glob(my $x)> is now deparsed correctly, rather than as C<< <my $x> >> or
99 similar.
100
101 C<CORE::glob> is now deparsed correctly with the CORE:: prefix when there
102 is a subroutine named "glob".
103
104 =item *
105
106 L<IO::Select> has been upgraded from version 1.21 to 1.22.
107
108 Removing a closed file handle from an IO::Select object now correctly
109 updates its internal state and returns the correct value.  [perl #75156]
110
111 =item *
112
113 L<Locale::Maketext> has been upgraded from version 1.24 to 1.25.
114
115 An issue with escaped backslashes if the literal is compiled as
116 function argument has been resolved.
117
118 =item *
119
120 L<Module::CoreList> has been upgraded from version 3.00 to 3.01.
121
122 The list of Perl versions covered has been updated.
123
124 =item *
125
126 L<PerlIO::scalar> has been upgraded from version 0.17 to 0.18.
127
128 A bug fix in 0.17 caused references to be stringified as soon as a handle
129 to it was opened, even if it was opened only for reading.  It also croaked
130 on read-only references.  This has been fixed.  [perl #119529]
131
132 =item *
133
134 L<Tie::StdHandle> has been upgraded from version 4.3 to 4.4.
135
136 It no longer prints C<$\> twice.  [perl #120202]
137
138 It no longer ignores the offset passed to C<syswrite>.
139
140 =back
141
142 =head1 Documentation
143
144 =head2 Changes to Existing Documentation
145
146 =over 4
147
148 =item *
149
150 L<perlhacktips> has been updated to include some more examples of C<gdb> usage.
151
152 =item *
153
154 L<perlfunc>:
155
156 C<each>, clarify hash "modify while iterating".
157
158 C<pack>, the documentation for verbatim tables has been clarified.
159
160 =item *
161
162 L<perlre>, the documentation for C</x> and C<(?# comment)> has been expanded and clarified.
163
164 =item *
165
166 L<perllexwarn>, a note has been added to users of C<FATAL> warnings of the risk of upgrades.
167
168 =back
169
170 =head1 Diagnostics
171
172 =head2 Changes to Existing Diagnostics
173
174 =over 4
175
176 =item *
177
178 L<%%s[%s] in scalar context better written as $%s[%s]|perldiag/"%%s[%s] in scalar context better written as $%s[%s]">:
179
180 This warning now occurs for any C<%array[$index]> or C<%hash{key}> known to
181 be in scalar context at compile time.  Previously it was worded "Scalar
182 value %%s[%s] better written as $%s[%s]".
183
184 =item *
185
186 L<Switch condition not recognized in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Switch condition not recognized in regex; marked by <-- HERE in m/%s/">:
187
188 The description for this diagnostic has been extended to cover all cases where the warning may occur.
189 Issues with the positioning of the arrow indicator have also been resolved.
190
191 =back
192
193 =head1 Testing
194
195 =over 4
196
197 =item *
198
199 F<ext/File-Find/t/find.t> has been converted from manual C<print>
200 statements to Test::More functions.  Each test now has a description.
201 [perl #120503]
202
203 =back
204
205 =head1 Platform Support
206
207 =head2 New Platforms
208
209 =over 4
210
211 =item Synology
212
213 Synology ships its NAS boxes with a lean Linux distribution (DSM) on relative
214 cheap CPU's (like the Marvell Kirkwood mv6282 - ARMv5tel or Freescale QorIQ
215 P1022 ppc - e500v2) not meant for workstations or development. These boxes
216 should build now. The basic problems are the non-standard location for tools.
217
218 =back
219
220 =head2 Platform-Specific Notes
221
222 =over 4
223
224 =item Windows
225
226 Support for building with Visual C++ 2013 has been added.  There are currently
227 two possible test failures (see L<perlwin32/"Testing Perl on Windows">) which
228 will hopefully be resolved soon.
229
230 Experimental support for building with Intel C++ Compiler has been added. Only
231 the nmake makefile (win32/Makefile) can be used. A "nmake test" will not pass
232 at this time due to "cpan/CGI/t/url.t".
233
234 =item WinCE
235
236 Perl can now be built in one shot with no user intervention on WinCE by running
237 C<nmake -f Makefile.ce all>.
238
239 Support for building with EVC (Embedded Visual C++) 4 has been restored.  Perl
240 can also be built using Smart Devices for Visual C++ 2005 or 2008.
241
242 =back
243
244 =head1 Internal Changes
245
246 =over 4
247
248 =item *
249
250 Compiling with C<-Accflags=-PERL_BOOL_AS_CHAR> now allows C99 and C++
251 compilers to emulate the aliasing of C<bool> to C<char> that perl does for
252 C89 compilers.  [perl #120314]
253
254 =back
255
256 =head1 Selected Bug Fixes
257
258 =over 4
259
260 =item *
261
262 Perl 5.18.0 accidentally disallowed C<-bareword> under C<use strict> and
263 C<use integer>.  This has been fixed.  [perl #120288]
264
265 =item *
266
267 C<-a> at the start of a line (or a hyphen with any single letter that is
268 not a filetest operator) no longer produces an erroneous 'Use of "-a"
269 without parentheses is ambiguous' warning.  [perl #120288]
270
271 =item *
272
273 Lvalue context is now properly propagated into bare blocks and C<if> and
274 C<else> blocks in lvalue subroutines.  Previously, arrays and hashes would
275 sometimes incorrectly be flattened when returned in lvalue list context, or
276 "Bizarre copy" errors could occur.  [perl #119797]
277
278 =item *
279
280 Lvalue context is now propagated to the branches of C<||> and C<&&> (and
281 their alphabetic equivalents, C<or> and C<and>).  This means
282 C<foreach (pos $x || pos $y) {...}> now allows C<pos> to be modified
283 through $_.
284
285 =item *
286
287 C<*DB::DB = sub {} if 0> no longer stops Perl's debugging mode from finding
288 C<DB::DB> subs declared thereafter.
289
290 =item *
291
292 C<stat> and C<readline> remember the last handle used; the former
293 for the special C<_> filehandle, the latter for C<${^LAST_FH}>.
294 C<eval "*foo if 0"> where *foo was the last handle passed to C<stat>
295 or C<readline> could cause that handle to be forgotten if the
296 handle were not opened yet.  This has been fixed.
297
298 =item *
299
300 Various cases of C<delete $::{a}>, C<delete $::{ENV}> etc. causing a crash
301 have been fixed.  [perl #54044]
302
303 =item *
304
305 Assigning another typeglob to C<*^R> no longer makes the regular expression
306 engine crash.
307
308 =item *
309
310 C<%{'_<...'}> hashes now set breakpoints on the corresponding C<@{'_<...'}>
311 rather than whichever array C<@DB::dbline> is aliased to.  [perl #119799]
312
313 =item *
314
315 Setting C<$!> to EACCESS before calling C<require> could affect
316 C<require>'s behaviour.  This has been fixed.
317
318 =item *
319
320 The "Can't use \1 to mean $1 in expression" warning message now only occurs
321 on the right-hand (replacement) part of a substitution.  Formerly it could
322 happen in code embedded in the left-hand side, or in any other quote-like
323 operator.
324
325 =item *
326
327 The C<\N> regular expression escape, when used without the curly braces (to
328 mean C<[^\n]>), was ignoring a following C<*> if followed by whitespace
329 under /x.  It had been this way since C<\N> to mean C<[^\n]> was introduced
330 in 5.12.0.
331
332 =item *
333
334 Blessing into a reference (C<bless $thisref, $thatref>) has long been
335 disallowed, but magical scalars for the second like C<$/> and those tied
336 were exempt.  They no longer are.  [perl #119809]
337
338 =item *
339
340 Blessing into a reference was accidentally allowed in 5.18 if the class
341 argument were a blessed reference with stale method caches (i.e., whose
342 class had had subs defined since the last method call).  They are
343 disallowed once more, as in 5.16.
344
345 =item *
346
347 An undefined lexical sub used as an inherited method no longer crashes.
348
349 =item *
350
351 C<< $x->{key} >> where $x was declared as C<my Class $x> no longer crashes
352 if a Class::FIELDS subroutine stub has been declared.
353
354 =item *
355
356 C<@$obj{'key'}> and C<${$obj}{key}> used to be exempt from compile-time
357 field checking ("No such class field"; see L<fields>) but no longer are.
358
359 =item *
360
361 That compile-time field checking also applies now to the C<%$obj{'key'}>
362 syntax, added recently in Perl 5.19.4.
363
364 =item *
365
366 A nonexistent array element with a large index passed to a subroutine that
367 ties the array and then tries to access the element no longer results in a
368 crash.
369
370 =item *
371
372 Declaring a subroutine stub named NEGATIVE_INDICES no longer makes negative
373 array indices crash when the current package is a tied array class.
374
375 =item *
376
377 Declaring a C<require>, C<glob>, or C<do> subroutine stub in the
378 CORE::GLOBAL:: package no longer makes compilation of calls to the
379 corresponding functions crash.
380
381 =item *
382
383 Aliasing CORE::GLOBAL:: functions to constants stopped working in Perl 5.10
384 but has now been fixed.
385
386 =item *
387
388 When C<`...`> or C<qx/.../> calls a C<readpipe> override, double-quotish
389 interpolation now happens, as is the case when there is no override.
390 Previously, the presence of an override would make these quote-like
391 operators act like C<q{}>, suppressing interpolation.  [perl #115330]
392
393 =item *
394
395 C<<<`...`> here-docs (with backticks as the delimiters) now call
396 C<readpipe> overrides.  [perl #119827]
397
398 =item *
399
400 The presence of a lexical sub named "CORE" no longer stops the CORE::
401 prefix from working.
402
403 =item *
404
405 C<&CORE::exit()> and C<&CORE::die()> now respect L<vmsish> hints.
406
407 =item *
408
409 Undefining a glob that triggers a DESTROY method that undefines the same
410 glob is now safe.  It used to produce "Attempt to free unreferenced glob
411 pointer" warnings and leak memory.
412
413 =item *
414
415 If subroutine redefinition (C<eval 'sub foo{}'> or C<newXS> for XS code)
416 triggers a DESTROY method on the sub that is being redefined, and that
417 method assigns a subroutine to the same slot (C<*foo = sub {}>), C<$_[0]>
418 is no longer left pointing to a freed scalar.  Now DESTROY is delayed until
419 the new subroutine has been installed.
420
421 =item *
422
423 C<s///>, C<tr///> and C<y///> now work when a wide character is used as the
424 delimiter.  [perl #120463]
425
426 =item *
427
428 On Windows, perl no longer calls CloseHandle() on a socket handle.  This makes
429 debugging easier on Windows by removing certain irrelevant bad handle
430 exceptions.  It also fixes a race condition that made socket functions randomly
431 fail in a Perl process with multiple OS threads, and possible test failures in
432 F<dist/IO/t/cachepropagate-tcp.t>.  [perl #120091/118059]
433
434 =item *
435
436 Some cases of unterminated (?...) sequences in regular expressions (e.g.,
437 C</(?</>) have been fixed to produce the proper error message instead of
438 "panic: memory wrap".  Other cases (e.g., C</(?(/>) have yet to be fixed.
439
440 =item *
441
442 Strange vars like ties, overloads, or stringified refs (and in recent
443 perls, pure NOK vars) would generally do the wrong thing in formats
444 when the var is treated as a string and repeatedly chopped, as in
445 ^<<<~~ and similar. This has now been resolved.
446
447 =back
448
449 =head1 Known Problems
450
451 =over 4
452
453 =item *
454
455 C<do CORE()> used to call a sub named "CORE" and treat its return value as
456 a file name to execute.  A bug fix inadvertently caused it to be
457 interpreted as the deprecated "do-SUB" construct.  (Yes, C<do
458 I<bareword>()> is inconsistent.)  This will likely be changed back.
459
460 =back
461
462 =head1 Acknowledgements
463
464 XXX Generate this with:
465
466   perl Porting/acknowledgements.pl v5.19.5..HEAD
467
468 =head1 Reporting Bugs
469
470 If you find what you think is a bug, you might check the articles recently
471 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
472 http://rt.perl.org/perlbug/ .  There may also be information at
473 http://www.perl.org/ , the Perl Home Page.
474
475 If you believe you have an unreported bug, please run the L<perlbug> program
476 included with your release.  Be sure to trim your bug down to a tiny but
477 sufficient test case.  Your bug report, along with the output of C<perl -V>,
478 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
479
480 If the bug you are reporting has security implications, which make it
481 inappropriate to send to a publicly archived mailing list, then please send it
482 to perl5-security-report@perl.org.  This points to a closed subscription
483 unarchived mailing list, which includes all the core committers, who will be
484 able to help assess the impact of issues, figure out a resolution, and help
485 co-ordinate the release of patches to mitigate or fix the problem across all
486 platforms on which Perl is supported.  Please only use this address for
487 security issues in the Perl core, not for modules independently distributed on
488 CPAN.
489
490 =head1 SEE ALSO
491
492 The F<Changes> file for an explanation of how to view exhaustive details on
493 what changed.
494
495 The F<INSTALL> file for how to build Perl.
496
497 The F<README> file for general stuff.
498
499 The F<Artistic> and F<Copying> files for copyright information.
500
501 =cut