This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Module::CoreList for 5.19.7
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
e6898945 5perldelta - what is new for perl v5.19.7
e128ab2c 6
4eabcf70 7=head1 DESCRIPTION
6db9054f 8
e6898945 9This document describes differences between the 5.19.6 release and the 5.19.7
e08634c5 10release.
6db9054f 11
e6898945
CBW
12If you are upgrading from an earlier release such as 5.19.5, first read
13L<perl5196delta>, which describes differences between 5.19.5 and 5.19.6.
14
28ee95bc 15=head1 Core Enhancements
12ea29d9 16
b0e181c7
FC
17=head2 Postfix syntax for maximum array index
18
19The postfix notation C<< ->$#* >> has been added, to match the similar
20postfix operators added in 5.19.5. C<< $foo->$#* >> is equivalent to
21C<$#$foo>. See L<perlref>.
22
e6898945
CBW
23=head1 Incompatible Changes
24
22730142
TC
25=head2 Data::Dumper's output may change
26
27Depending on the data structures dumped and the settings set for
28Data::Dumper, the dumped output may have changed from previous
29versions.
30
31If you have tests that depend on the exact output of Data::Dumper,
32they may fail.
33
34To avoid this problem in your code, test against the data structure
35from evaluating the dumped structure, instead of the dump itself.
36
28ee95bc 37=head1 Deprecations
6ffbec2c 38
28ee95bc 39=head2 Module removals
6ffbec2c 40
e6898945
CBW
41XXX Remove this section if inapplicable.
42
28ee95bc
SH
43The following modules will be removed from the core distribution in a
44future release, and will at that time need to be installed from CPAN.
45Distributions on CPAN which require these modules will need to list them as
46prerequisites.
1944fb52 47
28ee95bc
SH
48The core versions of these modules will now issue C<"deprecated">-category
49warnings to alert you to this fact. To silence these deprecation warnings,
50install the modules in question from CPAN.
1944fb52 51
28ee95bc
SH
52Note that these are (with rare exceptions) fine modules that you are encouraged
53to continue to use. Their disinclusion from core primarily hinges on their
54necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
55not usually on concerns over their design.
1944fb52 56
28ee95bc 57=over
1981f814 58
e6898945
CBW
59XXX Note that deprecated modules should be listed here even if they are listed
60as an updated module in the L</Modules and Pragmata> section.
1981f814 61
28ee95bc 62=back
229563a9 63
df5ac742 64=head2 C<< CGI.pm >>
3f0a0d6e 65
df5ac742 66The C<< CGI.pm >> module has been deprecated since version 3.64.
f90332ac 67
28ee95bc 68=head1 Modules and Pragmata
f90332ac 69
e6898945
CBW
70XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
71go here. If Module::CoreList is updated, generate an initial draft of the
2c5d738b
SH
72following sections using F<Porting/corelist-perldelta.pl>. A paragraph summary
73for important changes should then be added by hand. In an ideal world,
74dual-life modules would have a F<Changes> file that could be cribbed.
f90332ac 75
e6898945 76[ Within each section, list entries as a =item entry ]
b32cf70e 77
e6898945 78=head2 New Modules and Pragmata
033960a1 79
e6898945 80=over 4
b32cf70e
CBW
81
82=item *
83
e6898945 84XXX
b32cf70e 85
e6898945 86=back
b32cf70e 87
e6898945 88=head2 Updated Modules and Pragmata
b32cf70e 89
e6898945 90=over 4
b32cf70e
CBW
91
92=item *
93
63393c20
TC
94L<base> has been upgraded from version 2.19 to 2.20.
95
96C<base> now only ignores load failure on the requested module. [perl
97#120685]
98
99=item *
100
d5d60e0a
SH
101L<CGI> has been upgraded from version 3.63 to 3.64.
102
103Avoids a warning about "undefined variable in user_agent" in some cases, and
104updates L<CGI::Cookie> documentation to reflect that "HttpOnly" is widely
105supported.
b32cf70e 106
4c8323ec
SH
107=item *
108
86fbe58c
TC
109L<Data::Dumper> has been upgraded from version 2.149 to 2.150.
110
111Regular expression objects are now dumped in a form closer to their
112original source, eg. C< qr/abc/i > is dumped as exactly that instead of
113C< qr/(?^i:abc)/ >. [perl #82948]
114
22730142
TC
115Dumping of hash keys is now more consistent between the XS and perl
116implementations of L<Data::Dumper>, including how the C<quotekeys>
117option behaves. This may make tests that depend on the exact output
118of Data::Dumper to fail. [perl #120384]
119
86fbe58c
TC
120=item *
121
4c8323ec
SH
122L<File::Fetch> has been upgraded from version 0.44 to 0.46.
123
124Blacklists "ftp" on DragonflyBSD.
125
6b0ff4b4
TC
126=item *
127
128L<SDBM_File> has been upgraded from 1.10 to 1.11.
129
130Added access to SDBM constants and to opening SDBM files with explicit
131page and directory file names. [perl #114350]
132
e6898945 133=back
b32cf70e 134
e6898945 135=head2 Removed Modules and Pragmata
b32cf70e 136
e6898945 137=over 4
b32cf70e
CBW
138
139=item *
140
e6898945 141XXX
b32cf70e 142
e6898945 143=back
b32cf70e 144
e6898945 145=head1 Documentation
12cd6c6b 146
e6898945
CBW
147XXX Changes to files in F<pod/> go here. Consider grouping entries by
148file and be sure to link to the appropriate page, e.g. L<perlfunc>.
12cd6c6b 149
e6898945 150=head1 Diagnostics
b32cf70e 151
e6898945
CBW
152The following additions or changes have been made to diagnostic output,
153including warnings and fatal error messages. For the complete list of
154diagnostic messages, see L<perldiag>.
b32cf70e 155
e6898945
CBW
156XXX New or changed warnings emitted by the core's C<C> code go here. Also
157include any changes in L<perldiag> that reconcile it to the C<C> code.
b32cf70e 158
e6898945 159=head2 New Diagnostics
f63abf92 160
e6898945 161=head3 New Warnings
b32cf70e 162
e6898945 163=over 4
b32cf70e
CBW
164
165=item *
166
4fa6dd16
KW
167L<Useless use of greediness modifier|perldiag/"Useless use of greediness modifier '%c' in regex; marked by <-- HERE in m/%s/">
168
169This fixes [Perl #42957].
22f9c36a 170
e6898945 171=back
22f9c36a 172
e6898945 173=head2 Changes to Existing Diagnostics
e61cab1a 174
e6898945 175XXX Changes (i.e. rewording) of diagnostic messages go here
b32cf70e 176
e6898945 177=over 4
b32cf70e
CBW
178
179=item *
180
f8c38bcc
FC
181The error messages for C<my($a?$b$c)> and C<my(do{})> now mention
182"conditional expression" and "do block", respectively, instead of reading
183'Can't declare null operation in "my"'.
b32cf70e 184
e6898945 185=back
b32cf70e 186
e6898945 187=head1 Utility Changes
b32cf70e 188
df5ac742 189=head3 C<< Porting/corelist-perldelta.pl >>
be08498a 190
28ee95bc 191=over 4
52102bb4
SH
192
193=item *
194
df5ac742
A
195Ensure that the latest version of Module::CoreList is used when
196running the script.
befb5359 197
28ee95bc 198=back
befb5359 199
e6898945 200=head1 Testing
f90332ac 201
28ee95bc 202=over 4
411e93ce
SH
203
204=item *
205
9b5e399a
TC
206Various tests in F<t/porting/> are no longer skipped when the perl
207F<.git> directory is outside the perl tree and pointed to by
208C<$GIT_DIR>. [perl #120505]
c7a31d00 209
e6898945 210=back
f90332ac 211
e6898945 212=head1 Platform Support
8adfd064 213
28ee95bc 214=head2 Platform-Specific Notes
40d779aa 215
e6898945 216=over 4
40d779aa 217
a2b08671 218=item Windows
f4a01e9c 219
a2b08671
SH
220Experimental support for building with Intel C++ Compiler has been extended to
221cover the dmake makefile (win32/makefile.mk) as well.
eaed284b 222
ba03bc34 223=back
0335212c 224
28ee95bc 225=head1 Internal Changes
0335212c 226
28ee95bc 227=over 4
04380912
SH
228
229=item *
230
1061065f
DD
231The C<sv> argument in L<perlapi/sv_2pv_flags>, L<perlapi/sv_2iv_flags>,
232L<perlapi/sv_2uv_flags>, and L<perlapi/sv_2nv_flags> and their older wrappers
233sv_2pv, sv_2iv, sv_2uv, sv_2nv, is now non-NULL. Passing NULL now will crash.
234When the non-NULL marker was introduced en masse in 5.9.3 the functions
235were marked non-NULL, but since the creation of the SV API in 5.0 alpha 2, if
236NULL was passed, the functions returned 0 or false-type values. The code that
237supports C<sv> argument being non-NULL dates to 5.0 alpha 2 directly, and
238indirectly to Perl 1.0 (pre 5.0 api). The lack of documentation that the
239functions accepted a NULL C<sv> was corrected in 5.11.0 and between 5.11.0
240and 5.19.5 the functions were marked NULLOK. As an optimization the NULLOK code
241has now been removed, and the functions became non-NULL marked again, because
242core getter-type macros never pass NULL to these functions and would crash
243before ever passing NULL.
244
245The only way a NULL C<sv> can be passed to sv_2*v* functions is if XS code
246directly calls sv_2*v*. This is unlikely as XS code uses Sv*V* macros to get
247the underlying value out of the SV. One possible situation which leads to
248a NULL C<sv> being passed to sv_2*v* functions, is if XS code defines its own
249getter type Sv*V* macros, which check for NULL B<before> dereferencing and
250checking the SV's flags through public API Sv*OK* macros or directly using
251private API C<SvFLAGS>, and if C<sv> is NULL, then calling the sv_2*v functions
252with a NULL litteral or passing the C<sv> containing a NULL value.
1859dc90 253
e6898945 254=back
812998f1 255
e6898945 256=head1 Selected Bug Fixes
34e8ce87 257
e6898945 258=over 4
4c99f16d 259
1fe654c9 260=item *
508c1ff6 261
d9e0787c
TC
262C<< semctl(..., SETVAL, ...) >> would set the semaphore to the top
26332-bits of the supplied integer instead of the bottom 32-bits on
26464-bit big-endian systems. [perl #120635]
7492c6c5 265
37decf78
KW
266=item *
267
268A regression since v5.18.0 has been fixed in which C<qr/[[:^ascii:]]/d>
269failed to match any character in the range C<\x80> - C<\xFF> if its
270surrounding character class contained anything else. (That is, the bug
271didn't happen if the C<[:^ascii:]> was the only element of the character
272class.) [perl #120799]
273
4a9a8c6d
TC
274=item *
275
276C<< readdir() >> now only sets C<$!> on error. C<$!> is no longer set
277to C<EBADF> when then terminating C<undef> is read from the directory
278unless the system call sets C<$!>. [perl #118651]
279
346295c2
FC
280=item *
281
282C<&CORE::glob> no longer causes an intermittent crash due to perl's stack
283getting corrupted. [perl #119993]
284
285=item *
286
287C<open> with layers that load modules (e.g., "<:encoding(utf8)") no longer
288runs the risk of crashing due to stack corruption.
289
8b41bb22
FC
290=item *
291
292When a reference to a reference to an overloaded object was returned from
293a regular expression C<(??{...})> code block, an incorrect implicit
294dereference could take place if the inner reference had been returned by
295a code block previously.
296
2412ad36
FC
297=item *
298
299A tied variable returned from C<(??{...})> sees the inner values of match
300variables (i.e., the $1 etc. from any matches inside the block) in its
301FETCH method. This was not the case if a reference to an overloaded object
302was the last thing assigned to the tied variable. Instead, the match
303variables referred to the outer pattern during the FETCH call.
304
e0f78657
FC
305=item *
306
307Perl 5.18 broke autoloading via C<< ->SUPER::foo >> method calls by looking
308up AUTOLOAD from the current package rather than the current package's
309superclass. This has been fixed. [perl #120694]
310
acfee349
FC
311=item *
312
313A longstanding bug causing C<do {} until CONSTANT>, where the constant
314holds a true value, to read unallocated memory has been resolved. This
315would usually happen after a syntax error. In past versions of Perl it has
316crashed intermittently. [perl #72406]
317
df5ac742 318=item *
254a1e67 319
df5ac742
A
320Fix HP-UX $! failure. HP-UX strerror() returns an empty string for an
321unknown error code. This caused an assertion to fail under DEBUGGING
322builds. This patch removes the assertion and changes the return into
323a non-empty string indicating the errno is for an unknown error.
e6898945 324
df5ac742 325=item *
e6898945 326
df5ac742
A
327Fix unexpected tainting via regexp using locale. Previously, under certain
328conditions, the use of character classes could cause tainting when it
329shouldn't. Some character classes are locale-dependent, but before this
330patch, sometimes tainting was happening even for character classes that
331don't depend on the locale. [perl #120675]
254a1e67
SH
332
333=item *
334
df5ac742
A
335Under certain conditions, Perl would throw an error if in an lookbehind
336assertion in a regexp, the assertion referred to a named subpattern,
337complaining the lookbehind was variable when it wasn't. This has been
338fixed. [perl #120600], [perl #120618]. The current fix may be improved
339on in the future.
7492c6c5 340
09f4604f 341=back
cfbe45f9 342
e6898945 343=head1 Acknowledgements
b32cf70e 344
e6898945 345XXX Generate this with:
c84b5497 346
e6898945 347 perl Porting/acknowledgements.pl v5.19.7..HEAD
f5b73711 348
44691e6f
AB
349=head1 Reporting Bugs
350
e08634c5
SH
351If you find what you think is a bug, you might check the articles recently
352posted to the comp.lang.perl.misc newsgroup and the perl bug database at
e6898945 353https://rt.perl.org/ . There may also be information at
e08634c5 354http://www.perl.org/ , the Perl Home Page.
44691e6f 355
e08634c5
SH
356If you believe you have an unreported bug, please run the L<perlbug> program
357included with your release. Be sure to trim your bug down to a tiny but
358sufficient test case. Your bug report, along with the output of C<perl -V>,
359will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
360
361If the bug you are reporting has security implications, which make it
e08634c5
SH
362inappropriate to send to a publicly archived mailing list, then please send it
363to perl5-security-report@perl.org. This points to a closed subscription
364unarchived mailing list, which includes all the core committers, who will be
365able to help assess the impact of issues, figure out a resolution, and help
f9001595 366co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
367platforms on which Perl is supported. Please only use this address for
368security issues in the Perl core, not for modules independently distributed on
369CPAN.
44691e6f
AB
370
371=head1 SEE ALSO
372
e08634c5
SH
373The F<Changes> file for an explanation of how to view exhaustive details on
374what changed.
44691e6f
AB
375
376The F<INSTALL> file for how to build Perl.
377
378The F<README> file for general stuff.
379
380The F<Artistic> and F<Copying> files for copyright information.
381
382=cut