This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta update
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to 3ea0c5818 except for:
5 a1da11a30dfa4f3543dcab00834ff535202f5085 (GNU/Hurd hints)
6
7 =head1 NAME
8
9 [ this is a template for a new perldelta file. Any text flagged as
10 XXX needs to be processed before release. ]
11
12 perldelta - what is new for perl v5.15.5
13
14 =head1 DESCRIPTION
15
16 This document describes differences between the 5.15.4 release and
17 the 5.15.5 release.
18
19 If you are upgrading from an earlier release such as 5.15.3, first read
20 L<perl5154delta>, which describes differences between 5.15.3 and
21 5.15.4.
22
23 =head1 Notice
24
25 XXX Any important notices here
26
27 =head1 Core Enhancements
28
29 XXX New core language features go here. Summarise user-visible core language
30 enhancements. Particularly prominent performance optimisations could go
31 here, but most should go in the L</Performance Enhancements> section.
32
33 =head2 C<$[> is back
34
35 The C<$[> variable is back again, but is now implemented as a module, so
36 programs that do not mention it (i.e., most of them), will not incur any
37 run-time penalty.  It is disabled in the scope of C<use v5.16>.
38
39 XXX That last sentence is not true yet.
40
41 The new implementation has some bug fixes.  See L<arybase>.
42
43 =head1 Security
44
45 XXX Any security-related notices go here.  In particular, any security
46 vulnerabilities closed should be noted here rather than in the
47 L</Selected Bug Fixes> section.
48
49 [ List each security issue as a =head2 entry ]
50
51 =head1 Incompatible Changes
52
53 XXX For a release on a stable branch, this section aspires to be:
54
55     There are no changes intentionally incompatible with 5.XXX.XXX
56     If any exist, they are bugs and reports are welcome.
57
58 [ List each incompatible change as a =head2 entry ]
59
60 =head1 Deprecations
61
62 XXX Any deprecated features, syntax, modules etc. should be listed here.
63 In particular, deprecated modules should be listed here even if they are
64 listed as an updated module in the L</Modules and Pragmata> section.
65
66 [ List each deprecation as a =head2 entry ]
67
68 =head1 Performance Enhancements
69
70 XXX Changes which enhance performance without changing behaviour go here. There
71 may well be none in a stable release.
72
73 [ List each enhancement as a =item entry ]
74
75 =over 4
76
77 =item *
78
79 Due to changes in L<File::Glob>, Perl's C<glob> function and its
80 C<< <...> >> equivalent are now much faster.  The splitting of the pattern
81 into words has been rewritten in C, resulting in speed-ups of 20% in some
82 cases.
83
84 This does not affect VMS, as it does not use File::Glob.
85
86 =back
87
88 =head1 Modules and Pragmata
89
90 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
91 go here.  If Module::CoreList is updated, generate an initial draft of the
92 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
93 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
94 below.  A paragraph summary for important changes should then be added by hand.
95 In an ideal world, dual-life modules would have a F<Changes> file that could be
96 cribbed.
97
98 [ Within each section, list entries as a =item entry ]
99
100 =head2 New Modules and Pragmata
101
102 =over 4
103
104 =item *
105
106 L<arybase> -- this new module implements the C<$[> variable.
107
108 =back
109
110 =head2 Updated Modules and Pragmata
111
112 =over 4
113
114 =item *
115
116 L<Archive::Extract> has been upgraded from version 0.56 to version 0.58.
117
118 =item *
119
120 L<B::Deparse> has been upgraded from version 1.08 to 1.08.
121
122 It now correctly deparses C<CORE::do> and C<CORE::glob>.
123
124 =item *
125
126 L<CPANPLUS::Dist::Build> has been upgraded from version 0.58 to version 0.60.
127
128 =item *
129
130 L<ExtUtils::MakeMaker> has been upgraded from version 6.61_01 to version 6.63_01.
131
132 =item *
133
134 L<File::Glob> has been upgrade from version 1.13 to 1.14.
135
136 It has a new C<:bsd_glob> export tag, intended to replace C<:glob>.  Like
137 C<:glob> it overrides C<glob> with a function that does not split the glob
138 pattern into words, but, unlike C<:glob>, it iterates properly in scalar
139 context, instead of returning the last file.
140
141 There are other changes affecting Perl's own C<glob> operator (which uses
142 File::Glob internally, except on VMS).  See L</Performance Enhancements>
143 and L</Selected Bug Fixes>.
144
145 =item *
146
147 L<HTTP::Tiny> has been upgraded from version 0.013 to version 0.016.
148
149 Adds additional shorthand methods for all common HTTP verbs,
150 a C<post_form()> method for POST-ing x-www-form-urlencoded data and
151 a C<www_form_urlencode()> utility method.
152
153 =item *
154
155 L<perlfaq> has been upgraded from version 5.0150035 to version 5.0150036.
156
157 =item *
158
159 L<Socket> as been upgraded from version 1.94_01 to 1.94_02.
160
161 It has new functions and constants for handling IPv6 sockets:
162
163     pack_ipv6_mreq
164     unpack_ipv6_mreq
165     IPV6_ADD_MEMBERSHIP
166     IPV6_DROP_MEMBERSHIP
167     IPV6_MTU
168     IPV6_MTU_DISCOVER
169     IPV6_MULTICAST_HOPS
170     IPV6_MULTICAST_IF
171     IPV6_MULTICAST_LOOP
172     IPV6_UNICAST_HOPS
173     IPV6_V6ONLY
174
175 =item *
176
177 L<Unicode::Collate> has been upgraded from version 0.80 to version 0.81.
178
179 Locales updated to CLDR 2.0: mk, mt, nb, nn, ro, ru.
180 Newly supported locales: ml, mr, or, pa.
181
182 =back
183
184 =head2 Removed Modules and Pragmata
185
186 =over 4
187
188 =item *
189
190 XXX
191
192 =back
193
194 =head1 Documentation
195
196 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
197 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
198
199 =head2 New Documentation
200
201 XXX Changes which create B<new> files in F<pod/> go here.
202
203 =head3 L<XXX>
204
205 XXX Description of the purpose of the new file here
206
207 =head2 Changes to Existing Documentation
208
209 XXX Changes which significantly change existing files in F<pod/> go here.
210 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
211 section.
212
213 =head3 L<XXX>
214
215 =over 4
216
217 =item *
218
219 XXX Description of the change here
220
221 =back
222
223 =head1 Diagnostics
224
225 The following additions or changes have been made to diagnostic output,
226 including warnings and fatal error messages.  For the complete list of
227 diagnostic messages, see L<perldiag>.
228
229 XXX New or changed warnings emitted by the core's C<C> code go here. Also
230 include any changes in L<perldiag> that reconcile it to the C<C> code.
231
232 [ Within each section, list entries as a =item entry that links to perldiag,
233   e.g.
234
235   =item *
236
237   L<Invalid version object|perldiag/"Invalid version object">
238 ]
239
240 =head2 New Diagnostics
241
242 XXX Newly added diagnostic messages go here
243
244 =head3 New Errors
245
246 =over 4
247
248 =item *
249
250 XXX L<message|perldiag/"message">
251
252 =back
253
254 =head3 New Warnings
255
256 =over 4
257
258 =item *
259
260 XXX L<message|perldiag/"message">
261
262 =back
263
264 =head2 Changes to Existing Diagnostics
265
266 XXX Changes (i.e. rewording) of diagnostic messages go here
267
268 =over 4
269
270 =item *
271
272 XXX Describe change here
273
274 =back
275
276 =head1 Utility Changes
277
278 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
279 here. Most of these are built within the directories F<utils> and F<x2p>.
280
281 [ List utility changes as a =head3 entry for each utility and =item
282 entries for each change
283 Use L<XXX> with program names to get proper documentation linking. ]
284
285 =head3 L<XXX>
286
287 =over 4
288
289 =item *
290
291 XXX
292
293 =back
294
295 =head1 Configuration and Compilation
296
297 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
298 go here.  Any other changes to the Perl build process should be listed here.
299 However, any platform-specific changes should be listed in the
300 L</Platform Support> section, instead.
301
302 [ List changes as a =item entry ].
303
304 =over 4
305
306 =item *
307
308 XXX
309
310 =back
311
312 =head1 Testing
313
314 XXX Any significant changes to the testing of a freshly built perl should be
315 listed here.  Changes which create B<new> files in F<t/> go here as do any
316 large changes to the testing harness (e.g. when parallel testing was added).
317 Changes to existing files in F<t/> aren't worth summarising, although the bugs
318 that they represent may be covered elsewhere.
319
320 [ List each test improvement as a =item entry ]
321
322 =over 4
323
324 =item *
325
326 XXX
327
328 =back
329
330 =head1 Platform Support
331
332 XXX Any changes to platform support should be listed in the sections below.
333
334 [ Within the sections, list each platform as a =item entry with specific
335 changes as paragraphs below it. ]
336
337 =head2 New Platforms
338
339 XXX List any platforms that this version of perl compiles on, that previous
340 versions did not. These will either be enabled by new files in the F<hints/>
341 directories, or new subdirectories and F<README> files at the top level of the
342 source tree.
343
344 =over 4
345
346 =item XXX-some-platform
347
348 XXX
349
350 =back
351
352 =head2 Discontinued Platforms
353
354 XXX List any platforms that this version of perl no longer compiles on.
355
356 =over 4
357
358 =item XXX-some-platform
359
360 XXX
361
362 =back
363
364 =head2 Platform-Specific Notes
365
366 XXX List any changes for specific platforms. This could include configuration
367 and compilation changes or changes in portability/compatibility.  However,
368 changes within modules for platforms should generally be listed in the
369 L</Modules and Pragmata> section.
370
371 =over 4
372
373 =item XXX-some-platform
374
375 XXX
376
377 =back
378
379 =head1 Internal Changes
380
381 XXX Changes which affect the interface available to C<XS> code go here.
382 Other significant internal changes for future core maintainers should
383 be noted as well.
384
385 [ List each change as a =item entry ]
386
387 =over 4
388
389 =item *
390
391 C<PL_curstash> is now reference-counted.
392
393 =back
394
395 =head1 Selected Bug Fixes
396
397 XXX Important bug fixes in the core language are summarised here.
398 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
399 L</Modules and Pragmata>.
400
401 [ List each fix as a =item entry ]
402
403 =over 4
404
405 =item *
406
407 Perl now holds an extra reference count on the package that code is
408 currently compiling in.  This means that the following code no longer crashes [perl #101486]:
409
410     package Foo;
411     BEGIN {*Foo:: = *Bar::}
412     sub foo;
413
414 =item *
415
416 F<dumpvar.pl>, and consequently the C<x> command in the debugger, have been
417 fixed to handle objects blessed into classes whose names contain "=".  The
418 contents of such objects used not to be dumped [perl #101814].
419
420 =item *
421
422 The C<x> repetition operator no longer crashes on 64-bit builds with large
423 repeate counts [perl #94560].
424
425 =item *
426
427 A fix to C<glob> under miniperl (used to configure modules when perl itself
428 is built) in Perl 5.15.3 stopped C<< <~> >> from returning the home
429 directory, because it cleared %ENV before calling csh.  Now C<$ENV{HOME}>
430 is preserved.  This fix probably does not affect anything.  If
431 L<File::Glob> fails to load for some reason, Perl reverts to using csh.
432 So it would apply in that case.
433
434 =item *
435
436 On OSes other than VMS, Perl's C<glob> operator (and the C<< <...> >> form)
437 use L<File::Glob> underneath.  L<File::Glob> splits the pattern into words,
438 before feeding each word to its C<bsd_glob> function.
439
440 There were several inconsistencies in the way the split was done.  Now
441 quotation marks (' and ") are always treated as shell-style word delimiters
442 (that allow whitespace as part of a word) and backslashes are always
443 preserved, unless they exist to escape quotation marks.  Before, those
444 would only sometimes be the case, depending on whether the pattern
445 contained whitespace.  Also, escaped whitespace at the end of the pattern
446 is no longer stripped.
447
448 =item *
449
450 C<CORE::glob> now works as a way to call the default globbing function.  It
451 used to respect overrides, despite the C<CORE::> prefix.
452
453 =item *
454
455 In 5.14, C</[[:lower:]]/i> and C</[[:upper:]]/i> no longer matched the
456 opposite case.  This has been fixed [perl #101970].
457
458 =item *
459
460 A regular expression match with an overloaded object on the right-hand side
461 would in some cases stringify the object too many times.
462
463 =item *
464
465 The C-level C<pregcomp> function could become confused as to whether the
466 pattern was in UTF8 if the pattern was an overloaded, tied, or otherwise
467 magical scalar [perl #101940].
468
469 =back
470
471 =head1 Known Problems
472
473 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
474 tests that had to be C<TODO>ed for the release would be noted here, unless
475 they were specific to a particular platform (see below).
476
477 This is a list of some significant unfixed bugs, which are regressions
478 from either 5.XXX.XXX or 5.XXX.XXX.
479
480 [ List each fix as a =item entry ]
481
482 =over 4
483
484 =item *
485
486 XXX
487
488 =back
489
490 =head1 Obituary
491
492 XXX If any significant core contributor has died, we've added a short obituary
493 here.
494
495 =head1 Acknowledgements
496
497 XXX Generate this with:
498
499   perl Porting/acknowledgements.pl v5.15.4..HEAD
500
501 =head1 Reporting Bugs
502
503 If you find what you think is a bug, you might check the articles
504 recently posted to the comp.lang.perl.misc newsgroup and the perl
505 bug database at http://rt.perl.org/perlbug/ .  There may also be
506 information at http://www.perl.org/ , the Perl Home Page.
507
508 If you believe you have an unreported bug, please run the L<perlbug>
509 program included with your release.  Be sure to trim your bug down
510 to a tiny but sufficient test case.  Your bug report, along with the
511 output of C<perl -V>, will be sent off to perlbug@perl.org to be
512 analysed by the Perl porting team.
513
514 If the bug you are reporting has security implications, which make it
515 inappropriate to send to a publicly archived mailing list, then please send
516 it to perl5-security-report@perl.org. This points to a closed subscription
517 unarchived mailing list, which includes
518 all the core committers, who will be able
519 to help assess the impact of issues, figure out a resolution, and help
520 co-ordinate the release of patches to mitigate or fix the problem across all
521 platforms on which Perl is supported. Please only use this address for
522 security issues in the Perl core, not for modules independently
523 distributed on CPAN.
524
525 =head1 SEE ALSO
526
527 The F<Changes> file for an explanation of how to view exhaustive details
528 on what changed.
529
530 The F<INSTALL> file for how to build Perl.
531
532 The F<README> file for general stuff.
533
534 The F<Artistic> and F<Copying> files for copyright information.
535
536 =cut