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