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