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