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