This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: mention OP_PADRANGE
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
11e375e0
FC
3=for todo
4284167a smueller Add C define to remove taint support from perl
5ba593ad davem clone() wasn't cloning the whole stack
388a574e 67dc8663 demerphq Hash Function Change - Murmur hash and true per process...
11e375e0 7
44691e6f
AB
8=head1 NAME
9
5d8c8c8a
FR
10[ this is a template for a new perldelta file. Any text flagged as XXX needs
11to be processed before release. ]
12
7e7cfa2d 13perldelta - what is new for perl v5.17.6
e128ab2c 14
4eabcf70 15=head1 DESCRIPTION
6db9054f 16
7e7cfa2d 17This document describes differences between the 5.17.5 release and the 5.17.6
e08634c5 18release.
6db9054f 19
7e7cfa2d
FR
20If you are upgrading from an earlier release such as 5.17.4, first read
21L<perl5175delta>, which describes differences between 5.17.4 and 5.17.5.
5faa50e9 22
5d8c8c8a 23=head1 Notice
b932b266 24
5d8c8c8a 25XXX Any important notices here
b932b266 26
5d8c8c8a 27=head1 Core Enhancements
4db91b87 28
5d8c8c8a
FR
29XXX New core language features go here. Summarize user-visible core language
30enhancements. Particularly prominent performance optimisations could go
31here, but most should go in the L</Performance Enhancements> section.
4db91b87 32
5d8c8c8a 33[ List each enhancement as a =head2 entry ]
4db91b87 34
bde9e88d
KW
35=head2 Character name aliases may now include non-Latin1-range characters
36
37It is possible to define your own names for characters for use in
38C<\N{...}>, C<charnames::vianame()>, etc. These names can now be
39comprised of characters from the whole Unicode range. This allows for
40names to be in your native language, and not just English. Certain
41restrictions apply to the characters that may be used (you can't define
42a name that has punctuation in it, for example). See L<charnames/CUSTOM
43ALIASES>.
44
5d8c8c8a 45=head1 Security
4db91b87 46
5d8c8c8a
FR
47XXX Any security-related notices go here. In particular, any security
48vulnerabilities closed should be noted here rather than in the
49L</Selected Bug Fixes> section.
4db91b87 50
5d8c8c8a 51[ List each security issue as a =head2 entry ]
4db91b87 52
916c45d9 53=head1 Incompatible Changes
9c5f5e7a 54
5d8c8c8a 55XXX For a release on a stable branch, this section aspires to be:
4db91b87 56
5d8c8c8a
FR
57 There are no changes intentionally incompatible with 5.XXX.XXX
58 If any exist, they are bugs, and we request that you submit a
59 report. See L</Reporting Bugs> below.
4db91b87 60
5d8c8c8a 61[ List each incompatible change as a =head2 entry ]
4db91b87 62
90249f0a
KW
63=head2 An unknown character name in C<\N{...}> is now a syntax error
64
65Previously, it warned, and the Unicode REPLACEMENT CHARACTER was
66substituted. Unicode now recommends that this situation be a syntax
67error. Also, the previous behavior led to some confusing warnings and
68behaviors, and since the REPLACEMENT CHARACTER has no use other than as
69a stand-in for some unknown character, any code that has this problem is
70buggy.
71
4d7cd482
KW
72=head2 Formerly deprecated characters in C<\N{}> character name aliases are now errors.
73
74Since v5.12.0, it has been deprecated to use certain characters in
75user-defined C<\N{...}> character names. These now cause a syntax
76error. For example, it is now an error to begin a name with a digit,
77such as in
78
79 my $undraftable = "\N{4F}"; # Syntax error!
80
81or to have commas anywhere in the name. See L<charnames/CUSTOM ALIASES>
82
5d8c8c8a 83=head1 Deprecations
4db91b87 84
5d8c8c8a
FR
85XXX Any deprecated features, syntax, modules etc. should be listed here. In
86particular, deprecated modules should be listed here even if they are listed as
87an updated module in the L</Modules and Pragmata> section.
4db91b87 88
5d8c8c8a 89[ List each deprecation as a =head2 entry ]
4db91b87 90
5d8c8c8a 91=head1 Performance Enhancements
45f11e9c 92
5d8c8c8a
FR
93XXX Changes which enhance performance without changing behaviour go here.
94There may well be none in a stable release.
45f11e9c 95
5d8c8c8a 96[ List each enhancement as a =item entry ]
9c5f5e7a 97
916c45d9 98=over 4
338a1057
SH
99
100=item *
101
11e375e0
FC
102Lists of lexical variable declarations (C<my($x, $y)>) are now optimised
103down to a single op, and are hence faster than before.
0ace302a 104
5d8c8c8a 105=back
5faa50e9 106
5d8c8c8a 107=head1 Modules and Pragmata
5faa50e9 108
5d8c8c8a
FR
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.
5faa50e9 116
5d8c8c8a 117[ Within each section, list entries as a =item entry ]
5faa50e9 118
5d8c8c8a 119=head2 New Modules and Pragmata
5faa50e9 120
5d8c8c8a 121=over 4
5faa50e9
FR
122
123=item *
124
5d8c8c8a 125XXX
5faa50e9 126
916c45d9 127=back
0ace302a 128
916c45d9 129=head2 Updated Modules and Pragmata
4cc02608 130
916c45d9 131=over 4
e7b92d54
SH
132
133=item *
134
11e375e0
FC
135L<Carp> has been upgraded from version 1.27 to 1.28.
136
137Carp is no longer confused when C<caller> returns undef for a package that
138has been deleted.
139
140=item *
141
7b379596
CB
142L<CPAN> has been upgraded from version 1.98 to 1.99_51.
143
5c26a176
SH
144=item *
145
146L<DynaLoader> has been upgraded from version 1.16 to 1.17.
147
cb077ed2
DD
148=item *
149
11e375e0
FC
150L<Env> has been upgraded from version 1.03 to 1.04.
151
152Its SPLICE implementation no longer misbehaves in list context.
153
154=item *
155
cb077ed2
DD
156L<Tie::Hash::NamedCapture> has been upgraded from version 0.08 to 0.09.
157
5d8c8c8a 158=back
5f877a7f 159
5d8c8c8a 160=head2 Removed Modules and Pragmata
5f877a7f 161
5d8c8c8a 162=over 4
2a527d37
SH
163
164=item *
165
5d8c8c8a 166XXX
5faa50e9 167
5d8c8c8a 168=back
5faa50e9 169
5d8c8c8a 170=head1 Documentation
5faa50e9 171
5d8c8c8a
FR
172XXX Changes to files in F<pod/> go here. Consider grouping entries by
173file and be sure to link to the appropriate page, e.g. L<perlfunc>.
9c5f5e7a 174
5d8c8c8a 175=head2 New Documentation
5faa50e9 176
5d8c8c8a 177XXX Changes which create B<new> files in F<pod/> go here.
eebee32b 178
5d8c8c8a 179=head3 L<XXX>
eebee32b 180
5d8c8c8a 181XXX Description of the purpose of the new file here
1ea91bbe 182
5d8c8c8a 183=head2 Changes to Existing Documentation
1ea91bbe 184
5d8c8c8a
FR
185XXX Changes which significantly change existing files in F<pod/> go here.
186However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
187section.
5faa50e9 188
c9ac5216 189=head3 L<perlref>
5faa50e9 190
5d8c8c8a 191=over 4
1ea91bbe
FR
192
193=item *
194
c9ac5216
FC
195C<*foo{NAME}> and C<*foo{PACKAGE}>, which have existed since perl 5.005,
196are now documented.
5faa50e9 197
916c45d9 198=back
9c5f5e7a 199
4eabcf70 200=head1 Diagnostics
05c8f9ed 201
4eabcf70
TC
202The following additions or changes have been made to diagnostic output,
203including warnings and fatal error messages. For the complete list of
204diagnostic messages, see L<perldiag>.
ceb0881c 205
5d8c8c8a
FR
206XXX New or changed warnings emitted by the core's C<C> code go here. Also
207include any changes in L<perldiag> that reconcile it to the C<C> code.
90519d0f 208
5d8c8c8a 209=head2 New Diagnostics
4db91b87 210
5d8c8c8a
FR
211XXX Newly added diagnostic messages go under here, separated into New Errors
212and New Warnings
4db91b87 213
5d8c8c8a 214=head3 New Errors
4db91b87 215
5d8c8c8a 216=over 4
4db91b87
FC
217
218=item *
219
5d8c8c8a 220XXX L<message|perldiag/"message">
4db91b87 221
5d8c8c8a 222=back
4db91b87 223
5d8c8c8a 224=head3 New Warnings
4db91b87 225
5d8c8c8a 226=over 4
90519d0f 227
1ea91bbe
FR
228=item *
229
5d8c8c8a 230XXX L<message|perldiag/"message">
1ea91bbe 231
61174fb5 232=back
422287bf 233
916c45d9 234=head2 Changes to Existing Diagnostics
c95d4104 235
5d8c8c8a
FR
236XXX Changes (i.e. rewording) of diagnostic messages go here
237
4eabcf70 238=over 4
7ab2ea42 239
916c45d9 240=item *
7ab2ea42 241
7e7cfa2d 242XXX Describe change here
4db91b87 243
5d8c8c8a 244=back
1ea91bbe 245
5d8c8c8a 246=head1 Utility Changes
1ea91bbe 247
5d8c8c8a
FR
248XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
249Most of these are built within the directories F<utils> and F<x2p>.
1ea91bbe 250
5d8c8c8a
FR
251[ List utility changes as a =head3 entry for each utility and =item
252entries for each change
253Use L<XXX> with program names to get proper documentation linking. ]
1ea91bbe 254
7e7cfa2d 255=head3 L<XXX>
d7f7c515 256
916c45d9 257=over 4
afc04f16 258
b4cf37f5
FC
259=item *
260
7e7cfa2d 261XXX
b4cf37f5 262
916c45d9 263=back
b4cf37f5 264
5d8c8c8a 265=head1 Configuration and Compilation
a21a3918 266
5d8c8c8a
FR
267XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
268go here. Any other changes to the Perl build process should be listed here.
269However, any platform-specific changes should be listed in the
270L</Platform Support> section, instead.
a21a3918 271
5d8c8c8a 272[ List changes as a =item entry ].
a21a3918 273
916c45d9 274=over 4
60ca243a 275
5d8c8c8a 276=item *
eebee32b 277
5d8c8c8a 278XXX
eebee32b 279
916c45d9 280=back
d91f1bc9 281
5d8c8c8a 282=head1 Testing
d91f1bc9 283
5d8c8c8a
FR
284XXX Any significant changes to the testing of a freshly built perl should be
285listed here. Changes which create B<new> files in F<t/> go here as do any
286large changes to the testing harness (e.g. when parallel testing was added).
287Changes to existing files in F<t/> aren't worth summarizing, although the bugs
288that they represent may be covered elsewhere.
3c774534 289
5d8c8c8a 290[ List each test improvement as a =item entry ]
050862bb 291
5d8c8c8a 292=over 4
050862bb
DM
293
294=item *
295
5d8c8c8a 296XXX
050862bb 297
916c45d9 298=back
d91f1bc9 299
5d8c8c8a 300=head1 Platform Support
4db91b87 301
5d8c8c8a 302XXX Any changes to platform support should be listed in the sections below.
4db91b87 303
5d8c8c8a
FR
304[ Within the sections, list each platform as a =item entry with specific
305changes as paragraphs below it. ]
4db91b87 306
5d8c8c8a 307=head2 New Platforms
4db91b87 308
5d8c8c8a
FR
309XXX List any platforms that this version of perl compiles on, that previous
310versions did not. These will either be enabled by new files in the F<hints/>
311directories, or new subdirectories and F<README> files at the top level of the
312source tree.
4db91b87 313
5d8c8c8a 314=over 4
4db91b87 315
5d8c8c8a 316=item XXX-some-platform
4db91b87 317
5d8c8c8a 318XXX
4db91b87 319
5d8c8c8a 320=back
4db91b87 321
5d8c8c8a 322=head2 Discontinued Platforms
4db91b87 323
5d8c8c8a 324=over 4
4db91b87 325
739a0b84 326=item EPOC
4db91b87 327
739a0b84
NC
328Support code relating to EPOC has been removed. EPOC was a family of
329operating systems developed by Psion for mobile devices. It was the
330predecessor of Symbian. The port was last updated in April 2002.
4db91b87 331
5d8c8c8a 332=back
5faa50e9 333
5d8c8c8a 334=head2 Platform-Specific Notes
5faa50e9 335
5d8c8c8a
FR
336XXX List any changes for specific platforms. This could include configuration
337and compilation changes or changes in portability/compatibility. However,
338changes within modules for platforms should generally be listed in the
339L</Modules and Pragmata> section.
5faa50e9 340
5d8c8c8a 341=over 4
5faa50e9 342
7e7cfa2d 343=item XXX-some-platform
5faa50e9 344
7e7cfa2d 345XXX
5faa50e9 346
5d8c8c8a 347=back
5faa50e9 348
5d8c8c8a 349=head1 Internal Changes
5faa50e9 350
5d8c8c8a
FR
351XXX Changes which affect the interface available to C<XS> code go here. Other
352significant internal changes for future core maintainers should be noted as
353well.
5faa50e9 354
5d8c8c8a 355[ List each change as a =item entry ]
5faa50e9 356
5d8c8c8a 357=over 4
5faa50e9
FR
358
359=item *
360
cb077ed2
DD
361The private Perl_croak_no_modify has had its context parameter removed. It is
362now has a void prototype. Users of the public API croak_no_modify remain
363unaffected.
364
365=item *
366
11e375e0
FC
367Copy-on-write (shared hash key) scalars are no longer marked read-only.
368C<SvREADONLY> returns false on such an SV, but C<SvIsCOW> still returns
369true.
90814a4e 370
5ce83ae9
DM
371=item *
372
373A new op type, C<OP_PADRANGE> has been introduced. The perl peephole
374optimiser will, where possible, substitute a single padrange op for a
375pushmark followed by one or more pad ops, and possibly also skipping list
376and nextstate ops. In addition, the op can carry out the tasks associated
377with the RHS of a my(...) = @_ assignment, so those ops may be optimised
378away too.
379
5d8c8c8a 380=back
31c15ce5 381
5d8c8c8a 382=head1 Selected Bug Fixes
4db91b87 383
5d8c8c8a
FR
384XXX Important bug fixes in the core language are summarized here. Bug fixes in
385files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
4db91b87 386
5d8c8c8a 387[ List each fix as a =item entry ]
4db91b87 388
5d8c8c8a 389=over 4
4db91b87
FC
390
391=item *
392
11e375e0
FC
393Uninitialized warnings mentioning hash elements would only mention the
394element name if it was not in the first bucket of the hash, due to an
395off-by-one error.
396
397=item *
398
399A regular expression optimizer bug could cause multiline "^" to behave
400incorrectly in the presence of line breaks, such that
401C<"/\n\n" =~ m#\A(?:^/$)#im> would not match [perl #115242].
402
403=item *
404
405Failed C<fork> in list context no longer currupts the stack.
406C<@a = (1, 2, fork, 3)> used to gobble up the 2 and assign C<(1, undef, 3)>
407if the C<fork> call failed.
408
409=item *
410
411Numerous memory leaks have been fixed, mostly involving tied variables that
412die, regular expression character classes and code blocks, and syntax
413errors.
414
415=item *
416
417Assigning a regular expression (C<${qr//}>) to a variable that happens to
418hold a floating point number no longer causes assertion failures on
419debugging builds.
420
421=item *
422
423Assigning a regular expression to a scalar containing a number no longer
424causes subsequent nummification to produce random numbers.
425
426=item *
427
428Assigning a regular expression to a magic variable no longer wipes away the
429magic. This is a regression from 5.10.
430
431=item *
432
433Assigning a regular expression to a blessed scalar no longer results in
434crashes. This is also a regression from 5.10.
435
436=item *
437
438Regular expression can now be assigned to tied hash and array elements with
439flattening into strings.
440
441=item *
442
443Nummifying a regular expression no longer results in an uninitialized
444warning.
445
446=item *
447
448Negative array indices no longer cause EXISTS methods of tied variables to
449be ignored. This is a regression from 5.12.
450
451=item *
452
453Negative array indices no longer result in crashes on arrays tied to
454non-objects.
455
456=item *
457
458C<$x = "(?{})"; /a++(?{})+$x/x> no longer erroneous produces an error (just
459a warning, as expected). This was broken in 5.17.1.
460
461=item *
462
463C<$byte_overload .= $utf8> no longer results in doubly-encoded UTF8 if the
464left-hand scalar happened to have produced a UTF8 string the last time
465overloading was invoked.
466
467=item *
468
469C<goto &sub> now uses the current value of @_, instead of using the array
470the subroutine was originally called with. This means
471C<local @_ = (...); goto &sub> now works [perl #43077].
472
473=item *
474
475If a debugger is invoked recursively, it no longer stomps on its own
476lexical variables. Formerly under recursion all calls would share the same
477set of lexical variables [perl #115742].
2d9cd31f 478
c9ac5216
FC
479=item *
480
481C<*_{ARRAY}> returned from a subroutine no longer spontaneously
482becomes empty.
483
5d8c8c8a 484=back
4db91b87 485
5d8c8c8a 486=head1 Known Problems
4db91b87 487
5d8c8c8a
FR
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. Unfixed
490platform specific bugs also go here.
4db91b87 491
5d8c8c8a 492[ List each fix as a =item entry ]
4db91b87 493
5d8c8c8a 494=over 4
4db91b87 495
45f11e9c
FC
496=item *
497
5d8c8c8a 498XXX
45f11e9c 499
916c45d9 500=back
d91f1bc9 501
5d8c8c8a 502=head1 Obituary
d91f1bc9 503
5d8c8c8a
FR
504XXX If any significant core contributor has died, we've added a short obituary
505here.
90519d0f 506
916c45d9 507=head1 Acknowledgements
05bee12a 508
5d8c8c8a
FR
509XXX Generate this with:
510
7e7cfa2d 511 perl Porting/acknowledgements.pl v5.17.5..HEAD
29cf780c 512
44691e6f
AB
513=head1 Reporting Bugs
514
e08634c5
SH
515If you find what you think is a bug, you might check the articles recently
516posted to the comp.lang.perl.misc newsgroup and the perl bug database at
517http://rt.perl.org/perlbug/ . There may also be information at
518http://www.perl.org/ , the Perl Home Page.
44691e6f 519
e08634c5
SH
520If you believe you have an unreported bug, please run the L<perlbug> program
521included with your release. Be sure to trim your bug down to a tiny but
522sufficient test case. Your bug report, along with the output of C<perl -V>,
523will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
524
525If the bug you are reporting has security implications, which make it
e08634c5
SH
526inappropriate to send to a publicly archived mailing list, then please send it
527to perl5-security-report@perl.org. This points to a closed subscription
528unarchived mailing list, which includes all the core committers, who will be
529able to help assess the impact of issues, figure out a resolution, and help
f9001595 530co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
531platforms on which Perl is supported. Please only use this address for
532security issues in the Perl core, not for modules independently distributed on
533CPAN.
44691e6f
AB
534
535=head1 SEE ALSO
536
e08634c5
SH
537The F<Changes> file for an explanation of how to view exhaustive details on
538what changed.
44691e6f
AB
539
540The F<INSTALL> file for how to build Perl.
541
542The F<README> file for general stuff.
543
544The F<Artistic> and F<Copying> files for copyright information.
545
546=cut