This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
c1854b447558b12574387d980229796aaf664c3e
[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 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<Storable> has been upgraded from version 2.38 to 2.39.  This contains Various
254 bugfixes, including compatibility fixes for older versions of Perl and vstring
255 handling.
256
257 =item *
258
259 L<threads::shared> has been upgraded from version 1.40 to 1.41.  This adds the
260 option to warn about or ignore attempts to clone structures that can't be
261 cloned, as opposed to just unconditionally dying in that case.
262
263 =item *
264
265 L<XSLoader> has been upgraded from version 0.15 to 0.16.
266
267 =back
268
269 =head2 Removed Modules and Pragmata
270
271 =over 4
272
273 =item *
274
275 XXX
276
277 =back
278
279 =head1 Documentation
280
281 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
282 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
283
284 =head2 New Documentation
285
286 XXX Changes which create B<new> files in F<pod/> go here.
287
288 =head3 L<XXX>
289
290 XXX Description of the purpose of the new file here
291
292 =head2 Changes to Existing Documentation
293
294 XXX Changes which significantly change existing files in F<pod/> go here.
295 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
296 section.
297
298 =head3 L<XXX>
299
300 =over 4
301
302 =item *
303
304 XXX Description of the change here
305
306 =back
307
308 =head1 Diagnostics
309
310 The following additions or changes have been made to diagnostic output,
311 including warnings and fatal error messages.  For the complete list of
312 diagnostic messages, see L<perldiag>.
313
314 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
315 include any changes in L<perldiag> that reconcile it to the C<C> code.
316
317 =head2 New Diagnostics
318
319 XXX Newly added diagnostic messages go under here, separated into New Errors
320 and New Warnings
321
322 =head3 New Errors
323
324 =over 4
325
326 =item *
327
328 XXX L<message|perldiag/"message">
329
330 =back
331
332 =head3 New Warnings
333
334 =over 4
335
336 =item *
337
338 XXX L<message|perldiag/"message">
339
340 =back
341
342 =head2 Changes to Existing Diagnostics
343
344 XXX Changes (i.e. rewording) of diagnostic messages go here
345
346 =over 4
347
348 =item *
349
350 XXX Describe change here
351
352 =back
353
354 =head1 Utility Changes
355
356 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
357 Most of these are built within the directories F<utils> and F<x2p>.
358
359 [ List utility changes as a =head3 entry for each utility and =item
360 entries for each change
361 Use L<XXX> with program names to get proper documentation linking. ]
362
363 =head3 L<XXX>
364
365 =over 4
366
367 =item *
368
369 XXX
370
371 =back
372
373 =head1 Configuration and Compilation
374
375 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
376 go here.  Any other changes to the Perl build process should be listed here.
377 However, any platform-specific changes should be listed in the
378 L</Platform Support> section, instead.
379
380 [ List changes as a =item entry ].
381
382 =over 4
383
384 =item *
385
386 F<Configure> will now correctly detect C<isblank()> when compiling with a C++
387 compiler.
388
389 =back
390
391 =head1 Testing
392
393 XXX Any significant changes to the testing of a freshly built perl should be
394 listed here.  Changes which create B<new> files in F<t/> go here as do any
395 large changes to the testing harness (e.g. when parallel testing was added).
396 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
397 that they represent may be covered elsewhere.
398
399 [ List each test improvement as a =item entry ]
400
401 =over 4
402
403 =item *
404
405 XXX
406
407 =back
408
409 =head1 Platform Support
410
411 XXX Any changes to platform support should be listed in the sections below.
412
413 [ Within the sections, list each platform as a =item entry with specific
414 changes as paragraphs below it. ]
415
416 =head2 New Platforms
417
418 XXX List any platforms that this version of perl compiles on, that previous
419 versions did not.  These will either be enabled by new files in the F<hints/>
420 directories, or new subdirectories and F<README> files at the top level of the
421 source tree.
422
423 =over 4
424
425 =item XXX-some-platform
426
427 XXX
428
429 =back
430
431 =head2 Discontinued Platforms
432
433 =over 4
434
435 =item VM/ESA
436
437 Support for VM/ESA has been removed. The port was tested on 2.3.0, which
438 IBM ended service on in March 2002. 2.4.0 ended service in June 2003, and
439 was superseded by Z/VM. The current version of Z/VM is V6.2.0, and scheduled
440 for end of service on 2015/04/30.
441
442 =back
443
444 =head2 Platform-Specific Notes
445
446 XXX List any changes for specific platforms.  This could include configuration
447 and compilation changes or changes in portability/compatibility.  However,
448 changes within modules for platforms should generally be listed in the
449 L</Modules and Pragmata> section.
450
451 =over 4
452
453 =item Win32
454
455 Fixed a problem where perl could crash while cleaning up threads (including the
456 main thread) in threaded debugging builds on Win32 and possibly other platforms
457 [perl #114496].
458
459 =item Solaris
460
461 In Configure, avoid running sed commands with flags not supported on Solaris.
462
463 =item Darwin
464
465 Stop hardcoding an alignment on 8 byte boundaries to fix builds using
466 -Dusemorebits.
467
468 =item VMS
469
470 Fix linking on builds configured with -Dusemymalloc=y.
471
472 =back
473
474 =head1 Internal Changes
475
476 XXX Changes which affect the interface available to C<XS> code go here.  Other
477 significant internal changes for future core maintainers should be noted as
478 well.
479
480 [ List each change as a =item entry ]
481
482 =over 4
483
484 =item *
485
486 The APIs for accessing lexical pads have changed considerably.
487
488 C<PADLIST>s are now longer C<AV>s, but their own type instead. C<PADLIST>s now
489 contain a C<PAD> and a C<PADNAMELIST> of C<PADNAME>s, rather than C<AV>s for the
490 pad and the list of pad names.  C<PAD>s, C<PADNAMELIST>s, and C<PADNAME>s are to
491 be accessed as such though the newly added pad API instead of the plain C<AV>
492 and C<SV> APIs.  See L<perlapi> for details.
493
494 =back
495
496 =head1 Selected Bug Fixes
497
498 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
499 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
500
501 =over 4
502
503 =item *
504
505 Restore ‘Can’t localize through ref’ to lvalue subs.  This error had disappeared
506 under certain conditions in version 5.16.0 and has now been restored.
507
508 =item *
509
510 The parsing of heredocs has been improved significantly, fixing several parsing
511 bugs and correcting wrong subsequent line numbers under certain conditions.
512
513 =item *
514
515 Reset the utf8 position cache when accessing magical variables to avoid the
516 string buffer and the utf8 position cache to get out of sync.
517
518 =item *
519
520 Various cases of get magic being called twice for magical utf8 strings have been
521 fixed.
522
523 =item *
524
525 This code (when not in the presence of C<$&> etc)
526
527     $_ = 'x' x 1_000_000;
528     1 while /(.)/;
529
530 used to skip the buffer copy for performance reasons, but suffered from C<$1>
531 etc changing if the original string changed.  That's now been fixed.
532
533 =item *
534
535 Perl doesn't use PerlIO anymore to report out of memory messages, as PerlIO
536 might attempt to allocate more memory.
537
538 =back
539
540 =head1 Known Problems
541
542 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
543 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
544 platform specific bugs also go here.
545
546 [ List each fix as a =item entry ]
547
548 =over 4
549
550 =item *
551
552 Changes in the lexical pad API break several CPAN modules.
553
554 To avoid having to patch those modules again later if we change pads from AVs
555 into their own types, APIs for accessing the contents of pads have been added.
556
557 =back
558
559 =head1 Obituary
560
561 XXX If any significant core contributor has died, we've added a short obituary
562 here.
563
564 =head1 Acknowledgements
565
566 XXX Generate this with:
567
568   perl Porting/acknowledgements.pl v5.17.3..HEAD
569
570 =head1 Reporting Bugs
571
572 If you find what you think is a bug, you might check the articles recently
573 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
574 http://rt.perl.org/perlbug/ .  There may also be information at
575 http://www.perl.org/ , the Perl Home Page.
576
577 If you believe you have an unreported bug, please run the L<perlbug> program
578 included with your release.  Be sure to trim your bug down to a tiny but
579 sufficient test case.  Your bug report, along with the output of C<perl -V>,
580 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
581
582 If the bug you are reporting has security implications, which make it
583 inappropriate to send to a publicly archived mailing list, then please send it
584 to perl5-security-report@perl.org.  This points to a closed subscription
585 unarchived mailing list, which includes all the core committers, who will be
586 able to help assess the impact of issues, figure out a resolution, and help
587 co-ordinate the release of patches to mitigate or fix the problem across all
588 platforms on which Perl is supported.  Please only use this address for
589 security issues in the Perl core, not for modules independently distributed on
590 CPAN.
591
592 =head1 SEE ALSO
593
594 The F<Changes> file for an explanation of how to view exhaustive details on
595 what changed.
596
597 The F<INSTALL> file for how to build Perl.
598
599 The F<README> file for general stuff.
600
601 The F<Artistic> and F<Copying> files for copyright information.
602
603 =cut