This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for ee3818ca2c5e (Can’t coerce readonly REF)
[perl5.git] / pod / perldelta.pod
... / ...
CommitLineData
1=encoding utf8
2
3=head1 NAME
4
5[ this is a template for a new perldelta file. Any text flagged as XXX needs
6to be processed before release. ]
7
8perldelta - what is new for perl v5.19.2
9
10=head1 DESCRIPTION
11
12This document describes differences between the 5.19.1 release and the 5.19.2
13release.
14
15If you are upgrading from an earlier release such as 5.19.0, first read
16L<perl5191delta>, which describes differences between 5.19.0 and 5.19.1.
17
18=head1 Notice
19
20XXX Any important notices here
21
22=head1 Core Enhancements
23
24XXX New core language features go here. Summarize user-visible core language
25enhancements. Particularly prominent performance optimisations could go
26here, but most should go in the L</Performance Enhancements> section.
27
28=head2 More consistent prototype parsing
29
30Multiple semicolons in subroutine prototypes have long been tolerated and
31treated as a single semicolon. There was one case where this did not
32happen. A subroutine whose prototype begins with "*" or ";*" can affect
33whether a bareword is considered a method name or sub call. This now
34applies also to ";;;*".
35
36Whitespace has long been allowed inside subroutine prototypes, so
37C<sub( $ $ )> is equivalent to C<sub($$)>. But it was stripped when the
38subroutine was parse. Hence, whitespace was I<not> allowed in prototypes
39set by C<Scalar::Util::set_prototype>. Now it is permitted, and the parser
40no longer strips whitespace. This means C<prototype &mysub> returns the
41original prototype, whitespace and all.
42
43=head1 Security
44
45XXX Any security-related notices go here. In particular, any security
46vulnerabilities closed should be noted here rather than in the
47L</Selected Bug Fixes> section.
48
49[ List each security issue as a =head2 entry ]
50
51=head1 Incompatible Changes
52
53XXX For a release on a stable branch, this section aspires to be:
54
55 There are no changes intentionally incompatible with 5.XXX.XXX
56 If any exist, they are bugs, and we request that you submit a
57 report. See L</Reporting Bugs> below.
58
59[ List each incompatible change as a =head2 entry ]
60
61=head1 Deprecations
62
63XXX Any deprecated features, syntax, modules etc. should be listed here.
64
65=head2 Module removals
66
67XXX Remove this section if inapplicable.
68
69The following modules will be removed from the core distribution in a
70future release, and will at that time need to be installed from CPAN.
71Distributions on CPAN which require these modules will need to list them as
72prerequisites.
73
74The core versions of these modules will now issue C<"deprecated">-category
75warnings to alert you to this fact. To silence these deprecation warnings,
76install the modules in question from CPAN.
77
78Note that these are (with rare exceptions) fine modules that you are encouraged
79to continue to use. Their disinclusion from core primarily hinges on their
80necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
81not usually on concerns over their design.
82
83=over
84
85XXX Note that deprecated modules should be listed here even if they are listed
86as an updated module in the L</Modules and Pragmata> section.
87
88=back
89
90[ List each other deprecation as a =head2 entry ]
91
92=head1 Performance Enhancements
93
94XXX Changes which enhance performance without changing behaviour go here.
95There may well be none in a stable release.
96
97[ List each enhancement as a =item entry ]
98
99=over 4
100
101=item *
102
103XXX
104
105=back
106
107=head1 Modules and Pragmata
108
109XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
110go here. If Module::CoreList is updated, generate an initial draft of the
111following sections using F<Porting/corelist-perldelta.pl>, which prints stub
112entries to STDOUT. Results can be pasted in place of the '=head2' entries
113below. A paragraph summary for important changes should then be added by hand.
114In an ideal world, dual-life modules would have a F<Changes> file that could be
115cribbed.
116
117[ Within each section, list entries as a =item entry ]
118
119=head2 New Modules and Pragmata
120
121=over 4
122
123=item *
124
125XXX
126
127=back
128
129=head2 Updated Modules and Pragmata
130
131=over 4
132
133=item *
134
135L<ExtUtils::Embed> has been upgraded from version 1.30 to 1.31
136
137The generated C<C> code now incorporates bug fixes present in
138F<miniperlmain.c>, and has whitespace changes. It now uses
139C<#include "..."> for header files instead of C<< #include <...> >>.
140This should not make any difference, unless programs embedding C<libperl>
141happen to have local and incompatible files named F<EXTERN.h>, F<XSUB.h> or
142F<perl.h>, as these will now be picked up instead of the installed Perl
143headers.
144
145=item *
146
147L<ExtUtils::Miniperl> has been upgraded and given a version of 1.
148Previously it did not have a version number.
149
150C<writemain()> now takes an optional first argument. A reference to a scalar
151is treated as a filename to be opened and written to. Any other reference is
152used as the filehandle to write to. Otherwise the existing default remains,
153to write to C<STDOUT>.
154
155C<writemain()> has been refactored to use functions from L<ExtUtils::Embed>,
156reducing code size and duplication. The internal function C<canon()> has been
157deleted.
158
159=item *
160
161L<POSIX> has been upgraded from version 1.33 to 1.34.
162
163C<POSIX::AUTOLOAD> will no longer infinitely recurse if the shared
164object fails to load.
165
166=item *
167
168L<Storable> has been upgraded from version 2.43 to 2.44.
169
170Calling C<STORABLE_attach> hooks no longer leaks memory. [perl #118829]
171
172=back
173
174=head2 Removed Modules and Pragmata
175
176=over 4
177
178=item *
179
180XXX
181
182=back
183
184=head1 Documentation
185
186XXX Changes to files in F<pod/> go here. Consider grouping entries by
187file and be sure to link to the appropriate page, e.g. L<perlfunc>.
188
189=head2 New Documentation
190
191XXX Changes which create B<new> files in F<pod/> go here.
192
193=head3 L<XXX>
194
195XXX Description of the purpose of the new file here
196
197=head2 Changes to Existing Documentation
198
199XXX Changes which significantly change existing files in F<pod/> go here.
200However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
201section.
202
203=head3 L<perlexperiment>
204
205=over 4
206
207=item *
208
209Code in regular expressions, regular expression backtracking verbs,
210and lvalue subroutines are no longer listed as experimental. (This
211also affects L<perlre> and L<perlsub>.)
212
213=back
214
215=head1 Diagnostics
216
217The following additions or changes have been made to diagnostic output,
218including warnings and fatal error messages. For the complete list of
219diagnostic messages, see L<perldiag>.
220
221XXX New or changed warnings emitted by the core's C<C> code go here. Also
222include any changes in L<perldiag> that reconcile it to the C<C> code.
223
224=head2 New Diagnostics
225
226XXX Newly added diagnostic messages go under here, separated into New Errors
227and New Warnings
228
229=head3 New Errors
230
231=over 4
232
233=item *
234
235XXX L<message|perldiag/"message">
236
237=back
238
239=head3 New Warnings
240
241=over 4
242
243=item *
244
245XXX L<message|perldiag/"message">
246
247=back
248
249=head2 Changes to Existing Diagnostics
250
251XXX Changes (i.e. rewording) of diagnostic messages go here
252
253=over 4
254
255=item *
256
257Under rare circumstances, one could get a "Can't coerce readonly REF to
258string" instead of the customary "Modification of a read-only value". This
259alternate error message has been removed.
260
261=back
262
263=head1 Utility Changes
264
265XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
266Most of these are built within the directories F<utils> and F<x2p>.
267
268[ List utility changes as a =head3 entry for each utility and =item
269entries for each change
270Use L<XXX> with program names to get proper documentation linking. ]
271
272=head3 L<XXX>
273
274=over 4
275
276=item *
277
278XXX
279
280=back
281
282=head1 Configuration and Compilation
283
284XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
285go here. Any other changes to the Perl build process should be listed here.
286However, any platform-specific changes should be listed in the
287L</Platform Support> section, instead.
288
289[ List changes as a =item entry ].
290
291=over 4
292
293=item *
294
295F<installperl> and F<installman>'s option handling has been refactored to use
296L<Getopt::Long>. Both are used by the F<Makefile> C<install> targets, and
297are not installed, so these changes are only likely to affect custom
298installation scripts.
299
300=over 4
301
302=item *
303
304single letter options now also have long names
305
306=item *
307
308invalid options are now rejected
309
310=item *
311
312command line arguments that are not options are now rejected
313
314=item *
315
316Each now has a C<--help> option to display the usage message.
317
318=back
319
320The behaviour for all valid documented invocations is unchanged.
321
322=back
323
324=head1 Testing
325
326XXX Any significant changes to the testing of a freshly built perl should be
327listed here. Changes which create B<new> files in F<t/> go here as do any
328large changes to the testing harness (e.g. when parallel testing was added).
329Changes to existing files in F<t/> aren't worth summarizing, although the bugs
330that they represent may be covered elsewhere.
331
332[ List each test improvement as a =item entry ]
333
334=over 4
335
336=item *
337
338XXX
339
340=back
341
342=head1 Platform Support
343
344XXX Any changes to platform support should be listed in the sections below.
345
346[ Within the sections, list each platform as a =item entry with specific
347changes as paragraphs below it. ]
348
349=head2 New Platforms
350
351XXX List any platforms that this version of perl compiles on, that previous
352versions did not. These will either be enabled by new files in the F<hints/>
353directories, or new subdirectories and F<README> files at the top level of the
354source tree.
355
356=over 4
357
358=item XXX-some-platform
359
360XXX
361
362=back
363
364=head2 Discontinued Platforms
365
366XXX List any platforms that this version of perl no longer compiles on.
367
368=over 4
369
370=item XXX-some-platform
371
372XXX
373
374=back
375
376=head2 Platform-Specific Notes
377
378XXX List any changes for specific platforms. This could include configuration
379and compilation changes or changes in portability/compatibility. However,
380changes within modules for platforms should generally be listed in the
381L</Modules and Pragmata> section.
382
383=over 4
384
385=item MidnightBSD
386
387C<objformat> was removed from version 0.4-RELEASE of MidnightBSD and had been
388deprecated on earlier versions. This caused the build environment to be
389erroneously configured for C<a.out> rather than C<elf>. This has been now
390been corrected.
391
392=back
393
394=head1 Internal Changes
395
396XXX Changes which affect the interface available to C<XS> code go here. Other
397significant internal changes for future core maintainers should be noted as
398well.
399
400[ List each change as a =item entry ]
401
402=over 4
403
404=item *
405
406The Makefile shortcut targets for many rarely (or never) used testing and
407profiling targets have been removed, or merged into the only other Makefile
408target that uses them. Specifically, these targets are gone, along with
409documentation that referenced them or explained how to use them:
410
411 check.third check.utf16 check.utf8 coretest minitest.prep
412 minitest.utf16 perl.config.dashg perl.config.dashpg
413 perl.config.gcov perl.gcov perl.gprof perl.gprof.config
414 perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix
415 perl.third perl.third.config perl.valgrind.config purecovperl
416 pureperl quantperl test.deparse test.taintwarn test.third
417 test.torture test.utf16 test.utf8 test_notty.deparse
418 test_notty.third test_notty.valgrind test_prep.third
419 test_prep.valgrind torturetest ucheck ucheck.third ucheck.utf16
420 ucheck.valgrind utest utest.third utest.utf16 utest.valgrind
421
422It's still possible to run the relevant commands by "hand" - no underlying
423functionality has been removed.
424
425=item *
426
427It is now possible to keep Perl from initializing locale handling.
428For the most part, Perl doesn't pay attention to locale. (See
429L<perllocale>.) Nonetheless, until now, on startup, it has always
430initialized locale handling to the system default, just in case the
431program being executed ends up using locales. (This is one of the first
432things a locale-aware program should do, long before Perl knows if it
433will actually be needed or not.) This works well except when Perl is
434embedded in another application which wants a locale that isn't the
435system default. Now, if the environment variable
436C<PERL_SKIP_LOCALE_INIT> is set at the time Perl is started, this
437initialization step is skipped. Prior to this, on Windows platforms,
438the only workaround for this deficiency was to use a hacked-up copy of
439internal Perl code. Applications that need to use older Perls can
440discover if the embedded Perl they are using needs the workaround by
441testing that the C preprocessor symbol C<HAS_SKIP_LOCALE_INIT> is not
442defined. (RT #38193)
443
444=item *
445
446C<BmRARE> and C<BmPREVIOUS> have been removed. They were not used anywhere
447and are not part of the API. For XS modules, they are now #defined as 0.
448
449=item *
450
451C<sv_force_normal>, which usually croaks on read-only values, used to allow
452read-only values to be modified at compile time. This has been changed to
453croak on read-only values regardless. This change uncovered several core
454bugs.
455
456=back
457
458=head1 Selected Bug Fixes
459
460XXX Important bug fixes in the core language are summarized here. Bug fixes in
461files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
462
463[ List each fix as a =item entry ]
464
465=over 4
466
467=item *
468
469There have been several fixes related to Perl's handling of locales. perl
470#38193 was described above in L</Internal Changes>.
471Also fixed is #112208 in which the error string in C<$!> displayed as
472garbage in many UTF-8 locales;
473#118197, where the radix (decimal point) character had to be an ASCII
474character (which doesn't work for some non-Western languages);
475and #115808, in which C<POSIX::setlocale()> on failure returned an
476C<undef> which didn't warn about not being defined even if those
477warnings were enabled.
478
479=item *
480
481The dtrace sub-entry probe now works with lexical subs, instead of
482crashing [perl #118305].
483
484=item *
485
486Compiling a C<split> operator whose third argument is a named constant
487evaulating to 0 no longer causes the constant's value to change.
488
489=item *
490
491A named constant used as the second argument to C<index> no longer gets
492coerced to a string if it is a reference, regular expression, dualvar, etc.
493
494=item *
495
496A named constant evaluating to the undefined value used as the second
497argument to C<index> no longer produces "uninitialized" warnings at compile
498time. It will still produce them at run time.
499
500=item *
501
502When a scalar was returned from a subroutine in @INC, the referenced scalar
503was magically converted into an IO thingy, possibly resulting in "Bizarre
504copy" errors if that scalar continued to be used elsewhere. Now Perl uses
505an internal copy of the scalar instead.
506
507=back
508
509=head1 Known Problems
510
511XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
512tests that had to be C<TODO>ed for the release would be noted here. Unfixed
513platform specific bugs also go here.
514
515[ List each fix as a =item entry ]
516
517=over 4
518
519=item *
520
521XXX
522
523=back
524
525=head1 Obituary
526
527XXX If any significant core contributor has died, we've added a short obituary
528here.
529
530=head1 Acknowledgements
531
532XXX Generate this with:
533
534 perl Porting/acknowledgements.pl v5.19.1..HEAD
535
536=head1 Reporting Bugs
537
538If you find what you think is a bug, you might check the articles recently
539posted to the comp.lang.perl.misc newsgroup and the perl bug database at
540http://rt.perl.org/perlbug/ . There may also be information at
541http://www.perl.org/ , the Perl Home Page.
542
543If you believe you have an unreported bug, please run the L<perlbug> program
544included with your release. Be sure to trim your bug down to a tiny but
545sufficient test case. Your bug report, along with the output of C<perl -V>,
546will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
547
548If the bug you are reporting has security implications, which make it
549inappropriate to send to a publicly archived mailing list, then please send it
550to perl5-security-report@perl.org. This points to a closed subscription
551unarchived mailing list, which includes all the core committers, who will be
552able to help assess the impact of issues, figure out a resolution, and help
553co-ordinate the release of patches to mitigate or fix the problem across all
554platforms on which Perl is supported. Please only use this address for
555security issues in the Perl core, not for modules independently distributed on
556CPAN.
557
558=head1 SEE ALSO
559
560The F<Changes> file for an explanation of how to view exhaustive details on
561what changed.
562
563The F<INSTALL> file for how to build Perl.
564
565The F<README> file for general stuff.
566
567The F<Artistic> and F<Copying> files for copyright information.
568
569=cut