This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
c639a068d8ec0e6d8a1f5a32eaa60d7497eaf5a0
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to 8dcc3739, except for:
5 803e389 rurban  CYG17 utf8 paths
6 d9298c1 rurban  mymalloc isn't thread safe
7
8 =head1 NAME
9
10 [ this is a template for a new perldelta file. Any text flagged as
11 XXX needs to be processed before release. ]
12
13 perldelta - what is new for perl v5.15.8
14
15 =head1 DESCRIPTION
16
17 This document describes differences between the 5.15.7 release and
18 the 5.15.8 release.
19
20 If you are upgrading from an earlier release such as 5.15.6, first read
21 L<perl5157delta>, which describes differences between 5.15.6 and
22 5.15.7.
23
24 =head1 Notice
25
26 XXX Any important notices here
27
28 =head1 Core Enhancements
29
30 XXX New core language features go here. Summarise user-visible core language
31 enhancements. Particularly prominent performance optimisations could go
32 here, but most should go in the L</Performance Enhancements> section.
33
34 [ List each enhancement as a =head2 entry ]
35
36 =head2 Improved ability to mix locales and Unicode, including UTF-8 locales
37
38 An optional parameter has been added to C<use locale>
39
40  use locale ':not_characters';
41
42 which tells Perl to use all but the C<LC_CTYPE> and C<LC_COLLATE>
43 portions of the current locale.  Instead, the character set is assumed
44 to be Unicode.  This allows locales and Unicode to be seamlessly mixed,
45 including the increasingly frequent UTF-8 locales.  When using this
46 hybrid form of locales, the C<:locale> layer to the L<open> pragma can
47 be used to interface with the file system, and there are CPAN modules
48 available for ARGV and environment variable conversions.
49
50 Full details are in L<perllocale>.
51
52 =head2 New function C<fc> and corresponding escape sequence C<\F> for Unicode foldcase
53
54 Unicode foldcase is an extension to lowercase that gives better results
55 when comparing two strings case-insensitively.  It has long been used
56 internally in regular expression C</i> matching.  Now it is available
57 explicitly through the new C<fc> function call (enabled by
58 S<C<"use feature 'fc'">>, or C<use v5.16>, or explicitly callable via
59 C<CORE::fc>) or through the new C<\F> sequence in double-quotish
60 strings.
61
62 Full details are in L<perlfunc/fc>.
63
64 =head2 C<_> in subroutine prototypes
65
66 The C<_> character in subroutine prototypes is now allowed before C<@> or
67 C<%>.
68
69 =head1 Security
70
71 XXX Any security-related notices go here.  In particular, any security
72 vulnerabilities closed should be noted here rather than in the
73 L</Selected Bug Fixes> section.
74
75 [ List each security issue as a =head2 entry ]
76
77 =head1 Incompatible Changes
78
79 XXX For a release on a stable branch, this section aspires to be:
80
81     There are no changes intentionally incompatible with 5.XXX.XXX
82     If any exist, they are bugs, and we request that you submit a
83     report.  See L</Reporting Bugs> below.
84
85 [ List each incompatible change as a =head2 entry ]
86
87 =head2 Special blocks called in void context
88
89 Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now
90 called in void context.  This avoids wasteful copying of the result of the
91 last statement [perl #108794].
92
93 =head2 The C<overloading> pragma and regexp objects
94
95 With C<no overloading>, regular expression objects returned by C<qr//> are
96 now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
97 expression itself [perl #108780].
98
99 =head1 Deprecations
100
101 XXX Any deprecated features, syntax, modules etc. should be listed here.
102 In particular, deprecated modules should be listed here even if they are
103 listed as an updated module in the L</Modules and Pragmata> section.
104
105 [ List each deprecation as a =head2 entry ]
106
107 =head1 Performance Enhancements
108
109 XXX Changes which enhance performance without changing behaviour go here. There
110 may well be none in a stable release.
111
112 [ List each enhancement as a =item entry ]
113
114 =over 4
115
116 =item *
117
118 XXX
119
120 =back
121
122 =head1 Modules and Pragmata
123
124 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
125 go here.  If Module::CoreList is updated, generate an initial draft of the
126 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
127 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
128 below.  A paragraph summary for important changes should then be added by hand.
129 In an ideal world, dual-life modules would have a F<Changes> file that could be
130 cribbed.
131
132 [ Within each section, list entries as a =item entry ]
133
134 =head2 New Modules and Pragmata
135
136 =over 4
137
138 =item *
139
140 XXX
141
142 =back
143
144 =head2 Updated Modules and Pragmata
145
146 =over 4
147
148 =item *
149
150 L<B> has been upgraded from version 1.33 to version 1.34.
151
152 C<B::COP> now has a C<stashflags> method, corresponding to a new internal
153 field added in 5.15.4 [perl #108860].
154
155 =item *
156
157 L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048.
158
159 =item *
160
161 L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.048.
162
163 =item *
164
165 L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048.
166
167 =item *
168
169 L<DB_File> has been upgraded from version 1.824 to version 1.826.
170
171 =item *
172
173 L<diagnostics> has been upgraded from version 1.27 to version 1.28.
174
175 When searching for F<perldiag.pod>, it no longer uses paths that were only
176 relevant on Perl 5.004 and earlier.
177
178 =item *
179
180 L<IPC::Cmd> has been upgraded from version 0.72 to version 0.76.
181
182 =item *
183
184 L<Math::Complex> has been upgraded from version 1.58 to version 1.59.
185
186 This avoids a new core warning.
187
188 =item *
189
190 L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
191
192 =item *
193
194 L<Time::HiRes>  has been upgraded from version 1.9724 to version 1.9725.
195
196 C<Time::HiRes::stat()> no longer corrupts the Perl stack.
197
198 =item *
199
200 L<Unicode::UCD> has been upgraded from version 0.39 to 0.40.
201
202 The only change is to fix a formatting error in the Pod.
203
204 =back
205
206 =head2 Removed Modules and Pragmata
207
208 =over 4
209
210 =item *
211
212 XXX
213
214 =back
215
216 =head1 Documentation
217
218 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
219 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
220
221 =head2 New Documentation
222
223 XXX Changes which create B<new> files in F<pod/> go here.
224
225 =head3 L<XXX>
226
227 XXX Description of the purpose of the new file here
228
229 =head2 Changes to Existing Documentation
230
231 XXX Changes which significantly change existing files in F<pod/> go here.
232 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
233 section.
234
235 =head3 L<XXX>
236
237 =over 4
238
239 =item *
240
241 XXX Description of the change here
242
243 =back
244
245 =head1 Diagnostics
246
247 The following additions or changes have been made to diagnostic output,
248 including warnings and fatal error messages.  For the complete list of
249 diagnostic messages, see L<perldiag>.
250
251 XXX New or changed warnings emitted by the core's C<C> code go here. Also
252 include any changes in L<perldiag> that reconcile it to the C<C> code.
253
254 [ Within each section, list entries as a =item entry that links to perldiag,
255   e.g.
256
257   =item *
258
259   L<Invalid version object|perldiag/"Invalid version object">
260 ]
261
262 =head2 New Diagnostics
263
264 XXX Newly added diagnostic messages go here
265
266 =head3 New Errors
267
268 =over 4
269
270 =item *
271
272 XXX L<message|perldiag/"message">
273
274 =back
275
276 =head3 New Warnings
277
278 =over 4
279
280 =item *
281
282 XXX L<message|perldiag/"message">
283
284 =back
285
286 =head2 Changes to Existing Diagnostics
287
288 XXX Changes (i.e. rewording) of diagnostic messages go here
289
290 =over 4
291
292 =item *
293
294 XXX Describe change here
295
296 =back
297
298 =head1 Utility Changes
299
300 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
301 here. Most of these are built within the directories F<utils> and F<x2p>.
302
303 [ List utility changes as a =head3 entry for each utility and =item
304 entries for each change
305 Use L<XXX> with program names to get proper documentation linking. ]
306
307 =head3 L<XXX>
308
309 =over 4
310
311 =item *
312
313 XXX
314
315 =back
316
317 =head1 Configuration and Compilation
318
319 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
320 go here.  Any other changes to the Perl build process should be listed here.
321 However, any platform-specific changes should be listed in the
322 L</Platform Support> section, instead.
323
324 [ List changes as a =item entry ].
325
326 =over 4
327
328 =item *
329
330 XXX
331
332 =back
333
334 =head1 Testing
335
336 XXX Any significant changes to the testing of a freshly built perl should be
337 listed here.  Changes which create B<new> files in F<t/> go here as do any
338 large changes to the testing harness (e.g. when parallel testing was added).
339 Changes to existing files in F<t/> aren't worth summarising, although the bugs
340 that they represent may be covered elsewhere.
341
342 [ List each test improvement as a =item entry ]
343
344 =over 4
345
346 =item *
347
348 XXX
349
350 =back
351
352 =head1 Platform Support
353
354 XXX Any changes to platform support should be listed in the sections below.
355
356 [ Within the sections, list each platform as a =item entry with specific
357 changes as paragraphs below it. ]
358
359 =head2 New Platforms
360
361 XXX List any platforms that this version of perl compiles on, that previous
362 versions did not. These will either be enabled by new files in the F<hints/>
363 directories, or new subdirectories and F<README> files at the top level of the
364 source tree.
365
366 =over 4
367
368 =item XXX-some-platform
369
370 XXX
371
372 =back
373
374 =head2 Discontinued Platforms
375
376 XXX List any platforms that this version of perl no longer compiles on.
377
378 =over 4
379
380 =item XXX-some-platform
381
382 XXX
383
384 =back
385
386 =head2 Platform-Specific Notes
387
388 XXX List any changes for specific platforms. This could include configuration
389 and compilation changes or changes in portability/compatibility.  However,
390 changes within modules for platforms should generally be listed in the
391 L</Modules and Pragmata> section.
392
393 =over 4
394
395 =item XXX-some-platform
396
397 XXX
398
399 =back
400
401 =head1 Internal Changes
402
403 XXX Changes which affect the interface available to C<XS> code go here.
404 Other significant internal changes for future core maintainers should
405 be noted as well.
406
407 [ List each change as a =item entry ]
408
409 =over 4
410
411 =item *
412
413 XXX
414
415 =back
416
417 =head1 Selected Bug Fixes
418
419 XXX Important bug fixes in the core language are summarised here.
420 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
421 L</Modules and Pragmata>.
422
423 [ List each fix as a =item entry ]
424
425 =over 4
426
427 =item *
428
429 C<~~> now correctly handles the precedence of Any~~Object, and is not tricked
430 by an overloaded object on the left-hand side.
431
432 =item *
433
434 C<stat _> no longer warns about unopened filehandles [perl #71002].
435
436 =item *
437
438 C<stat> on an unopened filehandle now warns consistently, instead of
439 skipping the warning at times.
440
441 =item *
442
443 A change in an earlier 5.15 release caused warning hints to propagate into
444 C<do $file>.  This has been fixed [rt.cpan.org #72767].
445
446 =item *
447
448 Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up
449 after assigning C<${ qr// }> to a hash element and locking it with
450 L<Hash::Util>.  This could result in double frees, crashes or erratic
451 behaviour.
452
453 =item *
454
455 In 5.15.7, some typeglobs in the CORE namespace were made read-only by
456 mistake.  This has been fixed [rt.cpan.org #74289].
457
458 =item *
459
460 C<-t> now works when stacked with other filetest operators [perl #77388].
461
462 =item *
463
464 Stacked filetest operators now only call FETCH once on a tied argument.
465
466 =item *
467
468 C</.*/g> would sometimes refuse to match at the end of a string that ends
469 with "\n".  This has been fixed [perl #109206].
470
471 =item *
472
473 Method calls whose arguments were all surrounded with C<my()> or C<our()>
474 (as in C<<$object->method(my($a,$b)) >>) used to force lvalue context on
475 the subroutine.  This would prevent lvalue methods from returning certain
476 values.  Due to lvalue fixes earlier in the 5.15.x series, it would also
477 prevent non-lvalue methods from being called [perl #109264].
478
479 =for comment
480 This bug I<did> affect earlier stable releases.  It is just the last
481 sentence that does not apply to 5.14.
482
483 =back
484
485 =head1 Known Problems
486
487 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
488 tests that had to be C<TODO>ed for the release would be noted here, unless
489 they were specific to a particular platform (see below).
490
491 This is a list of some significant unfixed bugs, which are regressions
492 from either 5.XXX.XXX or 5.XXX.XXX.
493
494 [ List each fix as a =item entry ]
495
496 =over 4
497
498 =item *
499
500 XXX
501
502 =back
503
504 =head1 Obituary
505
506 XXX If any significant core contributor has died, we've added a short obituary
507 here.
508
509 =head1 Acknowledgements
510
511 XXX Generate this with:
512
513   perl Porting/acknowledgements.pl v5.15.7..HEAD
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
532 all the core committers, who will be able
533 to help assess the impact of issues, figure out a resolution, and help
534 co-ordinate the release of patches to mitigate or fix the problem across all
535 platforms on which Perl is supported. Please only use this address for
536 security issues in the Perl core, not for modules independently
537 distributed on CPAN.
538
539 =head1 SEE ALSO
540
541 The F<Changes> file for an explanation of how to view exhaustive details
542 on what changed.
543
544 The F<INSTALL> file for how to build Perl.
545
546 The F<README> file for general stuff.
547
548 The F<Artistic> and F<Copying> files for copyright information.
549
550 =cut