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