Commit | Line | Data |
---|---|---|
4eabcf70 TC |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | perl5172delta - what is new for perl v5.17.2 | |
6 | ||
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.17.1 release and | |
10 | the 5.17.2 release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.17.0, first read | |
13 | L<perl5171delta>, which describes differences between 5.17.0 and | |
14 | 5.17.1. | |
15 | ||
16 | =head1 Core Enhancements | |
17 | ||
18 | =head2 C<kill> with negative signal names | |
19 | ||
20 | C<kill> has always allowed a negative signal number, which kills the | |
21 | process group instead of a single process. It has also allowed signal | |
22 | names. But it did not behave consistently, because negative signal names | |
23 | were treated as 0. Now negative signals names like C<-INT> are supported | |
24 | and treated the same way as -2 [perl #112990]. | |
25 | ||
26 | =head2 C<pack> is now constant folded. | |
27 | ||
28 | C<pack> with constant arguments is now constant folded in most cases | |
29 | [perl #113470]. | |
30 | ||
31 | =head1 Modules and Pragmata | |
32 | ||
33 | =head2 Updated Modules and Pragmata | |
34 | ||
35 | =over 4 | |
36 | ||
37 | =item * | |
38 | ||
39 | L<File::stat> has been upgraded from version 1.06 to 1.07. | |
40 | ||
41 | Previously C<File::stat>'s overloaded C<-x> and C<-X> operators did not give | |
42 | the correct results for directories or executable files when running as | |
43 | root. They had been treating executable permissions for root just like for | |
44 | any other user, performing group membership tests I<etc> for files not owned | |
45 | by root. They now follow the correct Unix behaviour - for a directory they | |
46 | are always true, and for a file if any of the three execute permission bits | |
47 | are set then they report that root can execute the file. Perl's builtin | |
48 | C<-x> and C<-X> operators have always been correct. | |
49 | ||
50 | =item * | |
51 | ||
52 | L<Tie::StdHandle> has been upgraded from version 4.2 to 4.3. | |
53 | ||
54 | C<READ> now respects the offset argument to C<read> [perl #112826]. | |
55 | ||
56 | =item * | |
57 | ||
58 | L<IO> has been upgraded from version 1.25_07 to 1.25_08. | |
59 | ||
60 | L<IO::Socket> tries harder to cache or otherwise fetch socket | |
61 | information. | |
62 | ||
63 | =item * | |
64 | ||
65 | L<Storable> has been upgraded from version 2.36 to 2.37. | |
66 | ||
67 | Restricted hashes were not always thawed correctly [perl #73972]. | |
68 | ||
69 | Storable would croak when freezing a blessed REF object with a | |
70 | C<STORABLE_freeze()> method [perl #113880]. | |
71 | ||
72 | =item * | |
73 | ||
74 | L<Socket> has been upgraded from version 2.001 to 2.002. | |
75 | ||
76 | =item * | |
77 | ||
78 | L<autodie> has been upgraded from version 2.11 to 2.12. | |
79 | ||
80 | C<autodie> now plays nicely with the 'open' pragma. | |
81 | ||
82 | =item * | |
83 | ||
84 | L<File::Fetch> has been upgraded from version 0.34 to 0.36. | |
85 | ||
86 | Added the 'file_default' option for URLs that do not have a file | |
87 | component. | |
88 | ||
89 | =item * | |
90 | ||
91 | L<Module::CoreList> has been upgraded from version 2.68 to 2.69. | |
92 | ||
93 | =back | |
94 | ||
95 | =head1 Documentation | |
96 | ||
97 | =head2 Changes to Existing Documentation | |
98 | ||
99 | =head3 L<perlfunc> | |
100 | ||
101 | =over 4 | |
102 | ||
103 | =item * | |
104 | ||
105 | Clarified documentation of C<our>. | |
106 | ||
107 | =back | |
108 | ||
109 | =head1 Diagnostics | |
110 | ||
111 | The following additions or changes have been made to diagnostic output, | |
112 | including warnings and fatal error messages. For the complete list of | |
113 | diagnostic messages, see L<perldiag>. | |
114 | ||
115 | =head2 New Diagnostics | |
116 | ||
117 | =head3 New Errors | |
118 | ||
119 | =over 4 | |
120 | ||
121 | =item * | |
122 | ||
123 | L<Group name must start with a non-digit word character in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Group name must start with a non-digit word character in regex; marked by <-- HERE in m/%s/"> | |
124 | ||
125 | This error has been added for C<(?&0)>, which is invalid. It used to | |
126 | produce an incomprehensible error message [perl #101666]. | |
127 | ||
128 | =item * | |
129 | ||
130 | L<Can't use an undefined value as a subroutine reference|perldiag/"Can't use an undefined value as %s reference"> | |
131 | ||
132 | Calling an undefined value as a subroutine now produces this error message. | |
133 | It used to, but was accidentally disabled, first in Perl 5.004 for | |
134 | non-magical variables, and then in Perl 5.14 for magical (e.g., tied) | |
135 | variables. It has now been restored. In the mean time, undef was treated | |
136 | as an empty string [perl #113576]. | |
137 | ||
138 | =back | |
139 | ||
140 | =head3 New Warnings | |
141 | ||
142 | =over 4 | |
143 | ||
144 | =item * | |
145 | ||
146 | "L<Invalid negative number (%s) in chr|perldiag/"Invalid negative number (%s) in chr">" | |
147 | ||
148 | C<chr()> now warns when passed a negative value [perl #83048]. | |
149 | ||
150 | =item * | |
151 | ||
152 | "L<Integer overflow in srand|perldiag/"Integer overflow in srand">" | |
153 | ||
154 | C<srand()> now warns when passed a value that doesn't fit in a C<UV> (since the | |
155 | value will be truncated rather than overflowing) [perl #40605]. | |
156 | ||
157 | =item * | |
158 | ||
159 | "L<-i used with no filenames on the command line, reading from STDIN|perldiag/"-i used with no filenames on the command line, reading from STDIN">" | |
160 | ||
161 | Running perl with the C<-i> flag now warns if no input files are provided on | |
162 | the command line [perl #113410]. | |
163 | ||
164 | =back | |
165 | ||
166 | =head2 Changes to Existing Diagnostics | |
167 | ||
168 | =over 4 | |
169 | ||
170 | =item * | |
171 | ||
172 | The 'Can't use "my %s" in sort comparison' error has been downgraded to a | |
173 | warning, '"my %s" used in sort comparison' (with 'state' instead of 'my' | |
174 | for state variables). In addition, the heuristics for guessing whether | |
175 | lexical $a or $b has been misused have been improved to generate fewer | |
176 | false positives. Lexical $a and $b are no longer disallowed if they are | |
177 | outside the sort block. Also, a named unary or list operator inside the | |
178 | sort block no longer causes the $a or $b to be ignored [perl #86136]. | |
179 | ||
180 | =back | |
181 | ||
182 | =head1 Configuration and Compilation | |
183 | ||
184 | =over 4 | |
185 | ||
186 | =item * | |
187 | ||
188 | Building perl with some Windows compilers used to fail due to a problem | |
189 | with miniperl's C<glob> operator (which uses the C<perlglob> program) | |
190 | deleting the PATH environment variable [perl #113798]. | |
191 | ||
192 | =back | |
193 | ||
194 | =head1 Platform Support | |
195 | ||
196 | =head2 Platform-Specific Notes | |
197 | ||
198 | =over 4 | |
199 | ||
200 | =item VMS | |
201 | ||
202 | Quotes are now removed from the command verb (but not the parameters) for commands | |
203 | spawned via C<system>, backticks, or a piped C<open>. Previously, quotes on the verb | |
204 | were passed through to DCL, which would fail to recognize the command. Also, if the | |
205 | verb is actually a path to an image or command procedure on an ODS-5 volume, quoting it | |
206 | now allows the path to contain spaces. | |
207 | ||
208 | =item AIX | |
209 | ||
210 | Configure now always adds C<-qlanglvl=extc99> to the CC flags on AIX when | |
211 | using xlC. This will make it easier to compile a number of XS-based modules | |
212 | that assume C99 [perl #113778]. | |
213 | ||
214 | =back | |
215 | ||
216 | =head1 Internal Changes | |
217 | ||
218 | =over 4 | |
219 | ||
220 | =item * | |
221 | ||
222 | Perl used to implement get magic in a way that would sometimes hide bugs in | |
223 | code could call mg_get() too many times on magical values. This hiding of | |
224 | errors no longer occurs, so long-standing bugs may become visible now. If | |
225 | you see magic-related errors in XS code, check to make sure it, together | |
226 | with the Perl API functions it uses, calls mg_get() only once on SvGMAGICAL() | |
227 | values. | |
228 | ||
229 | =item * | |
230 | ||
231 | OP allocation for CVs now uses a slab allocator. This simplifies | |
232 | memory management for OPs allocated to a CV, so cleaning up after a | |
233 | compilation error is simpler and safer [perl #111462][perl #112312]. | |
234 | ||
235 | =item * | |
236 | ||
237 | PERL_DEBUG_READONLY_OPS has been rewritten to work with the new slab | |
238 | allocator, allowing it to catch more violations than before. | |
239 | ||
240 | =item * | |
241 | ||
242 | The old slab allocator for ops, which was only enabled for PERL_IMPLICIT_SYS and PERL_DEBUG_READONLY_OPS, has been retired. | |
243 | ||
244 | =back | |
245 | ||
246 | =head1 Selected Bug Fixes | |
247 | ||
248 | =over 4 | |
249 | ||
250 | =item * | |
251 | ||
252 | A regression introduced in v5.14.0 has been fixed, in which some calls | |
253 | to the C<re> module would clobber C<$_> [perl #113750]. | |
254 | ||
255 | =item * | |
256 | ||
257 | C<do FILE> now always either sets or clears C<$@>, even when the file can't be | |
258 | read. This ensures that testing C<$@> first (as recommended by the | |
259 | documentation) always returns the correct result. | |
260 | ||
261 | =item * | |
262 | ||
263 | The array iterator used for the C<each @array> construct is now correctly | |
264 | reset when C<@array> is cleared (RT #75596). This happens for example when the | |
265 | array is globally assigned to, as in C<@array = (...)>, but not when its | |
266 | B<values> are assigned to. In terms of the XS API, it means that C<av_clear()> | |
267 | will now reset the iterator. | |
268 | ||
269 | This mirrors the behaviour of the hash iterator when the hash is cleared. | |
270 | ||
271 | =item * | |
272 | ||
273 | C<< $class->can >>, C<< $class->isa >>, and C<< $class->DOES >> now return | |
274 | correct results, regardless of whether that package referred to by C<$class> | |
275 | exists [perl #47113]. | |
276 | ||
277 | =item * | |
278 | ||
279 | Arriving signals no longer clear C<$@> [perl #45173]. | |
280 | ||
281 | =item * | |
282 | ||
283 | Allow C<my ()> declarations with an empty variable list [perl #113554]. | |
284 | ||
285 | =item * | |
286 | ||
287 | During parsing, subs declared after errors no longer leave stubs | |
288 | [perl #113712]. | |
289 | ||
290 | =item * | |
291 | ||
292 | Closures containing no string evals no longer hang on to their containing | |
293 | subroutines, allowing variables closed over by outer subroutines to be | |
294 | freed when the outer sub is freed, even if the inner sub still exists | |
295 | [perl #89544]. | |
296 | ||
297 | =item * | |
298 | ||
299 | Duplication of in-memory filehandles by opening with a "<&=" or ">&=" mode | |
300 | stopped working properly in 5.16.0. It was causing the new handle to | |
301 | reference a different scalar variable. This has been fixed [perl #113764]. | |
302 | ||
303 | =item * | |
304 | ||
305 | C<qr//> expressions no longer crash with custom regular expression engines | |
306 | that do not set C<offs> at regular expression compilation time | |
307 | [perl #112962]. | |
308 | ||
309 | =item * | |
310 | ||
311 | C<delete local> no longer crashes with certain magical arrays and hashes | |
312 | [perl #112966]. | |
313 | ||
314 | =item * | |
315 | ||
316 | C<local> on elements of certain magical arrays and hashes used not to | |
317 | arrange to have the element deleted on scope exit, even if the element did | |
318 | not exist before C<local>. | |
319 | ||
320 | =item * | |
321 | ||
322 | C<scalar(write)> no longer returns multiple items [perl #73690]. | |
323 | ||
324 | =item * | |
325 | ||
326 | String to floating point conversions no longer misparse certain strings under | |
327 | C<use locale> [perl #109318]. | |
328 | ||
329 | =item * | |
330 | ||
331 | C<@INC> filters that die no longer leak memory [perl #92252]. | |
332 | ||
333 | =item * | |
334 | ||
335 | The implementations of overloaded operations are now called in the correct | |
336 | context. This allows, among other things, being able to properly override | |
337 | C<< <> >> [perl #47119]. | |
338 | ||
339 | =item * | |
340 | ||
341 | Specifying only the C<fallback> key when calling C<use overload> now behaves | |
342 | properly [perl #113010]. | |
343 | ||
344 | =item * | |
345 | ||
346 | C<< sub foo { my $a = 0; while ($a) { ... } } >> and | |
347 | C<< sub foo { while (0) { ... } } >> now return the same thing [perl #73618]. | |
348 | ||
349 | =item * | |
350 | ||
351 | Fixed the debugger C<l> and C<M> commands, and other debugger | |
352 | functionality which was broken in 5.17.0 [perl #113918]. | |
353 | ||
354 | =item * | |
355 | ||
356 | String negation now behaves the same under C<use integer;> as it does | |
357 | without [perl #113012]. | |
358 | ||
359 | =item * | |
360 | ||
361 | C<chr> now returns the Unicode replacement character (U+FFFD) for -1, | |
362 | regardless of the internal representation. -1 used to wrap if the argument | |
363 | was tied or a string internally. | |
364 | ||
365 | =item * | |
366 | ||
367 | Using a C<format> after its enclosing sub was freed could crash as of | |
368 | perl 5.12.0, if the format referenced lexical variables from the outer sub. | |
369 | ||
370 | =item * | |
371 | ||
372 | Using a C<format> after its enclosing sub was undefined could crash as of | |
373 | perl 5.10.0, if the format referenced lexical variables from the outer sub. | |
374 | ||
375 | =item * | |
376 | ||
377 | Using a C<format> defined inside a closures, which format references | |
378 | lexical variables from outside, never really worked unless the C<write> | |
379 | call was directly inside the closure. In 5.10.0 it even started crashing. | |
380 | Now the copy of that closure nearest the top of the call stack is used to | |
381 | find those variables. | |
382 | ||
383 | =item * | |
384 | ||
385 | Formats that close over variables in special blocks no longer crash if a | |
386 | stub exists with the same name as the special block before the special | |
387 | block is compiled. | |
388 | ||
389 | =item * | |
390 | ||
391 | The parser no longer gets confused, treating C<eval foo ()> as a syntax | |
392 | error if preceded by C<print;> [perl #16249]. | |
393 | ||
394 | =item * | |
395 | ||
396 | The return value of C<syscall> is no longer truncated on 64-bit platforms | |
397 | [perl #113980]. | |
398 | ||
399 | =item * | |
400 | ||
401 | Constant folding no longer causes C<print 1 ? FOO : BAR> to print to the | |
402 | FOO handle [perl #78064]. | |
403 | ||
404 | =item * | |
405 | ||
406 | C<do subname> now calls the named subroutine and uses the file name it | |
407 | returns, instead of opening a file named "subname". | |
408 | ||
409 | =item * | |
410 | ||
411 | Subroutines looked up by rv2cv check hooks (registered by XS modules) are | |
412 | now taken into consideration when determining whether C<foo bar> should be | |
413 | the sub call C<foo(bar)> or the method call C<< "bar"->foo >>. | |
414 | ||
415 | =item * | |
416 | ||
417 | C<CORE::foo::bar> is no longer treated specially, allowing global overrides | |
418 | to be called directly via C<CORE::GLOBAL::uc(...)> [perl #113016]. | |
419 | ||
420 | =item * | |
421 | ||
422 | Calling an undefined sub whose typeglob has been undefined now produces the | |
423 | customary "Undefined subroutine called" error, instead of "Not a CODE | |
424 | reference". | |
425 | ||
426 | =item * | |
427 | ||
428 | Two bugs involving @ISA have been fixed. C<*ISA = *glob_without_array> and | |
429 | C<undef *ISA; @{*ISA}> would prevent future modifications to @ISA from | |
430 | updating the internal caches used to look up methods. The | |
431 | *glob_without_array case was a regression from Perl 5.12. | |
432 | ||
433 | =item * | |
434 | ||
435 | Regular expression optimisations sometimes caused C<$> with C</m> to | |
436 | produce failed or incorrect matches [perl #114068]. | |
437 | ||
438 | =item * | |
439 | ||
440 | C<__SUB__> now works in a C<sort> block when the enclosing subroutine is | |
441 | predeclared with C<sub foo;> syntax [perl #113710]. | |
442 | ||
443 | =item * | |
444 | ||
445 | Unicode properties only apply to Unicode code points, which leads to | |
446 | some subtleties when regular expressions are matched against | |
447 | above-Unicode code points. There is a warning generated to draw your | |
448 | attention to this. However, this warning was being generated | |
449 | inappropriately in some cases, such as when a program was being parsed. | |
450 | Non-Unicode matches such as C<\w> and C<[:word;]> should not generate the | |
451 | warning, as their definitions don't limit them to apply to only Unicode | |
452 | code points. Now the message is only generated when matching against | |
453 | C<\p{}> and C<\P{}>. There remains a bug, [perl #114148], for the very | |
454 | few properties in Unicode that match just a single code point. The | |
455 | warning is not generated if they are matched against an above-Unicode | |
456 | code point. | |
457 | ||
458 | =back | |
459 | ||
460 | =head1 Acknowledgements | |
461 | ||
462 | Perl 5.17.2 represents approximately 4 weeks of development since Perl 5.17.1 | |
463 | and contains approximately 15,000 lines of changes across 320 files from 34 | |
464 | authors. | |
465 | ||
466 | Perl continues to flourish into its third decade thanks to a vibrant community | |
467 | of users and developers. The following people are known to have contributed the | |
468 | improvements that became Perl 5.17.2: | |
469 | ||
470 | Aristotle Pagaltzis, Brian Fraser, Chip Salzenberg, Chris 'BinGOs' Williams, | |
471 | Colin Kuskie, Craig A. Berry, Daniel Dragan, Daniel Perrett, Darin McBride, | |
472 | David Golden, David Mitchell, Dominic Hargreaves, E. Choroba, Eric Brine, | |
473 | Father Chrysostomos, François Perrad, H.Merijn Brand, Jan Dubois, Jesse | |
474 | Luehrs, Karl Williamson, Lukas Mai, Matthew Horsfall, Nicholas Clark, Oleg | |
475 | Nesterov, Reini Urban, Ricardo Signes, Robin Barker, Shirakata Kentaro, Shlomi | |
476 | Fish, Steve Hay, Tony Cook, Vincent Pit, Walt Mankowski, Yves Orton. | |
477 | ||
478 | The list above is almost certainly incomplete as it is automatically generated | |
479 | from version control history. In particular, it does not include the names of | |
480 | the (very much appreciated) contributors who reported issues to the Perl bug | |
481 | tracker. | |
482 | ||
483 | Many of the changes included in this version originated in the CPAN modules | |
484 | included in Perl's core. We're grateful to the entire CPAN community for | |
485 | helping Perl to flourish. | |
486 | ||
487 | For a more complete list of all of Perl's historical contributors, please see | |
488 | the F<AUTHORS> file in the Perl source distribution. | |
489 | ||
490 | =head1 Reporting Bugs | |
491 | ||
492 | If you find what you think is a bug, you might check the articles | |
493 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
494 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
495 | information at http://www.perl.org/ , the Perl Home Page. | |
496 | ||
497 | If you believe you have an unreported bug, please run the L<perlbug> | |
498 | program included with your release. Be sure to trim your bug down | |
499 | to a tiny but sufficient test case. Your bug report, along with the | |
500 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
501 | analysed by the Perl porting team. | |
502 | ||
503 | If the bug you are reporting has security implications, which make it | |
504 | inappropriate to send to a publicly archived mailing list, then please send | |
505 | it to perl5-security-report@perl.org. This points to a closed subscription | |
506 | unarchived mailing list, which includes | |
507 | all the core committers, who will be able | |
508 | to help assess the impact of issues, figure out a resolution, and help | |
509 | co-ordinate the release of patches to mitigate or fix the problem across all | |
510 | platforms on which Perl is supported. Please only use this address for | |
511 | security issues in the Perl core, not for modules independently | |
512 | distributed on CPAN. | |
513 | ||
514 | =head1 SEE ALSO | |
515 | ||
516 | The F<Changes> file for an explanation of how to view exhaustive details | |
517 | on what changed. | |
518 | ||
519 | The F<INSTALL> file for how to build Perl. | |
520 | ||
521 | The F<README> file for general stuff. | |
522 | ||
523 | The F<Artistic> and F<Copying> files for copyright information. | |
524 | ||
525 | =cut |