This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 9f125c4af0
[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 XXX
369
370 =back
371
372 =head1 Selected Bug Fixes
373
374 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
375 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
376
377 [ List each fix as a =item entry ]
378
379 =over 4
380
381 =item *
382
383 Perl 5.18.0 accidentally disallowed C<-bareword> under C<use strict> and
384 C<use integer>.  This has been fixed.  [perl #120288]
385
386 =item *
387
388 C<-a> at the start of a line (or a hyphen with any single letter that is
389 not a filetest operator) no longer produces an erroneous 'Use of "-a"
390 without parentheses is ambiguous' warning.  [perl #120288]
391
392 =item *
393
394 Lvalue context is now properly propagated into bare blocks and C<if> and
395 C<else> blocks in lvalue subroutines.  Previously, arrays and hashes would
396 sometimes incorrectly be flattened when returned in lvalue list context, or
397 "Bizarre copy" errors could occur.  [perl #119797]
398
399 =item *
400
401 Lvalue context is now propagated to the branches of C<||> and C<&&> (and
402 their alphabetic equivalents, C<or> and C<and>).  This means
403 C<foreach (pos $x || pos $y) {...}> now allows C<pos> to be modified
404 through $_.
405
406 =item *
407
408 C<*DB::DB = sub {} if 0> no longer stops Perl's debugging mode from finding
409 C<DB::DB> subs declared thereafter.
410
411 =item *
412
413 C<stat> and C<readline> remember the last handle used; the former
414 for the special C<_> filehandle, the latter for C<${^LAST_FH}>.
415 C<eval "*foo if 0"> where *foo was the last handle passed to C<stat>
416 or C<readline> could cause that handle to be forgotten if the
417 handle were not opened yet.  This has been fixed.
418
419 =item *
420
421 Various cases of C<delete $::{a}>, C<delete $::{ENV}> etc. causing a crash
422 have been fixed.  [perl #54044]
423
424 =item *
425
426 Assigning another typeglob to C<*^R> no longer makes the regular expression
427 engine crash.
428
429 =item *
430
431 C<%{'_<...'}> hashes now set breakpoints on the corresponding C<@{'_<...'}>
432 rather than whichever array C<@DB::dbline> is aliased to.  [perl #119799]
433
434 =item *
435
436 Setting C<$!> to EACCESS before calling C<require> could affect
437 C<require>'s behaviour.  This has been fixed.
438
439 =item *
440
441 The "Can't use \1 to mean $1 in expression" warning message now only occurs
442 on the right-hand (replacement) part of a substitution.  Formerly it could
443 happen in code embedded in the left-hand side, or in any other quote-like
444 operator.
445
446 =back
447
448 =head1 Known Problems
449
450 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
451 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
452 platform specific bugs also go here.
453
454 [ List each fix as a =item entry ]
455
456 =over 4
457
458 =item *
459
460 XXX
461
462 =back
463
464 =head1 Obituary
465
466 XXX If any significant core contributor has died, we've added a short obituary
467 here.
468
469 =head1 Acknowledgements
470
471 XXX Generate this with:
472
473   perl Porting/acknowledgements.pl v5.19.5..HEAD
474
475 =head1 Reporting Bugs
476
477 If you find what you think is a bug, you might check the articles recently
478 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
479 http://rt.perl.org/perlbug/ .  There may also be information at
480 http://www.perl.org/ , the Perl Home Page.
481
482 If you believe you have an unreported bug, please run the L<perlbug> program
483 included with your release.  Be sure to trim your bug down to a tiny but
484 sufficient test case.  Your bug report, along with the output of C<perl -V>,
485 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
486
487 If the bug you are reporting has security implications, which make it
488 inappropriate to send to a publicly archived mailing list, then please send it
489 to perl5-security-report@perl.org.  This points to a closed subscription
490 unarchived mailing list, which includes all the core committers, who will be
491 able to help assess the impact of issues, figure out a resolution, and help
492 co-ordinate the release of patches to mitigate or fix the problem across all
493 platforms on which Perl is supported.  Please only use this address for
494 security issues in the Perl core, not for modules independently distributed on
495 CPAN.
496
497 =head1 SEE ALSO
498
499 The F<Changes> file for an explanation of how to view exhaustive details on
500 what changed.
501
502 The F<INSTALL> file for how to build Perl.
503
504 The F<README> file for general stuff.
505
506 The F<Artistic> and F<Copying> files for copyright information.
507
508 =cut