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