This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Revert "Version bump Module-CoreList to 2.37 for a CPAN release"
[perl5.git] / pod / perl5134delta.pod
CommitLineData
e90f0e29
DG
1=encoding utf8
2
09d86ea5 3=for rafl
47237f0a 4changelogged up to commit ff7894f
a98d1b31 5
e90f0e29
DG
6=head1 NAME
7
8[ this is a template for a new perldelta file. Any text flagged as
9XXX needs to be processed before release. ]
10
11perldelta - what is new for perl v5.13.4
12
13=head1 DESCRIPTION
14
15This document describes differences between the 5.13.4 release and
16the 5.13.3 release.
17
18If you are upgrading from an earlier release such as 5.13.2, first read
19L<perl5133delta>, which describes differences between 5.13.2 and
205.13.3.
21
22=head1 Notice
23
24XXX Any important notices here
25
26=head1 Core Enhancements
27
28XXX New core language features go here. Summarise user-visible core language
29enhancements. Particularly prominent performance optimisations could go
30here, but most should go in the L</Performance Enhancements> section.
31
83832992
KW
32=head2 C<srand()> now returns the seed
33
34This allows programs which need to have repeatable results to not have to come
35up with their own seed generating mechanism. Instead, they can use C<srand()>
36and somehow stash the return for future use. Typical is a test program which
37has too many combinations to test comprehensively in the time available to it
a98d1b31
FR
38each run. It can test a random subset each time, and should there be a failure,
39log the seed used for that run so that it can later be used to reproduce the
40exact results.
41
874cd4e1
FR
42=head2 Creating unary functions with prototypes
43
44Calls to functions created with the following prototypes are now correctly parsed
45
46Functions declared with the following prototypes now behave correctly as unary functions:
47
48=over 4
49
50=item *
51
52*
53
54=item *
55
56\sigil
57
58=item *
59
60\[...]
61
62=item *
63
64;$
65
66=item *
67
68;*
69
70=item *
71
72;\sigil
73
74=item *
75
76;\[...]
77
78=back
79
a98d1b31
FR
80=head2 C<\N{I<name>}> and C<charnames> enhancements
81
82C<\N{}>, C<charnames::vianame>, C<charnames::viacode> now know about every
83character in Unicode. Previously, they didn't know about the Hangul syllables
84nor a number of CJK (Chinese/Japanese/Korean) characters.
83832992 85
e90f0e29
DG
86=head1 Security
87
88XXX Any security-related notices go here. In particular, any security
89vulnerabilities closed should be noted here rather than in the
90L</Selected Bug Fixes> section.
91
92[ List each security issue as a =head2 entry ]
93
94=head1 Incompatible Changes
95
dbce4399 96=head2 Declare API incompatibility between blead releases
e90f0e29 97
dbce4399
FR
98Only stable releases (5.10.x, 5.12.x, 5.14.x, ...) guarantee binary
99compatibility with each other, while blead releases (5.13.x, 5.15.x, ...) often
100break this compatibility. However, prior to perl 5.13.4, all blead releases had
101the same C<PERL_API_REVISION>, C<PERL_API_VERSION>, and C<PERL_API_SUBVERSION>,
102effectively declaring them as binary compatible, which they weren't. From now
103on, blead releases will have a C<PERL_API_SUBVERSION> equal to their
104C<PERL_SUBVERSION>, explicitly marking them as incompatible with each other.
e90f0e29 105
dbce4399
FR
106Maintainance releases of stable perl versions will continue to make no
107intentionally incompatible API changes.
108
109=head2 Check API compatibility when loading XS modules
110
111When perl's API changes in incompatible ways (which usually happens between
112every major release), XS modules compiled for previous versions of perl will not
113work anymore. They will need to be recompiled against the new perl.
114
115In order to ensure that modules are recompiled, and to prevent users from
116accidentally loading modules compiled for old perls into newer ones, the
117C<XS_APIVERSION_BOOTCHECK> macro has been added. That macro, which is called
118when loading every newly compiled extension, compares the API version of the
119running perl with the version a module has been compiled for and raises an
120exception if they don't match.
e90f0e29 121
e795e964
KW
122=head2 Binary Incompatible with all previous Perls
123
124Some bit fields have been reordered, hence this release will not be binary
125comptible with any previous Perl release.
126
e90f0e29
DG
127=head1 Deprecations
128
129XXX Any deprecated features, syntax, modules etc. should be listed here.
130In particular, deprecated modules should be listed here even if they are
131listed as an updated module in the L</Modules and Pragmata> section.
132
133[ List each deprecation as a =head2 entry ]
134
b631e5c2
FR
135=head2 List assignment to C<$[>
136
137After assignment to C<$[> has been deprecated and started to give warnings in
138perl version 5.12.0, this version of perl also starts to emit a warning when
139assigning to C<$[> in list context. This fixes an oversight in 5.12.0.
140
e90f0e29
DG
141=head1 Performance Enhancements
142
143XXX Changes which enhance performance without changing behaviour go here. There
144may well be none in a stable release.
145
146[ List each enhancement as a =item * entry ]
147
148=over 4
149
150=item *
151
874cd4e1
FR
152Make string appending 100 times faster
153
154When doing a lot of string appending, perl could end up allocating a lot more
155memory than needed in a very inefficient way, if perl was configured to use the
156system's C<malloc> implementation instead of its own.
157
158C<sv_grow>, which is what's being used to allocate more memory if necessary when
159appending to a string, has now been teached how to round up the memory it
160requests to a certain geometric progression, making it much faster on certain
161platforms and configurations. On Win32, it's now about 100 times faster.
162
163=item *
164
8f7d8cf4
FR
165For weak references, the common case of just a single weak reference per
166referent has been optimised to reduce the storage required. In this case
167it saves the equivalent of one small perl array per referent.
168
169=item *
170
874cd4e1
FR
171C<XPV>, C<XPVIV>, and C<XPVNV> now only allocate the parts of the C<SV> body
172they actually use, saving some space.
e90f0e29
DG
173
174=back
175
176=head1 Modules and Pragmata
177
178XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
179go here. If Module::CoreList is updated, generate an initial draft of the
180following sections using F<Porting/corelist-perldelta.pl>, which prints stub
181entries to STDOUT. Results can be pasted in place of the '=head2' entries
182below. A paragraph summary for important changes should then be added by hand.
183In an ideal world, dual-life modules would have a F<Changes> file that could be
184cribbed.
185
186[ Within each section, list entries as a =item NAME entry ]
187
188=head2 New Modules and Pragmata
189
190=over 4
191
192=item *
193
194XXX
195
196=back
197
198=head2 Updated Modules and Pragmata
199
200=over 4
201
5aa76647
FR
202=item C<Archive::Tar>
203
47237f0a 204Upgraded from version 1.64 to 1.68.
5aa76647
FR
205
206Among other things, the new version adds a new option to C<ptar> to allow safe
207creation of tarballs without world-writable files on Windows, allowing those
208archives to be uploaded to CPAN.
209
a767f83c
FR
210=item C<B::Lint>
211
212Upgraded from version 1.11 to 1.12.
213
09d86ea5 214=item C<Carp>
e90f0e29 215
09d86ea5
FR
216Upgraded from version 1.16 to 1.18.
217
48792a70
FR
218L<Carp> now detects incomplete L<caller()|perlfunc/"caller EXPR">
219overrides and avoids using bogus C<@DB::args>. To provide backtraces, Carp
220relies on particular behaviour of the caller built-in. Carp now detects
221if other code has overridden this with an incomplete implementation, and
222modifies its backtrace accordingly. Previously incomplete overrides would
223cause incorrect values in backtraces (best case), or obscure fatal errors
224(worst case)
225
226This fixes certain cases of C<Bizarre copy of ARRAY> caused by modules
227overriding C<caller()> incorrectly.
09d86ea5 228
97613388
FR
229=item C<Compress::Raw::Bzip2>
230
231Upgraded from version 2.027 to 2.030.
232
233=item C<Compress::Raw::Zlib>
234
235Upgraded from version 2.027 to 2.030.
236
09d86ea5
FR
237=item C<File::Spec>
238
239Upgraded from version 3.31 to 3.31_01.
240
241Various issues in L<File::Spec::VMS> have been fixed.
e90f0e29 242
97613388
FR
243=item C<IO::Compress>
244
245Upgraded from version 2.027 to 2.030.
246
b631e5c2
FR
247=item C<Test::Harness>
248
249Upgraded from version 3.21 to 3.22.
250
874cd4e1
FR
251=item C<Test::Simple>
252
253Upgraded from version 0.94 to 0.96.
254
255Among many other things, subtests without a C<plan> or C<no_plan> now have an
256implicit C<done_testing()> added to them.
257
a98d1b31
FR
258=item C<Unicode::Collate>
259
260Upgraded from version 0.53 to 0.56.
261
262Among other things, it is now using UCA Revision 20 (based on Unicode 5.2.0) and
263supports a couple of new locales.
264
c0c2d88f
FR
265=item C<feature>
266
267Upgraded from version 1.17 to 1.18.
268
e90f0e29
DG
269=back
270
271=head2 Removed Modules and Pragmata
272
273=over 4
274
275=item *
276
277XXX
278
279=back
280
281=head1 Documentation
282
283XXX Changes to files in F<pod/> go here. Consider grouping entries by
284file and be sure to link to the appropriate page, e.g. L<perlfunc>.
285
286=head2 New Documentation
287
288XXX Changes which create B<new> files in F<pod/> go here.
289
290=head3 L<XXX>
291
292XXX Description of the purpose of the new file here
293
294=head2 Changes to Existing Documentation
295
296XXX Changes which significantly change existing files in F<pod/> go here.
297However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
298section.
299
dbce4399
FR
300=head3 L<perldiag>
301
302=over 4
303
304=item *
305
306The following existing diagnostics are now documented:
307
308=over 4
309
310=item *
311
312L<Ambiguous use of %c resolved as operator %c|perldiag/"Ambiguous use of %c resolved as operator %c">
313
314=item *
315
316L<Ambiguous use of %c{%s} resolved to %c%s|perldiag/"Ambiguous use of %c{%s} resolved to %c%s">
317
318=item *
319
320L<Ambiguous use of %c{%s%s} resolved to %c%s%s|perldiag/"Ambiguous use of %c{%s%s} resolved to %c%s%s">
321
322=item *
323
324L<Ambiguous use of -%s resolved as -&%s()|perldiag/"Ambiguous use of -%s resolved as -&%s()">
325
874cd4e1
FR
326=item *
327
328L<Invalid strict version format (%s)|perldiag/"Invalid strict version format (%s)">
329
330=item *
331
332L<Invalid version format (%s)|perldiag/"Invalid version format (%s)">
333
334=item *
335
336L<Invalid version object|perldiag/"Invalid version object">
337
dbce4399
FR
338=back
339
340=back
341
09d86ea5 342=head3 L<perlport>
e90f0e29
DG
343
344=over 4
345
346=item *
347
09d86ea5
FR
348Documented a L<limitation|perlport/alarm> of L<alarm()|perlfunc/"alarm SECONDS">
349on Win32.
e90f0e29
DG
350
351=back
352
874cd4e1
FR
353=head3 L<perlre>
354
355=over 4
356
357=item *
358
359Minor fix to a multiple scalar match example.
360
361=back
362
e90f0e29
DG
363=head1 Diagnostics
364
365The following additions or changes have been made to diagnostic output,
366including warnings and fatal error messages. For the complete list of
367diagnostic messages, see L<perldiag>.
368
369XXX New or changed warnings emitted by the core's C<C> code go here. Also
370include any changes in L<perldiag> that reconcile it to the C<C> code.
371
372[ Within each section, list entries as a =item entry ]
373
374=head2 New Diagnostics
375
376XXX Newly added diagnostic messages go here
377
378=over 4
379
380=item *
381
382XXX
383
384=back
385
386=head2 Changes to Existing Diagnostics
387
388XXX Changes (i.e. rewording) of diagnostic messages go here
389
390=over 4
391
392=item *
393
394XXX
395
396=back
397
398=head1 Utility Changes
399
400XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
401here. Most of these are built within the directories F<utils> and F<x2p>.
402
403[ List utility changes as a =head3 entry for each utility and =item
404entries for each change
405Use L<XXX> with program names to get proper documentation linking. ]
406
407=head3 L<XXX>
408
409=over 4
410
411=item *
412
413XXX
414
415=back
416
417=head1 Configuration and Compilation
418
419XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
420go here. Any other changes to the Perl build process should be listed here.
421However, any platform-specific changes should be listed in the
422L</Platform Support> section, instead.
423
424[ List changes as a =item entry ].
425
426=over 4
427
428=item *
429
874cd4e1
FR
430Compatibility with C<C++> compilers has been improved.
431
432=item *
433
434On compilers that support it, C<-Wwrite-strings> is now added to cflags by
435default.
e90f0e29
DG
436
437=back
438
439=head1 Testing
440
441XXX Any significant changes to the testing of a freshly built perl should be
442listed here. Changes which create B<new> files in F<t/> go here as do any
443large changes to the testing harness (e.g. when parallel testing was added).
444Changes to existing files in F<t/> aren't worth summarising, although the bugs
445that they represent may be covered elsewhere.
446
447[ List each test improvement as a =item entry ]
448
449=over 4
450
451=item *
452
5aa76647 453F<t/op/print.t> has been added to test implicit printing of C<$_>.
e90f0e29 454
dbce4399
FR
455=item *
456
457F<t/io/errnosig.t> has been added to test for restoration of of C<$!> when
458leaving signal handlers.
459
a98d1b31
FR
460=item *
461
462F<t/op/tie_fetch_count.t> has been added to see if C<FETCH> is only called once
463on tied variables.
464
465=item *
466
467F<lib/Tie/ExtraHash.t> has been added to make sure the, previously untested,
468L<Tie::ExtraHash> keeps working.
469
e90f0e29
DG
470=back
471
472=head1 Platform Support
473
474XXX Any changes to platform support should be listed in the sections below.
475
476[ Within the sections, list each platform as a =item entry with specific
477changes as paragraphs below it. ]
478
479=head2 New Platforms
480
481XXX List any platforms that this version of perl compiles on, that previous
482versions did not. These will either be enabled by new files in the F<hints/>
483directories, or new subdirectories and F<README> files at the top level of the
484source tree.
485
486=over 4
487
488=item XXX-some-platform
489
490XXX
491
492=back
493
494=head2 Discontinued Platforms
495
496XXX List any platforms that this version of perl no longer compiles on.
497
498=over 4
499
500=item XXX-some-platform
501
502XXX
503
504=back
505
506=head2 Platform-Specific Notes
507
508XXX List any changes for specific platforms. This could include configuration
509and compilation changes or changes in portability/compatibility. However,
510changes within modules for platforms should generally be listed in the
511L</Modules and Pragmata> section.
512
513=over 4
514
09d86ea5 515=item Win32
e90f0e29 516
09d86ea5
FR
517=over 4
518
519=item *
520
521Fixed a possible hang in F<t/op/readline.t>.
522
523=item *
524
525Fixed Makefile for SDK2003SP1 compilers.
526
a98d1b31
FR
527=item *
528
529When using old 32-bit compilers, the define C<_USE_32BIT_TIME_T> will now be set
530in C<$Config{ccflags}>. This improves portability when compiling XS extensions
531using new compilers, but for a perl compiled with old 32-bit compilers.
532
09d86ea5 533=back
e90f0e29
DG
534
535=back
536
537=head1 Internal Changes
538
539XXX Changes which affect the interface available to C<XS> code go here.
540Other significant internal changes for future core maintainers should
541be noted as well.
542
543[ List each test improvement as a =item entry ]
544
545=over 4
546
09d86ea5 547=item Removed C<PERL_POLLUTE>
e90f0e29 548
09d86ea5
FR
549The option to define C<PERL_POLLUTE> to expose older 5.005 symbols for backwards
550compatibility has been removed. It's use was always discouraged, and MakeMaker
551contains a more specific escape hatch:
552
553 perl Makefile.PL POLLUTE=1
554
555This can be used for modules that have not been upgraded to 5.6 naming
556conventions (and really should be completely obsolete by now).
557
8f7d8cf4
FR
558=item Added C<PERL_STATIC_INLINE>
559
560The C<PERL_STATIC_INLINE> define has been added to provide the buest-guess
561incantation to use for static inline functions, if the C compiler supports
562C99-style static inline. If it doesn't, it'll give a plain C<static>.
563
564C<HAS_STATIC_INLINE> can be used to check if the compiler actually supports
565inline functions.
566
e90f0e29
DG
567=back
568
569=head1 Selected Bug Fixes
570
571XXX Important bug fixes in the core language are summarised here.
572Bug fixes in files in F<ext/> and F<lib/> are best summarised in
573L</Modules and Pragmata>.
574
575[ List each fix as a =item entry ]
576
577=over 4
578
579=item *
580
48792a70
FR
581A possible memory leak when using L<caller()|perlfunc/"caller EXPR"> to set
582C<@DB::args> has been fixed.
09d86ea5
FR
583
584=item *
585
586Several memory leaks when loading XS modules were fixed.
e90f0e29 587
5aa76647
FR
588=item *
589
590A panic in the regular expression optimizer has been fixed (RT#75762).
591
592=item *
593
594Assignments to lvalue subroutines now honor copy-on-write behavior again, which
595has been broken since version 5.10.0 (RT#75656).
596
dbce4399
FR
597=item *
598
599Assignments to glob copies now behave just like assignments to regular globs
600(RT#1804).
601
602=item *
603
604Within signal handlers, C<$!> is now implicitly localized.
605
874cd4e1
FR
606=item *
607
608L<readline|perlfunc/"readline EXPR"> now honors C<< <> >> overloading on tied
609arguments.
610
6f3f41ca
FR
611=item *
612
643222e1 613L<substr()|perlfunc/"substr EXPR,OFFSET,LENGTH,REPLACEMENT">,
6f3f41ca
FR
614L<pos()|perlfunc/"index STR,SUBSTR,POSITION">, L<keys()|perlfunc/"keys HASH">,
615and L<vec()|perlfunc/"vec EXPR,OFFSET,BITS"> could, when used in combination
616with lvalues, result in leaking the scalar value they operate on, and cause its
617destruction to happen too late. This has now been fixed.
618
8f7d8cf4
FR
619=item *
620
621Building with C<PERL_GLOBAL_STRUCT>, which has been broken accidentally in
6225.13.3, now works again.
623
e90f0e29
DG
624=back
625
626=head1 Known Problems
627
628XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
629tests that had to be C<TODO>ed for the release would be noted here, unless
630they were specific to a particular platform (see below).
631
632This is a list of some significant unfixed bugs, which are regressions
633from either 5.XXX.XXX or 5.XXX.XXX.
634
635[ List each fix as a =item entry ]
636
637=over 4
638
639=item *
640
643222e1
FR
641The changes in L<substr()|perlfunc/"substr EXPR,OFFSET,LENGTH,REPLACEMENT">
642break L<HTML::Parser>. A patch has already been applied to its git repository
643and will hopefully be released shortly.
e90f0e29
DG
644
645=back
646
647=head1 Obituary
648
649XXX If any significant core contributor has died, we've added a short obituary
650here.
651
652=head1 Acknowledgements
653
654XXX The list of people to thank goes here.
655
656=head1 Reporting Bugs
657
658If you find what you think is a bug, you might check the articles
659recently posted to the comp.lang.perl.misc newsgroup and the perl
660bug database at http://rt.perl.org/perlbug/ . There may also be
661information at http://www.perl.org/ , the Perl Home Page.
662
663If you believe you have an unreported bug, please run the B<perlbug>
664program included with your release. Be sure to trim your bug down
665to a tiny but sufficient test case. Your bug report, along with the
666output of C<perl -V>, will be sent off to perlbug@perl.org to be
667analysed by the Perl porting team.
668
669If the bug you are reporting has security implications, which make it
670inappropriate to send to a publicly archived mailing list, then please send
671it to perl5-security-report@perl.org. This points to a closed subscription
672unarchived mailing list, which includes all the core committers, who be able
673to help assess the impact of issues, figure out a resolution, and help
674co-ordinate the release of patches to mitigate or fix the problem across all
675platforms on which Perl is supported. Please only use this address for
676security issues in the Perl core, not for modules independently
677distributed on CPAN.
678
679=head1 SEE ALSO
680
681The F<Changes> file for an explanation of how to view exhaustive details
682on what changed.
683
684The F<INSTALL> file for how to build Perl.
685
686The F<README> file for general stuff.
687
688The F<Artistic> and F<Copying> files for copyright information.
689
690=cut