Update perldelta entry for [perl #114496].
[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.17.4
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.17.3 release and the 5.17.4
13 release.
14
15 If you are upgrading from an earlier release such as 5.17.2, first read
16 L<perl5173delta>, which describes differences between 5.17.2 and 5.17.3.
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 Latest Unicode 6.2 beta is included
31
32 This is supposed to be the final data for 6.2, unless glitches are
33 found.  The earlier experimental 6.2 beta data has been reverted, and
34 this used instead.  Not all the changes that were proposed for 6.2 and
35 that were in the earlier beta versions are actually going into 6.2.  In
36 particular, there are no changes from 6.1 in the General_Category of any
37 characters.  6.2 does revise the C<\X> handling for the REGIONAL
38 INDICATOR characters that were added in Unicode 6.0.  Perl now for the
39 first time fully handles this revision.
40
41 =head2 New DTrace probes
42
43 The following new DTrace probes have been added:
44
45 =over 4
46
47 =item C<op-entry>
48
49 =item C<loading-file>
50
51 =item C<loaded-file>
52
53 =back
54
55 =head1 Security
56
57 XXX Any security-related notices go here.  In particular, any security
58 vulnerabilities closed should be noted here rather than in the
59 L</Selected Bug Fixes> section.
60
61 [ List each security issue as a =head2 entry ]
62
63 =head1 Incompatible Changes
64
65 XXX For a release on a stable branch, this section aspires to be:
66
67     There are no changes intentionally incompatible with 5.XXX.XXX
68     If any exist, they are bugs, and we request that you submit a
69     report.  See L</Reporting Bugs> below.
70
71 [ List each incompatible change as a =head2 entry ]
72
73 =head1 Deprecations
74
75 XXX Any deprecated features, syntax, modules etc. should be listed here.  In
76 particular, deprecated modules should be listed here even if they are listed as
77 an updated module in the L</Modules and Pragmata> section.
78
79 [ List each deprecation as a =head2 entry ]
80
81 =head1 Performance Enhancements
82
83 XXX Changes which enhance performance without changing behaviour go here.
84 There may well be none in a stable release.
85
86 [ List each enhancement as a =item entry ]
87
88 =over 4
89
90 =item *
91
92 Speed up in regular expression matching against Unicode properties.  The
93 largest gain is for C<\X>, the Unicode "extended grapheme cluster".  The
94 gain for it is about 35% - 40%.  Bracketed character classes, e.g.,
95 C<[0-9\x{100}]> containing code points above 255 are also now faster.
96
97 =item *
98
99 On platforms supporting it, several former macros are now implemented as static
100 inline functions. This should speed things up slightly on non-GCC platforms.
101
102 =item *
103
104 Apply the optimisation of hashes in boolean context, such as in C<if> or C<and>,
105 to constructs in non-void context.
106
107 =item *
108
109 Extend the optimisation of hashes in boolean context to C<scalar(%hash)>,
110 C<%hash ? ... : ...>, and C<sub { %hash || ... | }>.
111
112 =item *
113
114 When making a copy of the string being matched against (so that $1, $& et al
115 continue to show the correct value even if the original string is subsequently
116 modified), only copy that substring of the original string needed for the
117 capture variables, rather than copying the whole string.
118
119 This is a big win for code like
120
121     $&;
122     $_ = 'x' x 1_000_000;
123     1 while /(.)/;
124
125 Also, when pessimizing if the code contains C<$`>, C<$&> or C<$'>, record the
126 presence of each variable separately, so that the determination of the substring
127 range is based on each variable separately. So performance-wise,
128
129    $&; /x/
130
131 is now roughly equivalent to
132
133    /(x)/
134
135 whereas previously it was like
136
137    /^(.*)(x)(.*)$/
138
139 and
140
141    $&; $'; /x/
142
143 is now roughly equivalent to
144
145    /(x)(.*)$/
146
147 etc.
148
149 =back
150
151 =head1 Modules and Pragmata
152
153 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
154 go here.  If Module::CoreList is updated, generate an initial draft of the
155 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
156 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
157 below.  A paragraph summary for important changes should then be added by hand.
158 In an ideal world, dual-life modules would have a F<Changes> file that could be
159 cribbed.
160
161 [ Within each section, list entries as a =item entry ]
162
163 =head2 New Modules and Pragmata
164
165 =over 4
166
167 =item *
168
169 XXX
170
171 =back
172
173 =head2 Updated Modules and Pragmata
174
175 =over 4
176
177 =item *
178
179 L<Archive::Tar> has been upgraded from version 1.88 to 1.90.  This adds
180 documentation fixes.
181
182 =item *
183
184 L<B> has been upgraded from version 1.37 to 1.38.  This makes the module work
185 with the new pad API.
186
187 =item *
188
189 L<B::Concise> has been upgraded from version 0.92 to 0.93.  This adds support
190 for the new C<OpMAYBE_TRUEBOOL> and C<OPpTRUEBOOL> flags.
191
192 =item *
193
194 L<B::Deparse> has been upgraded from version 1.16 to 1.17.  This suppresses
195 trailing semicolons in formats.
196
197 =item *
198
199 L<DB_File> has been upgraded from version 1.826 to 1.827.  The main Perl module
200 no longer uses the C<"@_"> construct.
201
202 =item *
203
204 L<Devel::Peek> has been upgraded from version 1.09 to 1.10.  This fixes
205 compilation with C++ compilers and makes the module work with the new pad API.
206
207 =item *
208
209 L<DynaLoader> has been upgraded from version 1.15 to 1.16.  This fixes warnings
210 about using C<CODE> sections without an C<OUTPUT> section.
211
212 =item *
213
214 L<ExtUtils::ParseXS> has been upgraded from version 3.17 to 3.18.  This avoids a
215 bogus warning for initialised XSUB non-parameters.
216
217 =item *
218
219 L<File::Copy> has been upgraded from version 2.23 to 2.24.  C<copy()> no longer
220 zeros files when copying into the same directory, and also now fails (as it has
221 long been documented to do) when attempting to copy a file over itself.
222
223 =item *
224
225 L<File::Find> has been upgraded from version 1.21 to 1.22.  This fixes
226 inconsistent unixy path handling on VMS.
227
228 =item *
229
230 L<Locale::Codes> has been upgraded from version 3.22 to 3.23.  It includes some
231 new codes.
232
233 =item *
234
235 L<Module::CoreList> has been upgraded from version 2.71 to 2.73.  This restores
236 compatibility with older versions of perl and cleans up the corelist data for
237 various modules.
238
239 =item *
240
241 L<Opcode> has been upgraded from version 1.23 to 1.24 to reflect the removal of
242 the boolkeys opcode.
243
244 =item *
245
246 L<Socket> has been upgraded from version 2.004 to 2.006.
247 C<unpack_sockaddr_in()> and C<unpack_sockaddr_in6()> now return just the IP
248 address in scalar context, and C<inet_ntop()> now guards against incorrect
249 length scalars being passed in.
250
251 =item *
252
253 L<threads::shared> has been upgraded from version 1.40 to 1.41.  This adds the
254 option to warn about or ignore attempts to clone structures that can't be
255 cloned, as opposed to just unconditionally dying in that case.
256
257 =item *
258
259 L<XSLoader> has been upgraded from version 0.15 to 0.16.
260
261 =back
262
263 =head2 Removed Modules and Pragmata
264
265 =over 4
266
267 =item *
268
269 XXX
270
271 =back
272
273 =head1 Documentation
274
275 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
276 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
277
278 =head2 New Documentation
279
280 XXX Changes which create B<new> files in F<pod/> go here.
281
282 =head3 L<XXX>
283
284 XXX Description of the purpose of the new file here
285
286 =head2 Changes to Existing Documentation
287
288 XXX Changes which significantly change existing files in F<pod/> go here.
289 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
290 section.
291
292 =head3 L<XXX>
293
294 =over 4
295
296 =item *
297
298 XXX Description of the change here
299
300 =back
301
302 =head1 Diagnostics
303
304 The following additions or changes have been made to diagnostic output,
305 including warnings and fatal error messages.  For the complete list of
306 diagnostic messages, see L<perldiag>.
307
308 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
309 include any changes in L<perldiag> that reconcile it to the C<C> code.
310
311 =head2 New Diagnostics
312
313 XXX Newly added diagnostic messages go under here, separated into New Errors
314 and New Warnings
315
316 =head3 New Errors
317
318 =over 4
319
320 =item *
321
322 XXX L<message|perldiag/"message">
323
324 =back
325
326 =head3 New Warnings
327
328 =over 4
329
330 =item *
331
332 XXX L<message|perldiag/"message">
333
334 =back
335
336 =head2 Changes to Existing Diagnostics
337
338 XXX Changes (i.e. rewording) of diagnostic messages go here
339
340 =over 4
341
342 =item *
343
344 XXX Describe change here
345
346 =back
347
348 =head1 Utility Changes
349
350 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
351 Most of these are built within the directories F<utils> and F<x2p>.
352
353 [ List utility changes as a =head3 entry for each utility and =item
354 entries for each change
355 Use L<XXX> with program names to get proper documentation linking. ]
356
357 =head3 L<XXX>
358
359 =over 4
360
361 =item *
362
363 XXX
364
365 =back
366
367 =head1 Configuration and Compilation
368
369 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
370 go here.  Any other changes to the Perl build process should be listed here.
371 However, any platform-specific changes should be listed in the
372 L</Platform Support> section, instead.
373
374 [ List changes as a =item entry ].
375
376 =over 4
377
378 =item *
379
380 F<Configure> will now correctly detect C<isblank()> when compiling with a C++
381 compiler.
382
383 =back
384
385 =head1 Testing
386
387 XXX Any significant changes to the testing of a freshly built perl should be
388 listed here.  Changes which create B<new> files in F<t/> go here as do any
389 large changes to the testing harness (e.g. when parallel testing was added).
390 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
391 that they represent may be covered elsewhere.
392
393 [ List each test improvement as a =item entry ]
394
395 =over 4
396
397 =item *
398
399 XXX
400
401 =back
402
403 =head1 Platform Support
404
405 XXX Any changes to platform support should be listed in the sections below.
406
407 [ Within the sections, list each platform as a =item entry with specific
408 changes as paragraphs below it. ]
409
410 =head2 New Platforms
411
412 XXX List any platforms that this version of perl compiles on, that previous
413 versions did not.  These will either be enabled by new files in the F<hints/>
414 directories, or new subdirectories and F<README> files at the top level of the
415 source tree.
416
417 =over 4
418
419 =item XXX-some-platform
420
421 XXX
422
423 =back
424
425 =head2 Discontinued Platforms
426
427 =over 4
428
429 =item VM/ESA
430
431 Support for VM/ESA has been removed. The port was tested on 2.3.0, which
432 IBM ended service on in March 2002. 2.4.0 ended service in June 2003, and
433 was superseded by Z/VM. The current version of Z/VM is V6.2.0, and scheduled
434 for end of service on 2015/04/30.
435
436 =back
437
438 =head2 Platform-Specific Notes
439
440 XXX List any changes for specific platforms.  This could include configuration
441 and compilation changes or changes in portability/compatibility.  However,
442 changes within modules for platforms should generally be listed in the
443 L</Modules and Pragmata> section.
444
445 =over 4
446
447 =item Win32
448
449 Fixed a problem where perl could crash while cleaning up threads (including the
450 main thread) in threaded debugging builds on Win32 and possibly other platforms
451 [perl #114496].
452
453 =item Solaris
454
455 In Configure, avoid running sed commands with flags not supported on Solaris.
456
457 =item Darwin
458
459 Stop hardcoding an alignment on 8 byte boundaries to fix builds using
460 -Dusemorebits.
461
462 =back
463
464 =head1 Internal Changes
465
466 XXX Changes which affect the interface available to C<XS> code go here.  Other
467 significant internal changes for future core maintainers should be noted as
468 well.
469
470 [ List each change as a =item entry ]
471
472 =over 4
473
474 =item *
475
476 The APIs for accessing lexical pads have changed considerably.
477
478 C<PADLIST>s are now longer C<AV>s, but their own type instead. C<PADLIST>s now
479 contain a C<PAD> and a C<PADNAMELIST> of C<PADNAME>s, rather than C<AV>s for the
480 pad and the list of pad names.  C<PAD>s, C<PADNAMELIST>s, and C<PADNAME>s are to
481 be accessed as such though the newly added pad API instead of the plain C<AV>
482 and C<SV> APIs.  See L<perlapi> for details.
483
484 =back
485
486 =head1 Selected Bug Fixes
487
488 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
489 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
490
491 =over 4
492
493 =item *
494
495 Restore ‘Can’t localize through ref’ to lvalue subs.  This error had disappeared
496 under certain conditions in version 5.16.0 and has now been restored.
497
498 =item *
499
500 The parsing of heredocs has been improved significantly, fixing several parsing
501 bugs and correcting wrong subsequent line numbers under certain conditions.
502
503 =item *
504
505 Reset the utf8 position cache when accessing magical variables to avoid the
506 string buffer and the utf8 position cache to get out of sync.
507
508 =item *
509
510 Various cases of get magic being called twice for magical utf8 strings have been
511 fixed.
512
513 =item *
514
515 This code (when not in the presence of C<$&> etc)
516
517     $_ = 'x' x 1_000_000;
518     1 while /(.)/;
519
520 used to skip the buffer copy for performance reasons, but suffered from C<$1>
521 etc changing if the original string changed.  That's now been fixed.
522
523 =item *
524
525 Perl doesn't use PerlIO anymore to report out of memory messages, as PerlIO
526 might attempt to allocate more memory.
527
528 =back
529
530 =head1 Known Problems
531
532 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
533 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
534 platform specific bugs also go here.
535
536 [ List each fix as a =item entry ]
537
538 =over 4
539
540 =item *
541
542 Changes in the lexical pad API break several CPAN modules.
543
544 To avoid having to patch those modules again later if we change pads from AVs
545 into their own types, APIs for accessing the contents of pads have been added.
546
547 =back
548
549 =head1 Obituary
550
551 XXX If any significant core contributor has died, we've added a short obituary
552 here.
553
554 =head1 Acknowledgements
555
556 XXX Generate this with:
557
558   perl Porting/acknowledgements.pl v5.17.3..HEAD
559
560 =head1 Reporting Bugs
561
562 If you find what you think is a bug, you might check the articles recently
563 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
564 http://rt.perl.org/perlbug/ .  There may also be information at
565 http://www.perl.org/ , the Perl Home Page.
566
567 If you believe you have an unreported bug, please run the L<perlbug> program
568 included with your release.  Be sure to trim your bug down to a tiny but
569 sufficient test case.  Your bug report, along with the output of C<perl -V>,
570 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
571
572 If the bug you are reporting has security implications, which make it
573 inappropriate to send to a publicly archived mailing list, then please send it
574 to perl5-security-report@perl.org.  This points to a closed subscription
575 unarchived mailing list, which includes all the core committers, who will be
576 able to help assess the impact of issues, figure out a resolution, and help
577 co-ordinate the release of patches to mitigate or fix the problem across all
578 platforms on which Perl is supported.  Please only use this address for
579 security issues in the Perl core, not for modules independently distributed on
580 CPAN.
581
582 =head1 SEE ALSO
583
584 The F<Changes> file for an explanation of how to view exhaustive details on
585 what changed.
586
587 The F<INSTALL> file for how to build Perl.
588
589 The F<README> file for general stuff.
590
591 The F<Artistic> and F<Copying> files for copyright information.
592
593 =cut