This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 8d9dd4b93f
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.19.6
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.19.5 release and the 5.19.6
13 release.
14
15 If you are upgrading from an earlier release such as 5.19.4, first read
16 L<perl5195delta>, which describes differences between 5.19.4 and 5.19.5.
17
18 =head1 Notice
19
20 XXX Any important notices here
21
22 =head1 Core Enhancements
23
24 XXX New core language features go here.  Summarize user-visible core language
25 enhancements.  Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
27
28 [ List each enhancement as a =head2 entry ]
29
30 =head1 Security
31
32 XXX Any security-related notices go here.  In particular, any security
33 vulnerabilities closed should be noted here rather than in the
34 L</Selected Bug Fixes> section.
35
36 [ List each security issue as a =head2 entry ]
37
38 =head1 Incompatible Changes
39
40 XXX For a release on a stable branch, this section aspires to be:
41
42     There are no changes intentionally incompatible with 5.XXX.XXX
43     If any exist, they are bugs, and we request that you submit a
44     report.  See L</Reporting Bugs> below.
45
46 [ List each incompatible change as a =head2 entry ]
47
48 =head1 Deprecations
49
50 XXX Any deprecated features, syntax, modules etc. should be listed here.
51
52 =head2 Module removals
53
54 XXX Remove this section if inapplicable.
55
56 The following modules will be removed from the core distribution in a
57 future release, and will at that time need to be installed from CPAN.
58 Distributions on CPAN which require these modules will need to list them as
59 prerequisites.
60
61 The core versions of these modules will now issue C<"deprecated">-category
62 warnings to alert you to this fact.  To silence these deprecation warnings,
63 install the modules in question from CPAN.
64
65 Note that these are (with rare exceptions) fine modules that you are encouraged
66 to continue to use.  Their disinclusion from core primarily hinges on their
67 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
68 not usually on concerns over their design.
69
70 =over
71
72 =item L<Package::Constants>
73
74 =back
75
76 [ List each other deprecation as a =head2 entry ]
77
78 =head1 Performance Enhancements
79
80 XXX Changes which enhance performance without changing behaviour go here.
81 There may well be none in a stable release.
82
83 [ List each enhancement as a =item entry ]
84
85 =over 4
86
87 =item *
88
89 XXX
90
91 =back
92
93 =head1 Modules and Pragmata
94
95 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
96 go here.  If Module::CoreList is updated, generate an initial draft of the
97 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
98 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
99 below.  A paragraph summary for important changes should then be added by hand.
100 In an ideal world, dual-life modules would have a F<Changes> file that could be
101 cribbed.
102
103 [ Within each section, list entries as a =item entry ]
104
105 =head2 New Modules and Pragmata
106
107 =over 4
108
109 =item *
110
111 XXX
112
113 =back
114
115 =head2 Updated Modules and Pragmata
116
117 =over 4
118
119 =item *
120
121 L<B> has been upgraded from version 1.46 to 1.47.
122
123 C<< B::PMOP->precomp >> now preserves the internal UTF8 flag correctly, so
124 chr 256 remains chr 256, instead of turning into "\xc4\x80".  This allows
125 L<B::Deparse> to deparse Unicode regular expression correctly.
126 [perl #120182]
127
128 =item *
129
130 L<B::Concise> has been upgraded from version 0.99 to 0.991.
131
132 B<-debug> output now includes C<op_other> pointers.
133
134 =item *
135
136 L<B::Deparse> has been upgraded from version 1.23 to 1.24.
137
138 C<s//\(3)/e> is now deparsed in a way that does not issue warnings when
139 parsed again.  [perl #119807]
140
141 =item *
142
143 L<Module::CoreList> has been upgraded from version 3.00 to 3.01.
144
145 The list of Perl versions covered has been updated.
146
147 =item *
148
149 L<PerlIO::scalar> has been upgraded from version 0.17 to 0.18.
150
151 A bug fix in 0.17 caused references to be stringified as soon as a handle
152 to it was opened, even if it was opened only for reading.  It also croaked
153 on read-only references.  This has been fixed.  [perl #119529]
154
155 =item *
156
157 L<Tie::StdHandle> has been upgraded from version 4.3 to 4.4.
158
159 It no longer prints C<$\> twice.  [perl #120202]
160
161 It no longer ignores the offset passed to C<syswrite>.
162
163 =back
164
165 =head2 Removed Modules and Pragmata
166
167 =over 4
168
169 =item *
170
171 XXX
172
173 =back
174
175 =head1 Documentation
176
177 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
178 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
179
180 =head2 New Documentation
181
182 XXX Changes which create B<new> files in F<pod/> go here.
183
184 =head3 L<XXX>
185
186 XXX Description of the purpose of the new file here
187
188 =head2 Changes to Existing Documentation
189
190 XXX Changes which significantly change existing files in F<pod/> go here.
191 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
192 section.
193
194 =head3 L<XXX>
195
196 =over 4
197
198 =item *
199
200 XXX Description of the change here
201
202 =back
203
204 =head1 Diagnostics
205
206 The following additions or changes have been made to diagnostic output,
207 including warnings and fatal error messages.  For the complete list of
208 diagnostic messages, see L<perldiag>.
209
210 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
211 include any changes in L<perldiag> that reconcile it to the C<C> code.
212
213 =head2 New Diagnostics
214
215 XXX Newly added diagnostic messages go under here, separated into New Errors
216 and New Warnings
217
218 =head3 New Errors
219
220 =over 4
221
222 =item *
223
224 XXX L<message|perldiag/"message">
225
226 =back
227
228 =head3 New Warnings
229
230 =over 4
231
232 =item *
233
234 XXX L<message|perldiag/"message">
235
236 =back
237
238 =head2 Changes to Existing Diagnostics
239
240 XXX Changes (i.e. rewording) of diagnostic messages go here
241
242 =over 4
243
244 =item *
245
246 XXX Describe change here
247
248 =back
249
250 =head1 Utility Changes
251
252 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
253 Most of these are built within the directories F<utils> and F<x2p>.
254
255 [ List utility changes as a =head3 entry for each utility and =item
256 entries for each change
257 Use L<XXX> with program names to get proper documentation linking. ]
258
259 =head3 L<XXX>
260
261 =over 4
262
263 =item *
264
265 XXX
266
267 =back
268
269 =head1 Configuration and Compilation
270
271 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
272 go here.  Any other changes to the Perl build process should be listed here.
273 However, any platform-specific changes should be listed in the
274 L</Platform Support> section, instead.
275
276 [ List changes as a =item entry ].
277
278 =over 4
279
280 =item *
281
282 XXX
283
284 =back
285
286 =head1 Testing
287
288 XXX Any significant changes to the testing of a freshly built perl should be
289 listed here.  Changes which create B<new> files in F<t/> go here as do any
290 large changes to the testing harness (e.g. when parallel testing was added).
291 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
292 that they represent may be covered elsewhere.
293
294 [ List each test improvement as a =item entry ]
295
296 =over 4
297
298 =item *
299
300 XXX
301
302 =back
303
304 =head1 Platform Support
305
306 =head2 New Platforms
307
308 =over 4
309
310 =item Synology
311
312 Synology ships its NAS boxes with a lean Linux distribution (DSM) on relative
313 cheap CPU's (like the Marvell Kirkwood mv6282 - ARMv5tel or Freescale QorIQ
314 P1022 ppc - e500v2) not meant for workstations or development. These boxes
315 should build now. The basic problems are the non-standard location for tools.
316
317 =back
318
319 =head2 Discontinued Platforms
320
321 XXX List any platforms that this version of perl no longer compiles on.
322
323 =over 4
324
325 =item XXX-some-platform
326
327 XXX
328
329 =back
330
331 =head2 Platform-Specific Notes
332
333 XXX List any changes for specific platforms.  This could include configuration
334 and compilation changes or changes in portability/compatibility.  However,
335 changes within modules for platforms should generally be listed in the
336 L</Modules and Pragmata> section.
337
338 =over 4
339
340 =item Windows
341
342 Support for building with Visual C++ 2013 has been added.  There are currently
343 two possible test failures (see L<perlwin32/"Testing Perl on Windows">) which
344 will hopefully be resolved soon.
345
346 =item WinCE
347
348 Perl can now be built in one shot with no user intervention on WinCE by running
349 C<nmake -f Makefile.ce all>.
350
351 Support for building with EVC (Embedded Visual C++) 4 has been restored.  Perl
352 can also be built using Smart Devices for Visual C++ 2005 or 2008.
353
354 =back
355
356 =head1 Internal Changes
357
358 XXX Changes which affect the interface available to C<XS> code go here.  Other
359 significant internal changes for future core maintainers should be noted as
360 well.
361
362 [ List each change as a =item entry ]
363
364 =over 4
365
366 =item *
367
368 Compiling with C<-Accflags=-PERL_BOOL_AS_CHAR> now allows C99 and C++
369 compilers to emulate the aliasing of C<bool> to C<char> that perl does for
370 C89 compilers.  [perl #120314]
371
372 =back
373
374 =head1 Selected Bug Fixes
375
376 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
377 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
378
379 [ List each fix as a =item entry ]
380
381 =over 4
382
383 =item *
384
385 Perl 5.18.0 accidentally disallowed C<-bareword> under C<use strict> and
386 C<use integer>.  This has been fixed.  [perl #120288]
387
388 =item *
389
390 C<-a> at the start of a line (or a hyphen with any single letter that is
391 not a filetest operator) no longer produces an erroneous 'Use of "-a"
392 without parentheses is ambiguous' warning.  [perl #120288]
393
394 =item *
395
396 Lvalue context is now properly propagated into bare blocks and C<if> and
397 C<else> blocks in lvalue subroutines.  Previously, arrays and hashes would
398 sometimes incorrectly be flattened when returned in lvalue list context, or
399 "Bizarre copy" errors could occur.  [perl #119797]
400
401 =item *
402
403 Lvalue context is now propagated to the branches of C<||> and C<&&> (and
404 their alphabetic equivalents, C<or> and C<and>).  This means
405 C<foreach (pos $x || pos $y) {...}> now allows C<pos> to be modified
406 through $_.
407
408 =item *
409
410 C<*DB::DB = sub {} if 0> no longer stops Perl's debugging mode from finding
411 C<DB::DB> subs declared thereafter.
412
413 =item *
414
415 C<stat> and C<readline> remember the last handle used; the former
416 for the special C<_> filehandle, the latter for C<${^LAST_FH}>.
417 C<eval "*foo if 0"> where *foo was the last handle passed to C<stat>
418 or C<readline> could cause that handle to be forgotten if the
419 handle were not opened yet.  This has been fixed.
420
421 =item *
422
423 Various cases of C<delete $::{a}>, C<delete $::{ENV}> etc. causing a crash
424 have been fixed.  [perl #54044]
425
426 =item *
427
428 Assigning another typeglob to C<*^R> no longer makes the regular expression
429 engine crash.
430
431 =item *
432
433 C<%{'_<...'}> hashes now set breakpoints on the corresponding C<@{'_<...'}>
434 rather than whichever array C<@DB::dbline> is aliased to.  [perl #119799]
435
436 =item *
437
438 Setting C<$!> to EACCESS before calling C<require> could affect
439 C<require>'s behaviour.  This has been fixed.
440
441 =item *
442
443 The "Can't use \1 to mean $1 in expression" warning message now only occurs
444 on the right-hand (replacement) part of a substitution.  Formerly it could
445 happen in code embedded in the left-hand side, or in any other quote-like
446 operator.
447
448 =item *
449
450 The C<\N> regular expression escape, when used without the curly braces (to
451 mean C<[^\n]>), was ignoring a following C<*> if followed by whitespace
452 under /x.  It had been this way since C<\N> to mean C<[^\n]> was introduced
453 in 5.12.0.
454
455 =item *
456
457 Blessing into a reference (C<bless $thisref, $thatref>) has long been
458 disallowed, but magical scalars for the second like C<$/> and those tied
459 were exempt.  They no longer are.  [perl #119809]
460
461 =back
462
463 =head1 Known Problems
464
465 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
466 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
467 platform specific bugs also go here.
468
469 [ List each fix as a =item entry ]
470
471 =over 4
472
473 =item *
474
475 XXX
476
477 =back
478
479 =head1 Obituary
480
481 XXX If any significant core contributor has died, we've added a short obituary
482 here.
483
484 =head1 Acknowledgements
485
486 XXX Generate this with:
487
488   perl Porting/acknowledgements.pl v5.19.5..HEAD
489
490 =head1 Reporting Bugs
491
492 If you find what you think is a bug, you might check the articles recently
493 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
494 http://rt.perl.org/perlbug/ .  There may also be information at
495 http://www.perl.org/ , the Perl Home Page.
496
497 If you believe you have an unreported bug, please run the L<perlbug> program
498 included with your release.  Be sure to trim your bug down to a tiny but
499 sufficient test case.  Your bug report, along with the output of C<perl -V>,
500 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
501
502 If the bug you are reporting has security implications, which make it
503 inappropriate to send to a publicly archived mailing list, then please send it
504 to perl5-security-report@perl.org.  This points to a closed subscription
505 unarchived mailing list, which includes all the core committers, who will be
506 able to help assess the impact of issues, figure out a resolution, and help
507 co-ordinate the release of patches to mitigate or fix the problem across all
508 platforms on which Perl is supported.  Please only use this address for
509 security issues in the Perl core, not for modules independently distributed on
510 CPAN.
511
512 =head1 SEE ALSO
513
514 The F<Changes> file for an explanation of how to view exhaustive details on
515 what changed.
516
517 The F<INSTALL> file for how to build Perl.
518
519 The F<README> file for general stuff.
520
521 The F<Artistic> and F<Copying> files for copyright information.
522
523 =cut