This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update perldelta with entries copied from 5.14.1
[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
6 XXX needs to be processed before release. ]
7
8 perldelta - what is new for perl v5.15.0
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.15.0 release and
13 the 5.14.0 release.
14
15 If you are upgrading from an earlier release such as 5.YYY.YYY, first read
16 L<perl5YYYdelta>, which describes differences between 5.ZZZ.ZZZ and
17 5.YYY.YYY.
18
19 Some of the changes have been included in Perl 5.14.1.  These are
20 indicated with a "(5.14.1)" marker.
21
22 =head1 Notice
23
24 XXX Any important notices here
25
26 =head1 Core Enhancements
27
28 XXX New core language features go here. Summarise user-visible core language
29 enhancements. Particularly prominent performance optimisations could go
30 here, but most should go in the L</Performance Enhancements> section.
31
32 [ List each enhancement as a =head2 entry ]
33
34 =head1 Security
35
36 XXX Any security-related notices go here.  In particular, any security
37 vulnerabilities closed should be noted here rather than in the
38 L</Selected Bug Fixes> section.
39
40 [ List each security issue as a =head2 entry ]
41
42 =head1 Incompatible Changes
43
44 [ List each incompatible change as a =head2 entry ]
45
46 =head1 Deprecations
47
48 XXX Any deprecated features, syntax, modules etc. should be listed here.
49 In particular, deprecated modules should be listed here even if they are
50 listed as an updated module in the L</Modules and Pragmata> section.
51
52 [ List each deprecation as a =head2 entry ]
53
54 =head1 Performance Enhancements
55
56 XXX Changes which enhance performance without changing behaviour go here. There
57 may well be none in a stable release.
58
59 [ List each enhancement as a =item entry ]
60
61 =over 4
62
63 =item *
64
65 XXX
66
67 =back
68
69 =head1 Modules and Pragmata
70
71 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
72 go here.  If Module::CoreList is updated, generate an initial draft of the
73 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
74 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
75 below.  A paragraph summary for important changes should then be added by hand.
76 In an ideal world, dual-life modules would have a F<Changes> file that could be
77 cribbed.
78
79 [ Within each section, list entries as a =item entry ]
80
81 =head2 New Modules and Pragmata
82
83 =over 4
84
85 =item *
86
87 XXX
88
89 =back
90
91 =head2 Updated Modules and Pragmata
92
93 =over 4
94
95 =item *
96
97 L<B> has been upgraded from version 1.29 to version 1.30.
98
99 =item *
100
101 L<B::Deparse> has been upgraded from version 1.03 to 1.05.
102
103 It addresses two regressions in Perl 5.14.0:
104
105 =over
106
107 =item *
108
109 Deparsing of the C<glob> operator and its diamond (C<< <> >>) form now
110 works again [RT #90898] (5.14.1).
111
112 =item *
113
114 The presence of subroutines named C<::::> or C<::::::> no longer causes
115 B::Deparse to hang (5.14.1).
116
117 =back
118
119 XXX Other Deparse fixes go here.
120
121 =item *
122
123 L<Math::Complex> has been upgraded from version 1.56 to version 1.57.
124
125 Correct copy constructor usage.
126 Fix polarwise formatting with numeric format specifier.
127 More stable C<great_circle_direction> algorithm.
128
129 =item *
130
131 L<PerlIO::encoding> has been upgraded from version 0.14 to 0.15
132
133 =item *
134
135 XXX If any changes are made, the version will need to be bumped again.
136 What blead has is currently (as of a9d1f3db, 7th of June) identical to
137 5.14.1's version.
138
139 L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_04.
140
141 It corrects the search paths on VMS [RT #90640].
142
143 =item *
144
145 L<Storable> has been upgraded from version 2.27 to version 2.28.
146
147 =item *
148
149 L<Time::HiRes> has been upgraded from version 1.9721_01 to version 1.9722.
150
151 Portability fix, and avoiding some compiler warnings.
152
153 =item *
154
155 L<Module::CoreList> has been upgraded from version 2.49 to 2.50.
156
157 Updated for v5.12.4.
158
159 =item *
160
161 XXX
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<perlfunc>
195
196 =over
197
198 =item *
199
200 C<given>, C<when> and C<default> are now listed in L<perlfunc> (5.14.1).
201
202 =back
203
204 =head3 L<perllol>
205
206 =over
207
208 =item *
209
210 L<perllol> has been expanded with examples using the new C<push $scalar>
211 syntax introduced in Perl 5.14.0 (5.14.1).
212
213 =back
214
215 =head3 L<perlop>
216
217 =over 4
218
219 =item *
220
221 The explanation of bitwise operators has been expanded to explain how they
222 work on Unicode strings (5.14.1).
223
224 =item *
225
226 The section on the triple-dot or yada-yada operator has been moved up, as
227 it used to separate two closely related sections about the comma operator
228 (5.14.1).
229
230 =item *
231
232 More examples for C<m//g> have been added (5.14.1).
233
234 =item *
235
236 The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
237
238 =back
239
240 =head3 L<perlrun>
241
242 =over
243
244 =item *
245
246 L<perlrun> has undergone a significant clean-up.  Most notably, the
247 B<-0x...> form of the B<-0> flag has been clarified, and the final section
248 on environment variables has been corrected and expanded (5.14.1).
249
250 =back
251
252 =head1 Diagnostics
253
254 The following additions or changes have been made to diagnostic output,
255 including warnings and fatal error messages.  For the complete list of
256 diagnostic messages, see L<perldiag>.
257
258 XXX New or changed warnings emitted by the core's C<C> code go here. Also
259 include any changes in L<perldiag> that reconcile it to the C<C> code.
260
261 [ Within each section, list entries as a =item entry ]
262
263 =head2 New Diagnostics
264
265 XXX Newly added diagnostic messages go here
266
267 =over 4
268
269 =item *
270
271 XXX
272
273 =back
274
275 =head2 Changes to Existing Diagnostics
276
277 XXX Changes (i.e. rewording) of diagnostic messages go here
278
279 =over 4
280
281 =item *
282
283 XXX
284
285 =back
286
287 =head1 Utility Changes
288
289 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
290 here. Most of these are built within the directories F<utils> and F<x2p>.
291
292 [ List utility changes as a =head3 entry for each utility and =item
293 entries for each change
294 Use L<XXX> with program names to get proper documentation linking. ]
295
296 =head3 L<XXX>
297
298 =over 4
299
300 =item *
301
302 XXX
303
304 =back
305
306 =head1 Configuration and Compilation
307
308 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
309 go here.  Any other changes to the Perl build process should be listed here.
310 However, any platform-specific changes should be listed in the
311 L</Platform Support> section, instead.
312
313 [ List changes as a =item entry ].
314
315 =over 4
316
317 =item *
318
319 F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
320 option, as used by some projects that include perl's header files (5.14.1).
321
322 =back
323
324 =head1 Testing
325
326 XXX Any significant changes to the testing of a freshly built perl should be
327 listed here.  Changes which create B<new> files in F<t/> go here as do any
328 large changes to the testing harness (e.g. when parallel testing was added).
329 Changes to existing files in F<t/> aren't worth summarising, although the bugs
330 that they represent may be covered elsewhere.
331
332 [ List each test improvement as a =item entry ]
333
334 =over 4
335
336 =item *
337
338 XXX
339
340 =back
341
342 =head1 Platform Support
343
344 XXX Any changes to platform support should be listed in the sections below.
345
346 [ Within the sections, list each platform as a =item entry with specific
347 changes as paragraphs below it. ]
348
349 =head2 New Platforms
350
351 XXX List any platforms that this version of perl compiles on, that previous
352 versions did not. These will either be enabled by new files in the F<hints/>
353 directories, or new subdirectories and F<README> files at the top level of the
354 source tree.
355
356 =over 4
357
358 =item XXX-some-platform
359
360 XXX
361
362 =back
363
364 =head2 Discontinued Platforms
365
366 XXX List any platforms that this version of perl no longer compiles on.
367
368 =over 4
369
370 =item XXX-some-platform
371
372 XXX
373
374 =back
375
376 =head2 Platform-Specific Notes
377
378 XXX List any changes for specific platforms. This could include configuration
379 and compilation changes or changes in portability/compatibility.  However,
380 changes within modules for platforms should generally be listed in the
381 L</Modules and Pragmata> section.
382
383 =over 4
384
385 =item XXX-some-platform
386
387 XXX
388
389 =back
390
391 =head1 Internal Changes
392
393 XXX Changes which affect the interface available to C<XS> code go here.
394 Other significant internal changes for future core maintainers should
395 be noted as well.
396
397 =over 4
398
399 =item *
400
401 The compiled representation of formats is now stored via the mg_ptr of
402 their PERL_MAGIC_fm. Previously it was stored in the string buffer,
403 beyond SvLEN(), the regular end of the string. SvCOMPILED() and
404 SvCOMPILED_{on,off}() now exist solely for compatibility for XS code.
405 The first is always 0, the other two now no-ops.
406
407 =back
408
409 =head1 Selected Bug Fixes
410
411 XXX Important bug fixes in the core language are summarised here.
412 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
413 L</Modules and Pragmata>.
414
415 [ List each fix as a =item entry ]
416
417 =over 4
418
419 =item *
420
421 The new (in 5.14.0) regular expression modifier C</a> when repeated like
422 C</aa> forbids the characters outside the ASCII range that match
423 characters inside that range from matching under C</i>.  This did not
424 work under some circumstances, all involving alternation, such as:
425
426  "\N{KELVIN SIGN}" =~ /k|foo/iaa;
427
428 succeeded inaprropriately.  This is now fixed.
429
430 =item *
431
432 5.14.0 introduced some memory leaks in regular expression character
433 classes such as C<[\w\s]>, which have now been fixed (5.14.1).
434
435 =item *
436
437 An edge case in regular expression matching could potentially loop.
438 This happened only under C</i> in bracketed character classes that have
439 characters with multi-character folds, and the target string to match
440 against includes the first portion of the fold, followed by another
441 character that has a multi-character fold that begins with the remaining
442 portion of the fold, plus some more.
443
444  "s\N{U+DF}" =~ /[\x{DF}foo]/i
445
446 is one such case.  C<\xDF> folds to C<"ss"> (5.14.1).
447
448 =item *
449
450 A few characters in regular expression pattern matches did not
451 match correctly in some circumstances, all involving C</i>.  The
452 affected characters are:
453 COMBINING GREEK YPOGEGRAMMENI,
454 GREEK CAPITAL LETTER IOTA,
455 GREEK CAPITAL LETTER UPSILON,
456 GREEK PROSGEGRAMMENI,
457 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
458 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
459 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
460 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
461 LATIN SMALL LETTER LONG S,
462 LATIN SMALL LIGATURE LONG S T,
463 and
464 LATIN SMALL LIGATURE ST.
465
466 =item *
467
468 Formats: number of edge cases have been fixed with formats and formline;
469 in particular, where the format itself is potentially variable (such as
470 with ties and overloading), and where the format and data differ in their
471 encoding. In both these cases, it used to possible for the output to be
472 corrupted.
473
474 =item *
475
476 A bug has been fixed that would cause a "Use of freed value in iteration"
477 error if the next two hash elements that would be iterated over are
478 deleted [RT #85026] (5.14.1).
479
480 =item *
481
482 Passing the same constant subroutine to both C<index> and C<formline> no
483 longer causes one or the other to fail [RT #89218] (5.14.1).
484
485 =back
486
487 =head1 Known Problems
488
489 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
490 tests that had to be C<TODO>ed for the release would be noted here, unless
491 they were specific to a particular platform (see below).
492
493 This is a list of some significant unfixed bugs, which are regressions
494 from either 5.XXX.XXX or 5.XXX.XXX.
495
496 [ List each fix as a =item entry ]
497
498 =over 4
499
500 =item *
501
502 XXX
503
504 =back
505
506 =head1 Obituary
507
508 XXX If any significant core contributor has died, we've added a short obituary
509 here.
510
511 =head1 Acknowledgements
512
513 XXX The list of people to thank goes here.
514
515 =head1 Reporting Bugs
516
517 If you find what you think is a bug, you might check the articles
518 recently posted to the comp.lang.perl.misc newsgroup and the perl
519 bug database at http://rt.perl.org/perlbug/ .  There may also be
520 information at http://www.perl.org/ , the Perl Home Page.
521
522 If you believe you have an unreported bug, please run the L<perlbug>
523 program included with your release.  Be sure to trim your bug down
524 to a tiny but sufficient test case.  Your bug report, along with the
525 output of C<perl -V>, will be sent off to perlbug@perl.org to be
526 analysed by the Perl porting team.
527
528 If the bug you are reporting has security implications, which make it
529 inappropriate to send to a publicly archived mailing list, then please send
530 it to perl5-security-report@perl.org. This points to a closed subscription
531 unarchived mailing list, which includes all the core committers, who be able
532 to help assess the impact of issues, figure out a resolution, and help
533 co-ordinate the release of patches to mitigate or fix the problem across all
534 platforms on which Perl is supported. Please only use this address for
535 security issues in the Perl core, not for modules independently
536 distributed on CPAN.
537
538 =head1 SEE ALSO
539
540 The F<Changes> file for an explanation of how to view exhaustive details
541 on what changed.
542
543 The F<INSTALL> file for how to build Perl.
544
545 The F<README> file for general stuff.
546
547 The F<Artistic> and F<Copying> files for copyright information.
548
549 =cut