This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Allow trie use for /iaa matching
[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.19.4
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.19.3 release and the 5.19.4
13 release.
14
15 If you are upgrading from an earlier release such as 5.19.2, first read
16 L<perl5193delta>, which describes differences between 5.19.2 and 5.19.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 =head1 Security
31
32 XXX Any security-related notices go here.  In particular, any security
33 vulnerabilities closed should be noted here rather than in the
34 L</Selected Bug Fixes> section.
35
36 [ List each security issue as a =head2 entry ]
37
38 =head1 Incompatible Changes
39
40 XXX For a release on a stable branch, this section aspires to be:
41
42     There are no changes intentionally incompatible with 5.XXX.XXX
43     If any exist, they are bugs, and we request that you submit a
44     report.  See L</Reporting Bugs> below.
45
46 [ List each incompatible change as a =head2 entry ]
47
48 =head1 Deprecations
49
50 XXX Any deprecated features, syntax, modules etc. should be listed here.
51
52 =head2 Module removals
53
54 XXX Remove this section if inapplicable.
55
56 The following modules will be removed from the core distribution in a
57 future release, and will at that time need to be installed from CPAN.
58 Distributions on CPAN which require these modules will need to list them as
59 prerequisites.
60
61 The core versions of these modules will now issue C<"deprecated">-category
62 warnings to alert you to this fact.  To silence these deprecation warnings,
63 install the modules in question from CPAN.
64
65 Note that these are (with rare exceptions) fine modules that you are encouraged
66 to continue to use.  Their disinclusion from core primarily hinges on their
67 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
68 not usually on concerns over their design.
69
70 =over
71
72 XXX Note that deprecated modules should be listed here even if they are listed
73 as an updated module in the L</Modules and Pragmata> section.
74
75 =back
76
77 [ List each other deprecation as a =head2 entry ]
78
79 =head1 Performance Enhancements
80
81 =over 4
82
83 =item *
84
85 The trie performance enhancement for regular expressions has now been
86 extended to those compiled under C</iaa>.
87
88 =back
89
90 =head1 Modules and Pragmata
91
92 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
93 go here.  If Module::CoreList is updated, generate an initial draft of the
94 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
95 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
96 below.  A paragraph summary for important changes should then be added by hand.
97 In an ideal world, dual-life modules would have a F<Changes> file that could be
98 cribbed.
99
100 [ Within each section, list entries as a =item entry ]
101
102 =head2 New Modules and Pragmata
103
104 =over 4
105
106 =item *
107
108 XXX
109
110 =back
111
112 =head2 Updated Modules and Pragmata
113
114 =over 4
115
116 =item *
117
118 L<B> has been upgraded from version 1.45 to 1.46.
119
120 The fix for [perl #118525] introduced a regression in the behaviour of
121 C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on
122 a C<NULL> C<CvGV> to C<undef>.  C<B::CV::GV> again returns a
123 C<B::SPECIAL> object in this case. [perl #119351]
124
125 =item *
126
127 L<B::Concise> has been upgraded from version 0.98 to 0.99.
128
129 The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed.
130
131 =item *
132
133 L<Carp> has been upgraded from version 1.31 to 1.32.
134
135 =over 4
136
137 =item *
138
139 In stack traces, subroutine arguments that are strings are now quoted
140 in a consistent manner, regardless of what characters they contain and
141 how they're internally represented.
142
143 =item *
144
145 C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
146 C<overload> stash.
147
148 =item *
149
150 C<Carp> now avoids some unwanted Unicode warnings on older Perls.  This
151 doesn't affect behaviour with current Perl.
152
153 =item *
154
155 C<Carp::Heavy> detects version mismatch with C<Carp>, to give a good
156 error message if a current (stub) C<Carp::Heavy> gets loaded by an old
157 C<Carp> that expects C<Carp::Heavy> to provide subroutines.
158
159 =back
160
161 =item *
162
163 L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
164
165 This upgrade is part of a larger change to make the array interface 64-bit safe
166 by using SSize_t instead of I32 for array indices.
167
168 =item *
169
170 L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
171
172 This upgrade is part of a larger change to preserve referential identity when
173 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
174 nonexistent array elements.
175
176 =item *
177
178 L<DynaLoader> has been upgraded from version 1.19 to 1.20.
179
180 The documentation now makes it clear, as has always been the case, that
181 C<dl_unload_file> is only called automatically to unload all loaded shared
182 objects if the perl interpreter was built with the C macro
183 DL_UNLOAD_ALL_AT_EXIT defined.
184
185 =item *
186
187 L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.74.
188
189 Numerous updates and bug fixes are incorporated.  See the F<Changes> file for
190 full details.
191
192 =item *
193
194 L<File::Glob> has been upgraded from version 1.20 to 1.21.
195
196 C<glob()> now warns in the context of C<use warnings "syscalls";> if
197 the supplied pattern has an internal NUL (C<"\0">) character.
198
199 =item *
200
201 L<IPC::Open3> has been upgraded from 1.15 to 1.16.
202
203 This upgrade is part of a larger change to preserve referential identity when
204 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
205 nonexistent array elements.
206
207 =item *
208
209 L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
210
211 Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to
212 be more consistent with other perl documentation. [perl #86686]
213
214 Added a bint() method for rounding towards zero. [perl #85296]
215
216 =item *
217
218 L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
219
220 This upgrade is part of a larger change to make the array interface 64-bit safe
221 by using SSize_t instead of I32 for array indices.
222
223 =item *
224
225 L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
226
227 The list of Perl versions covered has been updated.
228
229 =item *
230
231 L<Module::Metadata> has been upgraded from version 1.000014 to 1.000016.
232
233 The module's DESCRIPTION has been re-worded regarding safety/security to
234 satisfy CVE-2013-1437.
235
236 =item *
237
238 L<mro> has been upgraded from 1.13 to 1.14.
239
240 This upgrade is part of a larger change to make the array interface 64-bit safe
241 by using SSize_t instead of I32 for array indices.
242
243 =item *
244
245 L<Perl::OSType> has been upgraded from version 1.003 to 1.004.
246
247 The Unix OSType 'bitrig' has been added.
248
249 =item *
250
251 L<re> has been upgraded from version 0.25 to 0.26.
252
253 A function signature has been corrected in the XS implementation.
254
255 =item *
256
257 L<Storable> has been upgraded from version 2.46 to 2.47.
258
259 This upgrade is part of a larger change to preserve referential identity when
260 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
261 nonexistent array elements.
262
263 =item *
264
265 L<warnings> has been upgraded from version 1.18 to 1.19.
266
267 The C<syscalls> warnings category has been added to check for embedded NUL
268 (C<"\0">) characters in pathnames and string arguments to other system calls.
269
270 =item *
271
272 L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
273
274 =back
275
276 =head2 Removed Modules and Pragmata
277
278 =over 4
279
280 =item *
281
282 XXX
283
284 =back
285
286 =head1 Documentation
287
288 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
289 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
290
291 =head2 New Documentation
292
293 XXX Changes which create B<new> files in F<pod/> go here.
294
295 =head3 L<XXX>
296
297 XXX Description of the purpose of the new file here
298
299 =head2 Changes to Existing Documentation
300
301 XXX Changes which significantly change existing files in F<pod/> go here.
302 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
303 section.
304
305 =head3 L<XXX>
306
307 =over 4
308
309 =item *
310
311 XXX Description of the change here
312
313 =back
314
315 =head1 Diagnostics
316
317 The following additions or changes have been made to diagnostic output,
318 including warnings and fatal error messages.  For the complete list of
319 diagnostic messages, see L<perldiag>.
320
321 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
322 include any changes in L<perldiag> that reconcile it to the C<C> code.
323
324 =head2 New Diagnostics
325
326 XXX Newly added diagnostic messages go under here, separated into New Errors
327 and New Warnings
328
329 =head3 New Errors
330
331 =over 4
332
333 =item *
334
335 XXX L<message|perldiag/"message">
336
337 =back
338
339 =head3 New Warnings
340
341 =over 4
342
343 =item *
344
345 L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
346
347 (W syscalls) Embedded \0 characters in pathnames or other system call arguments
348 produce a warning as of 5.20. The parts after the \0 were formerly ignored by
349 system calls.
350
351 =back
352
353 =head2 Changes to Existing Diagnostics
354
355 XXX Changes (i.e. rewording) of diagnostic messages go here
356
357 =over 4
358
359 =item *
360
361 XXX Describe change here
362
363 =back
364
365 =head1 Utility Changes
366
367 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
368 Most of these are built within the directories F<utils> and F<x2p>.
369
370 [ List utility changes as a =head3 entry for each utility and =item
371 entries for each change
372 Use L<XXX> with program names to get proper documentation linking. ]
373
374 =head3 L<find2perl>
375
376 =over 4
377
378 =item *
379
380 L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
381
382 =back
383
384 =head1 Configuration and Compilation
385
386 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
387 go here.  Any other changes to the Perl build process should be listed here.
388 However, any platform-specific changes should be listed in the
389 L</Platform Support> section, instead.
390
391 [ List changes as a =item entry ].
392
393 =over 4
394
395 =item *
396
397 The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>,
398 which avoids a race condition during parallel makes, which could cause the
399 build to fail. This is the last known parallel make problem (on *nix
400 platforms), and therefore we believe that a parallel make should now always
401 be error free.
402
403 =for comment
404
405 Strictly only for a build where build files such as F<Makefile.SH> have not
406 been updated by C<git> in an already configured and built tree.
407
408 =back
409
410 =head1 Testing
411
412 XXX Any significant changes to the testing of a freshly built perl should be
413 listed here.  Changes which create B<new> files in F<t/> go here as do any
414 large changes to the testing harness (e.g. when parallel testing was added).
415 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
416 that they represent may be covered elsewhere.
417
418 [ List each test improvement as a =item entry ]
419
420 =over 4
421
422 =item *
423
424 The test script F<t/bigmem/regexp.t> has been added to test that regular
425 expression matches on very large strings now succeed as expected.
426
427 =item *
428
429 Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
430 now tested by the new test script F<t/op/rt119311.t>.
431
432 =item *
433
434 The new test script F<t/win32/signal.t> tests that C<$!> and C<$^E> are now
435 preserved across signal handlers by the Win32 signal emulation code.
436
437 =item *
438
439 The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
440 program on platforms where it is practical to do so.
441
442 =back
443
444 =head1 Platform Support
445
446 XXX Any changes to platform support should be listed in the sections below.
447
448 [ Within the sections, list each platform as a =item entry with specific
449 changes as paragraphs below it. ]
450
451 =head2 New Platforms
452
453 XXX List any platforms that this version of perl compiles on, that previous
454 versions did not.  These will either be enabled by new files in the F<hints/>
455 directories, or new subdirectories and F<README> files at the top level of the
456 source tree.
457
458 =over 4
459
460 =item Bitrig
461
462 Compile support has been added for Bitrig, a fork of OpenBSD
463
464 =back
465
466 =head2 Discontinued Platforms
467
468 XXX List any platforms that this version of perl no longer compiles on.
469
470 =over 4
471
472 =item XXX-some-platform
473
474 XXX
475
476 =back
477
478 =head2 Platform-Specific Notes
479
480 XXX List any changes for specific platforms.  This could include configuration
481 and compilation changes or changes in portability/compatibility.  However,
482 changes within modules for platforms should generally be listed in the
483 L</Modules and Pragmata> section.
484
485 =over 4
486
487 =item WinCE
488
489 The building of XS modules has largely been restored. Several still cannot
490 (yet) be built but it is now possible to build Perl on WinCE with only a couple
491 of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
492 incorporated soon.
493
494 =back
495
496 =head1 Internal Changes
497
498 XXX Changes which affect the interface available to C<XS> code go here.  Other
499 significant internal changes for future core maintainers should be noted as
500 well.
501
502 [ List each change as a =item entry ]
503
504 =over 4
505
506 =item *
507
508 XXX
509
510 =back
511
512 =head1 Selected Bug Fixes
513
514 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
515 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
516
517 [ List each fix as a =item entry ]
518
519 =over 4
520
521 =item *
522
523 The value of C<$^E> is now saved across signal handlers on
524 Win32. [perl #85104]
525
526 =back
527
528 =head1 Known Problems
529
530 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
531 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
532 platform specific bugs also go here.
533
534 [ List each fix as a =item entry ]
535
536 =over 4
537
538 =item *
539
540 XXX
541
542 =back
543
544 =head1 Obituary
545
546 XXX If any significant core contributor has died, we've added a short obituary
547 here.
548
549 =head1 Acknowledgements
550
551 XXX Generate this with:
552
553   perl Porting/acknowledgements.pl v5.19.3..HEAD
554
555 =head1 Reporting Bugs
556
557 If you find what you think is a bug, you might check the articles recently
558 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
559 http://rt.perl.org/perlbug/ .  There may also be information at
560 http://www.perl.org/ , the Perl Home Page.
561
562 If you believe you have an unreported bug, please run the L<perlbug> program
563 included with your release.  Be sure to trim your bug down to a tiny but
564 sufficient test case.  Your bug report, along with the output of C<perl -V>,
565 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
566
567 If the bug you are reporting has security implications, which make it
568 inappropriate to send to a publicly archived mailing list, then please send it
569 to perl5-security-report@perl.org.  This points to a closed subscription
570 unarchived mailing list, which includes all the core committers, who will be
571 able to help assess the impact of issues, figure out a resolution, and help
572 co-ordinate the release of patches to mitigate or fix the problem across all
573 platforms on which Perl is supported.  Please only use this address for
574 security issues in the Perl core, not for modules independently distributed on
575 CPAN.
576
577 =head1 SEE ALSO
578
579 The F<Changes> file for an explanation of how to view exhaustive details on
580 what changed.
581
582 The F<INSTALL> file for how to build Perl.
583
584 The F<README> file for general stuff.
585
586 The F<Artistic> and F<Copying> files for copyright information.
587
588 =cut