This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta up to 41f69a9
[perl5.git] / pod / perl5134delta.pod
CommitLineData
e90f0e29
DG
1=encoding utf8
2
09d86ea5 3=for rafl
7d255e31 4changelogged up to commit 41f69a9
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
7d255e31
FR
243=item <I18N::Langinfo>
244
245Upgraded from version 0.03 to 0.04.
246
247C<langinfo()> now defaults to using C<$_> if there is no argument given, just
248like the documentation always claimed it did.
249
97613388
FR
250=item C<IO::Compress>
251
252Upgraded from version 2.027 to 2.030.
253
7d255e31
FR
254=item C<Module::CoreList>
255
256Upgraded from version 2.36 to 2.37.
257
258Besides listing the updated core modules of this release, it also stops listing
259the C<Filespec> module. That module never existed in core. The scripts
260generating C<Module::CoreList> confused it with C<VMS::Filespec>, which actually
261is a core module, since the time of perl 5.8.7.
262
b631e5c2
FR
263=item C<Test::Harness>
264
265Upgraded from version 3.21 to 3.22.
266
874cd4e1
FR
267=item C<Test::Simple>
268
269Upgraded from version 0.94 to 0.96.
270
271Among many other things, subtests without a C<plan> or C<no_plan> now have an
272implicit C<done_testing()> added to them.
273
a98d1b31
FR
274=item C<Unicode::Collate>
275
276Upgraded from version 0.53 to 0.56.
277
278Among other things, it is now using UCA Revision 20 (based on Unicode 5.2.0) and
279supports a couple of new locales.
280
c0c2d88f
FR
281=item C<feature>
282
283Upgraded from version 1.17 to 1.18.
284
e90f0e29
DG
285=back
286
287=head2 Removed Modules and Pragmata
288
289=over 4
290
291=item *
292
293XXX
294
295=back
296
297=head1 Documentation
298
299XXX Changes to files in F<pod/> go here. Consider grouping entries by
300file and be sure to link to the appropriate page, e.g. L<perlfunc>.
301
302=head2 New Documentation
303
304XXX Changes which create B<new> files in F<pod/> go here.
305
306=head3 L<XXX>
307
308XXX Description of the purpose of the new file here
309
310=head2 Changes to Existing Documentation
311
312XXX Changes which significantly change existing files in F<pod/> go here.
313However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
314section.
315
dbce4399
FR
316=head3 L<perldiag>
317
318=over 4
319
320=item *
321
322The following existing diagnostics are now documented:
323
324=over 4
325
326=item *
327
328L<Ambiguous use of %c resolved as operator %c|perldiag/"Ambiguous use of %c resolved as operator %c">
329
330=item *
331
332L<Ambiguous use of %c{%s} resolved to %c%s|perldiag/"Ambiguous use of %c{%s} resolved to %c%s">
333
334=item *
335
336L<Ambiguous use of %c{%s%s} resolved to %c%s%s|perldiag/"Ambiguous use of %c{%s%s} resolved to %c%s%s">
337
338=item *
339
340L<Ambiguous use of -%s resolved as -&%s()|perldiag/"Ambiguous use of -%s resolved as -&%s()">
341
874cd4e1
FR
342=item *
343
344L<Invalid strict version format (%s)|perldiag/"Invalid strict version format (%s)">
345
346=item *
347
348L<Invalid version format (%s)|perldiag/"Invalid version format (%s)">
349
350=item *
351
352L<Invalid version object|perldiag/"Invalid version object">
353
dbce4399
FR
354=back
355
356=back
357
09d86ea5 358=head3 L<perlport>
e90f0e29
DG
359
360=over 4
361
362=item *
363
09d86ea5
FR
364Documented a L<limitation|perlport/alarm> of L<alarm()|perlfunc/"alarm SECONDS">
365on Win32.
e90f0e29
DG
366
367=back
368
874cd4e1
FR
369=head3 L<perlre>
370
371=over 4
372
373=item *
374
375Minor fix to a multiple scalar match example.
376
377=back
378
e90f0e29
DG
379=head1 Diagnostics
380
381The following additions or changes have been made to diagnostic output,
382including warnings and fatal error messages. For the complete list of
383diagnostic messages, see L<perldiag>.
384
385XXX New or changed warnings emitted by the core's C<C> code go here. Also
386include any changes in L<perldiag> that reconcile it to the C<C> code.
387
388[ Within each section, list entries as a =item entry ]
389
390=head2 New Diagnostics
391
392XXX Newly added diagnostic messages go here
393
394=over 4
395
396=item *
397
398XXX
399
400=back
401
402=head2 Changes to Existing Diagnostics
403
404XXX Changes (i.e. rewording) of diagnostic messages go here
405
406=over 4
407
408=item *
409
410XXX
411
412=back
413
414=head1 Utility Changes
415
416XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
417here. Most of these are built within the directories F<utils> and F<x2p>.
418
419[ List utility changes as a =head3 entry for each utility and =item
420entries for each change
421Use L<XXX> with program names to get proper documentation linking. ]
422
423=head3 L<XXX>
424
425=over 4
426
427=item *
428
429XXX
430
431=back
432
433=head1 Configuration and Compilation
434
435XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
436go here. Any other changes to the Perl build process should be listed here.
437However, any platform-specific changes should be listed in the
438L</Platform Support> section, instead.
439
440[ List changes as a =item entry ].
441
442=over 4
443
444=item *
445
874cd4e1
FR
446Compatibility with C<C++> compilers has been improved.
447
448=item *
449
450On compilers that support it, C<-Wwrite-strings> is now added to cflags by
451default.
e90f0e29
DG
452
453=back
454
455=head1 Testing
456
457XXX Any significant changes to the testing of a freshly built perl should be
458listed here. Changes which create B<new> files in F<t/> go here as do any
459large changes to the testing harness (e.g. when parallel testing was added).
460Changes to existing files in F<t/> aren't worth summarising, although the bugs
461that they represent may be covered elsewhere.
462
463[ List each test improvement as a =item entry ]
464
465=over 4
466
467=item *
468
5aa76647 469F<t/op/print.t> has been added to test implicit printing of C<$_>.
e90f0e29 470
dbce4399
FR
471=item *
472
473F<t/io/errnosig.t> has been added to test for restoration of of C<$!> when
474leaving signal handlers.
475
a98d1b31
FR
476=item *
477
478F<t/op/tie_fetch_count.t> has been added to see if C<FETCH> is only called once
479on tied variables.
480
481=item *
482
483F<lib/Tie/ExtraHash.t> has been added to make sure the, previously untested,
484L<Tie::ExtraHash> keeps working.
485
e90f0e29
DG
486=back
487
488=head1 Platform Support
489
490XXX Any changes to platform support should be listed in the sections below.
491
492[ Within the sections, list each platform as a =item entry with specific
493changes as paragraphs below it. ]
494
495=head2 New Platforms
496
497XXX List any platforms that this version of perl compiles on, that previous
498versions did not. These will either be enabled by new files in the F<hints/>
499directories, or new subdirectories and F<README> files at the top level of the
500source tree.
501
502=over 4
503
504=item XXX-some-platform
505
506XXX
507
508=back
509
510=head2 Discontinued Platforms
511
512XXX List any platforms that this version of perl no longer compiles on.
513
514=over 4
515
516=item XXX-some-platform
517
518XXX
519
520=back
521
522=head2 Platform-Specific Notes
523
524XXX List any changes for specific platforms. This could include configuration
525and compilation changes or changes in portability/compatibility. However,
526changes within modules for platforms should generally be listed in the
527L</Modules and Pragmata> section.
528
529=over 4
530
09d86ea5 531=item Win32
e90f0e29 532
09d86ea5
FR
533=over 4
534
535=item *
536
537Fixed a possible hang in F<t/op/readline.t>.
538
539=item *
540
541Fixed Makefile for SDK2003SP1 compilers.
542
a98d1b31
FR
543=item *
544
545When using old 32-bit compilers, the define C<_USE_32BIT_TIME_T> will now be set
546in C<$Config{ccflags}>. This improves portability when compiling XS extensions
547using new compilers, but for a perl compiled with old 32-bit compilers.
548
09d86ea5 549=back
e90f0e29
DG
550
551=back
552
553=head1 Internal Changes
554
555XXX Changes which affect the interface available to C<XS> code go here.
556Other significant internal changes for future core maintainers should
557be noted as well.
558
559[ List each test improvement as a =item entry ]
560
561=over 4
562
09d86ea5 563=item Removed C<PERL_POLLUTE>
e90f0e29 564
09d86ea5
FR
565The option to define C<PERL_POLLUTE> to expose older 5.005 symbols for backwards
566compatibility has been removed. It's use was always discouraged, and MakeMaker
567contains a more specific escape hatch:
568
569 perl Makefile.PL POLLUTE=1
570
571This can be used for modules that have not been upgraded to 5.6 naming
572conventions (and really should be completely obsolete by now).
573
8f7d8cf4
FR
574=item Added C<PERL_STATIC_INLINE>
575
576The C<PERL_STATIC_INLINE> define has been added to provide the buest-guess
577incantation to use for static inline functions, if the C compiler supports
578C99-style static inline. If it doesn't, it'll give a plain C<static>.
579
580C<HAS_STATIC_INLINE> can be used to check if the compiler actually supports
581inline functions.
582
e90f0e29
DG
583=back
584
585=head1 Selected Bug Fixes
586
587XXX Important bug fixes in the core language are summarised here.
588Bug fixes in files in F<ext/> and F<lib/> are best summarised in
589L</Modules and Pragmata>.
590
591[ List each fix as a =item entry ]
592
593=over 4
594
595=item *
596
48792a70
FR
597A possible memory leak when using L<caller()|perlfunc/"caller EXPR"> to set
598C<@DB::args> has been fixed.
09d86ea5
FR
599
600=item *
601
602Several memory leaks when loading XS modules were fixed.
e90f0e29 603
5aa76647
FR
604=item *
605
606A panic in the regular expression optimizer has been fixed (RT#75762).
607
608=item *
609
610Assignments to lvalue subroutines now honor copy-on-write behavior again, which
611has been broken since version 5.10.0 (RT#75656).
612
dbce4399
FR
613=item *
614
615Assignments to glob copies now behave just like assignments to regular globs
616(RT#1804).
617
618=item *
619
620Within signal handlers, C<$!> is now implicitly localized.
621
874cd4e1
FR
622=item *
623
624L<readline|perlfunc/"readline EXPR"> now honors C<< <> >> overloading on tied
625arguments.
626
6f3f41ca
FR
627=item *
628
643222e1 629L<substr()|perlfunc/"substr EXPR,OFFSET,LENGTH,REPLACEMENT">,
6f3f41ca
FR
630L<pos()|perlfunc/"index STR,SUBSTR,POSITION">, L<keys()|perlfunc/"keys HASH">,
631and L<vec()|perlfunc/"vec EXPR,OFFSET,BITS"> could, when used in combination
632with lvalues, result in leaking the scalar value they operate on, and cause its
633destruction to happen too late. This has now been fixed.
634
8f7d8cf4
FR
635=item *
636
637Building with C<PERL_GLOBAL_STRUCT>, which has been broken accidentally in
6385.13.3, now works again.
639
e90f0e29
DG
640=back
641
642=head1 Known Problems
643
644XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
645tests that had to be C<TODO>ed for the release would be noted here, unless
646they were specific to a particular platform (see below).
647
648This is a list of some significant unfixed bugs, which are regressions
649from either 5.XXX.XXX or 5.XXX.XXX.
650
651[ List each fix as a =item entry ]
652
653=over 4
654
655=item *
656
643222e1
FR
657The changes in L<substr()|perlfunc/"substr EXPR,OFFSET,LENGTH,REPLACEMENT">
658break L<HTML::Parser>. A patch has already been applied to its git repository
659and will hopefully be released shortly.
e90f0e29
DG
660
661=back
662
663=head1 Obituary
664
665XXX If any significant core contributor has died, we've added a short obituary
666here.
667
668=head1 Acknowledgements
669
670XXX The list of people to thank goes here.
671
672=head1 Reporting Bugs
673
674If you find what you think is a bug, you might check the articles
675recently posted to the comp.lang.perl.misc newsgroup and the perl
676bug database at http://rt.perl.org/perlbug/ . There may also be
677information at http://www.perl.org/ , the Perl Home Page.
678
679If you believe you have an unreported bug, please run the B<perlbug>
680program included with your release. Be sure to trim your bug down
681to a tiny but sufficient test case. Your bug report, along with the
682output of C<perl -V>, will be sent off to perlbug@perl.org to be
683analysed by the Perl porting team.
684
685If the bug you are reporting has security implications, which make it
686inappropriate to send to a publicly archived mailing list, then please send
687it to perl5-security-report@perl.org. This points to a closed subscription
688unarchived mailing list, which includes all the core committers, who be able
689to help assess the impact of issues, figure out a resolution, and help
690co-ordinate the release of patches to mitigate or fix the problem across all
691platforms on which Perl is supported. Please only use this address for
692security issues in the Perl core, not for modules independently
693distributed on CPAN.
694
695=head1 SEE ALSO
696
697The F<Changes> file for an explanation of how to view exhaustive details
698on what changed.
699
700The F<INSTALL> file for how to build Perl.
701
702The F<README> file for general stuff.
703
704The F<Artistic> and F<Copying> files for copyright information.
705
706=cut