This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 978a498e (PL_sub_generation++)
[perl5.git] / pod / perl5170delta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perl5170delta - what is new for perl v5.17.0
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.16.0 release and
10 the 5.17.0 release.
11
12 If you are upgrading from an earlier release such as 5.16.0, first read
13 L<perl5160delta>, which describes differences between 5.14.0 and
14 5.16.0.
15
16 =head1 Incompatible Changes
17
18 =head2 qw(...) can no longer be used as parentheses
19
20 C<qw> lists used to fool the parser into thinking they were always
21 surrounded by parentheses.  This permitted some surprising constructions
22 such as C<foreach $x qw(a b c) {...}>, which should really be written
23 C<foreach $x (qw(a b c)) {...}>.  These would sometimes get the lexer into
24 the wrong state, so they didn't fully work, and the similar C<foreach qw(a
25 b c) {...}> that one might expect to be permitted never worked at all.
26
27 This side effect of C<qw> has now been abolished.  It has been deprecated
28 since Perl 5.13.11.  It is now necessary to use real parentheses
29 everywhere that the grammar calls for them.
30
31 =head2 C<\s> in regular expressions now matches a Vertical Tab (experimental)
32
33 This is an experiment early in the development cycle to see what
34 repercussions arise from this change.  It may well be that we decide
35 to require a C<"use feature"> to activate this behavior.  Because
36 of the experimental nature of this, which may be reversed, the
37 documentation has not been changed to reflect it.
38
39 =head1 Deprecations
40
41 =head2 Unescaped braces in regexps
42
43 Literal unescaped C<{> in regular expressions is now deprecated.  Every
44 brace character should be either escaped (by a preceding backslash) or
45 part of a construct where it's a metacharacter.  This catches likely typos
46 such as C</f{,3}/>.  It will also allow braces to be used in the future
47 to delimit parameters to metacharacters that currently take no parameters.
48
49 =head1 Performance Enhancements
50
51 =over 4
52
53 =item *
54
55 Filetest ops manage the stack in a fractionally more efficient manner.
56
57 =item *
58
59 Globs used in a numeric context are now numerified directly in most cases,
60 rather than being numerified via stringification.
61
62 =back
63
64 =head1 Modules and Pragmata
65
66 =head2 Updated Modules and Pragmata
67
68 =over 4
69
70 =item *
71
72 L<B> has been upgraded from version 1.34 to 1.35.
73
74 The C<stashlen> method of COPs has been added.   This provides access to an
75 internal field added in perl 5.16 under threaded builds [perl #113034].
76
77 =item *
78
79 L<ExtUtils::ParseXS> has been upgraded from version 3.16 to 3.17.
80
81 The generated C code now avoids unnecessarily incrementing
82 C<PL_amagic_generation> on Perl versions where it's done automatically
83 (or on current Perl where the variable no longer exists).
84
85 =item *
86
87 L<File::DosGlob> has been upgraded from version 1.06 to 1.07.
88
89 Small documentation and comment fixes.
90
91 =item *
92
93 L<File::Find> has been upgraded from version 1.20 to 1.21.
94
95 Individual files may now appear in list of directories to be searched
96 [perl #59750].
97
98 =item *
99
100 L<File::stat> has been upgraded from version 1.05 to 1.06.
101
102 C<File::stat> ignores the L<filetest> pragma, and warns when used in
103 combination therewith.  But it was not warning for C<-r>.  This has been
104 fixed [perl #111640].
105
106 C<-p> now works, and does not return false for pipes [perl #111638].
107
108 =item *
109
110 L<Hash::Util> has been upgraded from version 0.11 to 0.12.
111
112 C<hash_unlocked> and C<hashref_unlocked> now returns true if the hash is
113 unlocked, instead of always returning false [perl #112126].
114
115 C<hash_unlocked>, C<hashref_unlocked>, C<lock_hash_recurse> and
116 C<unlock_hash_recurse> are now exportable [perl #112126].
117
118 Two new functions, C<hash_locked> and C<hashref_locked>, have been added.
119 Oddly enough, these two functions were already exported, even though they
120 did not exist [perl #112126].
121
122 =item *
123
124 L<Module::CoreList> has been upgraded from version 2.66 to 2.67.
125
126 =item *
127
128 L<overload> has been upgraded from version 1.18 to 1.19.
129
130 C<no overload> now warns for invalid arguments, just like C<use overload>.
131
132 =item *
133
134 L<Pod::Functions> has been upgraded from version 1.05 to 1.06.
135
136 Typo fix in generated documentation.
137
138 =item *
139
140 L<Storable> has been upgraded from version 2.34 to 2.35.
141
142 Modifying C<$_[0]> within C<STORABLE_freeze> no longer results in crashes
143 [perl #112358].
144
145 An object whose class implements C<STORABLE_attach> is now thawed only once
146 when there are multiple references to it in the structure being thawed
147 [perl #111918].
148
149 =item *
150
151 L<utf8> has been upgraded from version 1.09 to 1.10.
152
153 Some documentation has been clarified.
154
155 =back
156
157 =head2 Removed Modules and Pragmata
158
159 =over 4
160
161 =item *
162
163 L<Version::Requirements> has been removed from the core distribution.  It is
164 available under a different name: L<CPAN::Meta::Requirements>.
165
166 =back
167
168 =head1 Documentation
169
170 =head2 Changes to Existing Documentation
171
172 =head3 L<perldata>
173
174 =over 4
175
176 =item *
177
178 Now explicitly documents the behaviour of hash initializer lists that
179 contain duplicate keys.
180
181 =back
182
183 =head3 L<perldiag>
184
185 =over 4
186
187 =item *
188
189 The explanation of symbolic references being prevented by "strict refs"
190 now doesn't assume that the reader knows what symbolic references are.
191
192 =back
193
194 =head3 L<perlfunc>
195
196 =over 4
197
198 =item *
199
200 The return value of C<pipe> is now documented.
201
202 =back
203
204 =head1 Diagnostics
205
206 The following additions or changes have been made to diagnostic output,
207 including warnings and fatal error messages.  For the complete list of
208 diagnostic messages, see L<perldiag>.
209
210 =head2 New Diagnostics
211
212 =head3 New Warnings
213
214 =over 4
215
216 =item *
217
218 "L<Unescaped left brace in regex is deprecated, passed
219 through|perldiag/"Unescaped left brace in regex is deprecated, passed
220 through">" is a new deprecation warning.  See L</Unescaped braces in
221 regexps>.
222
223 =back
224
225 =head1 Testing
226
227 =over 4
228
229 =item *
230
231 The test suite now has a section for tests that require very large amounts
232 of memory.  These tests won't run by default; they can be enabled by
233 setting the C<PERL_TEST_MEMORY> environment variable to the number of
234 gibibytes of memory that may be safely used.
235
236 =back
237
238 =head1 Platform Support
239
240 =head2 Platform-Specific Notes
241
242 =over 4
243
244 =item clang++
245
246 There is now a workaround for a compiler bug that prevented compiling
247 with clang++ since Perl 5.15.7 [perl #112786].
248
249 =item C++
250
251 When compiling the Perl core as C++ (which is only semi-supported), the
252 mathom functions are now compiled as C<extern "C">, to ensure proper
253 binary compatibility.  (However, binary compatibility isn't generally
254 guaranteed anyway in the situations where this would matter.)
255
256 =item VMS
257
258 It should now be possible to compile Perl as C++ on VMS.
259
260 =back
261
262 =head1 Internal Changes
263
264 =over 4
265
266 =item *
267
268 The C<CV *> typemap entry now supports C<&{}> overloading and typeglobs,
269 just like C<&{...}> [perl #96872].
270
271 =item *
272
273 The C<SVf_AMAGIC> flag to indicate overloading is now on the stash, not the
274 object.  It is now set automatically whenever a method or @ISA changes, so
275 its meaning has changed, too.  It now means "potentially overloaded".  When
276 the overload table is calculated, the flag is automatically turned off if
277 there is no overloading, so there should be no noticeable slowdown.
278
279 The staleness of the overload tables is now checked when overload methods
280 are invoked, rather than during C<bless>.
281
282 "A" magic is gone.  The changes to the handling of the C<SVf_AMAGIC> flag
283 eliminate the need for it.
284
285 C<PL_amagic_generation> has been removed as no longer necessary.  For XS
286 modules, it is now a macro alias to C<PL_na>.
287
288 The fallback overload setting is now stored in a stash entry separate from
289 overloadedness itself.
290
291 =item *
292
293 The character-processing code has been cleaned up in places.  The changes
294 should be operationally invisible.
295
296 =back
297
298 =head1 Selected Bug Fixes
299
300 =over 4
301
302 =item *
303
304 C<goto ''> now looks for an empty label, producing the "goto must have
305 label" error message, instead of exiting the program [perl #111794].
306
307 =item *
308
309 C<goto "\0"> now dies with "Can't find label" instead of "goto must have
310 label".
311
312 =item *
313
314 The C function C<hv_store> used to result in crashes when used on C<%^H>
315 [perl #111000].
316
317 =item *
318
319 A call checker attached to a closure prototype via C<cv_set_call_checker>
320 is now copied to closures cloned from it.  So C<cv_set_call_checker> now
321 works inside an attribute handler for a closure.
322
323 =item *
324
325 Writing to C<$^N> used to have no effect.  Now it croaks with "Modification
326 of a read-only value" by default, but that can be overridden by a custom
327 regular expression engine, as with C<$1> [perl #112184].
328
329 =item *
330
331 C<undef> on a control character glob (C<undef *^H>) no longer emits an
332 erroneous warning about ambiguity [perl #112456].
333
334 =item *
335
336 For efficiency's sake, many operators and built-in functions return the
337 same scalar each time.  Lvalue subroutines and subroutines in the CORE::
338 namespace were allowing this implementation detail to leak through.
339 C<print &CORE::uc("a"), &CORE::uc("b")> used to print "BB".  The same thing
340 would happen with an lvalue subroutine returning the return value of C<uc>.
341 Now the value is copied in such cases.
342
343 =item *
344
345 C<method {}> syntax with an empty block or a block returning an empty list
346 used to crash or use some random value left on the stack as its invocant.
347 Now it produces an error.
348
349 =item *
350
351 C<vec> now works with extremely large offsets (E<gt>2 GB) [perl #111730].
352
353 =item *
354
355 Changes to overload settings now take effect immediately, as do changes to
356 inheritance that affect overloading.  They used to take effect only after
357 C<bless>.
358
359 Objects that were created before a class had any overloading used to remain
360 non-overloaded even if the class gained overloading through C<use overload>
361 or @ISA changes, and even after C<bless>.  This has been fixed
362 [perl #112708].
363
364 =item *
365
366 Classes with overloading can now inherit fallback values.
367
368 =item *
369
370 Overloading was not respecting a fallback value of 0 if there were
371 overloaded objects on both sides of an assignment operator like C<+=>
372 [perl #111856].
373
374 =item *
375
376 C<pos> now croaks with hash and array arguments, instead of producing
377 erroneous warnings.
378
379 =item *
380
381 C<while(each %h)> now implies C<while(defined($_ = each %h))>, like
382 C<readline> and C<readdir>.
383
384 =item *
385
386 Subs in the CORE:: namespace no longer crash after C<undef *_> when called
387 with no argument list (C<&CORE::time> with no parentheses).
388
389 =item *
390
391 Unicode 6.1 published an incorrect alias for one of the
392 Canonical_Combining_Class property's values (which range between 0 and
393 254).  The alias C<CCC133> should have been C<CCC132>.  Perl now
394 overrides the data file furnished by Unicode to give the correct value.
395
396 =item *
397
398 C<unpack> no longer produces the "'/' must follow a numeric type in unpack"
399 error when it is the data that are at fault [perl #60204].
400
401 =item *
402
403 C<join> and C<"@array"> now call FETCH only once on a tied C<$">
404 [perl #8931].
405
406 =item *
407
408 Some subroutine calls generated by compiling core ops affected by a
409 C<CORE::GLOBAL> override had op checking performed twice.  The checking
410 is always idempotent for pure Perl code, but the double checking can
411 matter when custom call checkers are involved.
412
413 =item *
414
415 A race condition used to exist around fork that could cause a signal sent to
416 the parent to be handled by both parent and child. Signals are now blocked
417 briefly around fork to prevent this from happening [perl #82580].
418
419 =back
420
421 =head1 Acknowledgements
422
423 Perl 5.17.0 represents approximately 1 week of development since Perl 5.16.0
424 and contains approximately 17,000 lines of changes across 180 files from 26
425 authors.
426
427 Perl continues to flourish into its third decade thanks to a vibrant community
428 of users and developers. The following people are known to have contributed the
429 improvements that became Perl 5.16.1:
430
431 Alan Haggai Alavi, Aristotle Pagaltzis, Brian Fraser, Chris 'BinGOs' Williams,
432 Craig A. Berry, Dagfinn Ilmari Mannsåker, Eric Brine, Father Chrysostomos,
433 Igor Zaytsev, James E Keenan, Karl Williamson, Leon Timmermans, Lukas Mai,
434 Marcus Holland-Moritz, Matthew Horsfall, Moritz Lenz, Rafael Garcia-Suarez,
435 Reini Urban, Ricardo Signes, Robin Barker, Ronald J. Kimball, Smylers, Steffen
436 Müller, Steve Hay, Tony Cook, Zefram.
437
438 The list above is almost certainly incomplete as it is automatically generated
439 from version control history. In particular, it does not include the names of
440 the (very much appreciated) contributors who reported issues to the Perl bug
441 tracker.
442
443 Many of the changes included in this version originated in the CPAN modules
444 included in Perl's core. We're grateful to the entire CPAN community for
445 helping Perl to flourish.
446
447 For a more complete list of all of Perl's historical contributors, please see
448 the F<AUTHORS> file in the Perl source distribution.
449
450 =head1 Reporting Bugs
451
452 If you find what you think is a bug, you might check the articles
453 recently posted to the comp.lang.perl.misc newsgroup and the perl
454 bug database at http://rt.perl.org/perlbug/ .  There may also be
455 information at http://www.perl.org/ , the Perl Home Page.
456
457 If you believe you have an unreported bug, please run the L<perlbug>
458 program included with your release.  Be sure to trim your bug down
459 to a tiny but sufficient test case.  Your bug report, along with the
460 output of C<perl -V>, will be sent off to perlbug@perl.org to be
461 analysed by the Perl porting team.
462
463 If the bug you are reporting has security implications, which make it
464 inappropriate to send to a publicly archived mailing list, then please send
465 it to perl5-security-report@perl.org. This points to a closed subscription
466 unarchived mailing list, which includes
467 all the core committers, who will be able
468 to help assess the impact of issues, figure out a resolution, and help
469 co-ordinate the release of patches to mitigate or fix the problem across all
470 platforms on which Perl is supported. Please only use this address for
471 security issues in the Perl core, not for modules independently
472 distributed on CPAN.
473
474 =head1 SEE ALSO
475
476 The F<Changes> file for an explanation of how to view exhaustive details
477 on what changed.
478
479 The F<INSTALL> file for how to build Perl.
480
481 The F<README> file for general stuff.
482
483 The F<Artistic> and F<Copying> files for copyright information.
484
485 =cut