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