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