e031b7f481b7848e3a3ac081ef9d4e46cb36fdf9
[perl.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.21.5
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.21.4 release and the 5.21.5
13 release.
14
15 If you are upgrading from an earlier release such as 5.21.3, first read
16 L<perl5214delta>, which describes differences between 5.21.3 and 5.21.4.
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 =head2 Perl now supports POSIX 2008 locale currency additions.
31
32 On platforms that are able to handle POSIX.1-2008, the
33 hash returned by
34 L<C<POSIX::localeconv()>|perllocale/The localeconv function>
35 includes the international currency fields added by that version of the
36 POSIX standard.  These are
37 C<int_n_cs_precedes>,
38 C<int_n_sep_by_space>,
39 C<int_n_sign_posn>,
40 C<int_p_cs_precedes>,
41 C<int_p_sep_by_space>,
42 and
43 C<int_p_sign_posn>.
44
45 =head1 Security
46
47 =head2 Perl is now compiled with -fstack-protector-strong if available
48
49 Perl has been compiled with the anti-stack-smashing option
50 C<-fstack-protector> since 5.10.1.  Now Perl uses the newer variant
51 called C<-fstack-protector-strong>, if available.  (This was added
52 already in 5.21.4.)
53
54 [ List each security issue as a =head2 entry ]
55
56 =head1 Incompatible Changes
57
58 XXX For a release on a stable branch, this section aspires to be:
59
60     There are no changes intentionally incompatible with 5.XXX.XXX
61     If any exist, they are bugs, and we request that you submit a
62     report.  See L</Reporting Bugs> below.
63
64 [ List each incompatible change as a =head2 entry ]
65
66 =head1 Deprecations
67
68 XXX Any deprecated features, syntax, modules etc. should be listed here.
69
70 =head2 Module removals
71
72 XXX Remove this section if inapplicable.
73
74 The following modules will be removed from the core distribution in a
75 future release, and will at that time need to be installed from CPAN.
76 Distributions on CPAN which require these modules will need to list them as
77 prerequisites.
78
79 The core versions of these modules will now issue C<"deprecated">-category
80 warnings to alert you to this fact.  To silence these deprecation warnings,
81 install the modules in question from CPAN.
82
83 Note that these are (with rare exceptions) fine modules that you are encouraged
84 to continue to use.  Their disinclusion from core primarily hinges on their
85 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
86 not usually on concerns over their design.
87
88 =over
89
90 =item XXX
91
92 XXX Note that deprecated modules should be listed here even if they are listed
93 as an updated module in the L</Modules and Pragmata> section.
94
95 =back
96
97 =head2 Use of multiple /x regexp modifiers
98
99 It is now deprecated to say something like any of the following:
100
101     qr/foo/xx;
102     /(?xax:foo)/;
103     use re qw(/amxx);
104
105 That is, now C<x> should only occur once in any string of contiguous
106 regular expression pattern modifiers.  We do not believe there are any
107 occurrences of this in all of CPAN.  This is in preparation for a future
108 Perl release having C</xx> mean to allow white-space for readability in
109 bracketed character classes (those enclosed in square brackets:
110 C<[...]>).
111
112 =head1 Performance Enhancements
113
114 XXX Changes which enhance performance without changing behaviour go here.
115 There may well be none in a stable release.
116
117 [ List each enhancement as a =item entry ]
118
119 =over 4
120
121 =item *
122
123 C<length> is up to 20% faster for non-magical/non-tied scalars containing a
124 string if it is a non-utf8 string or if C<use bytes;> is in scope.
125
126 =item *
127
128 Non-magical/non-tied scalars that contain only a floating point value and are
129 on most Perl builds with 64 bit integers now use 8-32 less bytes of memory
130 depending on OS.
131
132 =back
133
134 =head1 Modules and Pragmata
135
136 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
137 go here.  If Module::CoreList is updated, generate an initial draft of the
138 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
139 for important changes should then be added by hand.  In an ideal world,
140 dual-life modules would have a F<Changes> file that could be cribbed.
141
142 [ Within each section, list entries as a =item entry ]
143
144 =head2 New Modules and Pragmata
145
146 =over 4
147
148 =item *
149
150 XXX
151
152 =back
153
154 =head2 Updated Modules and Pragmata
155
156 =over 4
157
158 =item *
159
160 L<attributes> has been upgraded from version 0.23 to 0.24.
161
162 Avoid reading beyond the end of a buffer. [perl #122629]
163
164 =item *
165
166 L<Module::CoreList> has been upgraded from version 5.20140920 to 5.20141020.
167
168 Updated to cover the latest releases of Perl.
169
170 =item *
171
172 L<XSLoader> has been upgraded from version 0.17 to 0.18.
173
174 Allow XSLoader to load modules from a different namespace.
175 [perl #122455]
176
177 =back
178
179 =head2 Removed Modules and Pragmata
180
181 =over 4
182
183 =item *
184
185 XXX
186
187 =back
188
189 =head1 Documentation
190
191 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
192 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
193
194 =head2 New Documentation
195
196 XXX Changes which create B<new> files in F<pod/> go here.
197
198 =head3 L<XXX>
199
200 XXX Description of the purpose of the new file here
201
202 =head2 Changes to Existing Documentation
203
204 XXX Changes which significantly change existing files in F<pod/> go here.
205 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
206 section.
207
208 =head3 L<XXX>
209
210 =over 4
211
212 =item *
213
214 Clarifications have been added to L<perlrecharclass/Character Ranges>
215 to the effect that Perl guarantees that C<[A-Z]>, C<[a-z]>, C<[0-9]> and
216 any subranges thereof in regular expression bracketed character classes
217 are guaranteed to match exactly what a naive English speaker would
218 expect them to match, even on platforms (such as EBCDIC) where special
219 handling is required to accomplish this.
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 =head2 New Diagnostics
233
234 XXX Newly added diagnostic messages go under here, separated into New Errors
235 and New Warnings
236
237 =head3 New Errors
238
239 =over 4
240
241 =item *
242
243 XXX L<message|perldiag/"message">
244
245 =back
246
247 =head3 New Warnings
248
249 =over 4
250
251 =item *
252
253 XXX L<message|perldiag/"message">
254
255 =back
256
257 =head2 Changes to Existing Diagnostics
258
259 XXX Changes (i.e. rewording) of diagnostic messages go here
260
261 =over 4
262
263 =item *
264
265 XXX Describe change here
266
267 =back
268
269 =head1 Utility Changes
270
271 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
272 Most of these are built within the directory F<utils>.
273
274 [ List utility changes as a =head2 entry for each utility and =item
275 entries for each change
276 Use L<XXX> with program names to get proper documentation linking. ]
277
278 =head2 L<XXX>
279
280 =over 4
281
282 =item *
283
284 XXX
285
286 =back
287
288 =head1 Configuration and Compilation
289
290 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
291 go here.  Any other changes to the Perl build process should be listed here.
292 However, any platform-specific changes should be listed in the
293 L</Platform Support> section, instead.
294
295 [ List changes as a =item entry ].
296
297 =over 4
298
299 =item *
300
301 XXX
302
303 =back
304
305 =head1 Testing
306
307 XXX Any significant changes to the testing of a freshly built perl should be
308 listed here.  Changes which create B<new> files in F<t/> go here as do any
309 large changes to the testing harness (e.g. when parallel testing was added).
310 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
311 that they represent may be covered elsewhere.
312
313 [ List each test improvement as a =item entry ]
314
315 =over 4
316
317 =item *
318
319 XXX
320
321 =back
322
323 =head1 Platform Support
324
325 XXX Any changes to platform support should be listed in the sections below.
326
327 [ Within the sections, list each platform as a =item entry with specific
328 changes as paragraphs below it. ]
329
330 =head2 New Platforms
331
332 XXX List any platforms that this version of perl compiles on, that previous
333 versions did not.  These will either be enabled by new files in the F<hints/>
334 directories, or new subdirectories and F<README> files at the top level of the
335 source tree.
336
337 =over 4
338
339 =item XXX-some-platform
340
341 XXX
342
343 =back
344
345 =head2 Discontinued Platforms
346
347 XXX List any platforms that this version of perl no longer compiles on.
348
349 =over 4
350
351 =item XXX-some-platform
352
353 XXX
354
355 =back
356
357 =head2 Platform-Specific Notes
358
359 XXX List any changes for specific platforms.  This could include configuration
360 and compilation changes or changes in portability/compatibility.  However,
361 changes within modules for platforms should generally be listed in the
362 L</Modules and Pragmata> section.
363
364 =over 4
365
366 =item EBCDIC
367
368 Special handling is required on EBCDIC platforms to get C<qr/[i-j]/> to
369 match only C<"i"> and C<"j">, since there are 7 characters between the
370 code points for C<"i"> and C<"j">.  This special handling had only been
371 invoked when both ends of the range are literals.  Now it is also
372 invoked if any of the C<\N{...}> forms for specifying a character by
373 name or Unicode code point is used instead of a literal.  See
374 L<perlrecharclass/Character Ranges>.
375
376 =back
377
378 =head1 Internal Changes
379
380 XXX Changes which affect the interface available to C<XS> code go here.  Other
381 significant internal changes for future core maintainers should be noted as
382 well.
383
384 [ List each change as a =item entry ]
385
386 =over 4
387
388 =item *
389
390 SVs of type SVt_NV are now bodyless when a build configure and platform allow
391 it, specifically C<sizeof(NV) <= sizeof(IV)>. The bodyless trick is the same one
392 as for IVs since 5.9.2, but for NVs, unlike IVs, is not guarenteed on all
393 platforms and build configurations.
394
395 =back
396
397 =head1 Selected Bug Fixes
398
399 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
400 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
401
402 [ List each fix as a =item entry ]
403
404 =over 4
405
406 =item *
407
408 XXX
409
410 =back
411
412 =head1 Known Problems
413
414 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
415 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
416 platform specific bugs also go here.
417
418 [ List each fix as a =item entry ]
419
420 =over 4
421
422 =item *
423
424 XXX
425
426 =back
427
428 =head1 Errata From Previous Releases
429
430 =over 4
431
432 =item *
433
434 XXX Add anything here that we forgot to add, or were mistaken about, in
435 the perldelta of a previous release.
436
437 =back
438
439 =head1 Obituary
440
441 XXX If any significant core contributor has died, we've added a short obituary
442 here.
443
444 =head1 Acknowledgements
445
446 XXX Generate this with:
447
448   perl Porting/acknowledgements.pl v5.21.4..HEAD
449
450 =head1 Reporting Bugs
451
452 If you find what you think is a bug, you might check the articles recently
453 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
454 https://rt.perl.org/ .  There may also be information at
455 http://www.perl.org/ , the Perl Home Page.
456
457 If you believe you have an unreported bug, please run the L<perlbug> program
458 included with your release.  Be sure to trim your bug down to a tiny but
459 sufficient test case.  Your bug report, along with the output of C<perl -V>,
460 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
461
462 If the bug you are reporting has security implications, which make it
463 inappropriate to send to a publicly archived mailing list, then please send it
464 to perl5-security-report@perl.org.  This points to a closed subscription
465 unarchived mailing list, which includes all the core committers, who will be
466 able to help assess the impact of issues, figure out a resolution, and help
467 co-ordinate the release of patches to mitigate or fix the problem across all
468 platforms on which Perl is supported.  Please only use this address for
469 security issues in the Perl core, not for modules independently distributed on
470 CPAN.
471
472 =head1 SEE ALSO
473
474 The F<Changes> file for an explanation of how to view exhaustive details on
475 what changed.
476
477 The F<INSTALL> file for how to build Perl.
478
479 The F<README> file for general stuff.
480
481 The F<Artistic> and F<Copying> files for copyright information.
482
483 =cut