This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
PL_sv_objcount deprecation notice
[perl5.git] / pod / perl5173delta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perl5173delta - what is new for perl v5.17.3
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.17.2 release and the 5.17.3
10 release.
11
12 If you are upgrading from an earlier release such as 5.17.1, first read
13 L<perl5172delta>, which describes differences between 5.17.1 and 5.17.2.
14
15 =head1 Core Enhancements
16
17 =head2 Computed Labels
18
19 The loop controls C<next>, C<last> and C<redo>, and the special C<dump>
20 operator, now allow arbitrary expressions to be used to compute labels at run
21 time.  Previously, any argument that was not a constant was treated as the
22 empty string.
23
24 =head1 Incompatible Changes
25
26 =head2 C<$ENV{foo}=undef> deletes value from environ, like C<delete $ENV{foo}>
27
28 This facilitates use of C<local()> with C<%ENV> entries.  In previous versions
29 of Perl, C<undef> was converted to the empty string.
30
31 =head2 Defined values stored in environment are forced to byte strings
32
33 A value stored in an environment variable has always been stringified.  In this
34 release, it is converted to be only a byte string.  First, it is forced to be a
35 only a string.  Then if the string is utf8 and the equivalent of
36 C<utf8::downgrade()> works, that result is used; otherwise, the equivalent of
37 C<utf8::encode()> is used, and a warning is issued about wide characters
38 (L</Diagnostics>).
39
40 =head2 C<given> now aliases the global C<$_>
41
42 Instead of assigning to an implicit lexical C<$_>, C<given> now makes the
43 global C<$_> an alias for its argument, just like C<foreach>.  However, it
44 still uses lexical C<$_> if there is lexical C<$_> in scope (again, just like
45 C<foreach>) [perl #114020].
46
47 =head1 Modules and Pragmata
48
49 =head2 Updated Modules and Pragmata
50
51 =over 4
52
53 =item *
54
55 L<B> has been upgraded from version 1.36 to 1.37.  All C<CVf_*> and C<GVf_*>
56 and more SV-related flag values are now provided as constants in the C<B::>
57 namespace and available for export.  The default export list has not changed.
58
59 =item *
60
61 L<B::Concise> has been upgraded from version 0.91 to 0.92.  The C<-nobanner>
62 option has been fixed, and C<format>s can now be dumped.  When passed a sub
63 name to dump, it will check also to see whether it is the name of a format.  If
64 a sub and a format share the same name, it will dump both.
65
66 =item *
67
68 L<B::Debug> has been upgraded from version 1.17 to 1.18.  This adds support
69 (experimentally) for C<B::PADLIST>, which will be added in Perl 5.17.4.
70
71 =item *
72
73 L<B::Deparse> has been upgraded from version 1.15 to 1.16.  It now deparses
74 loop controls with the correct precedence, and multiple statements in a
75 C<format> line are also now deparsed correctly.
76
77 =item *
78
79 L<CGI> has been upgraded from version 3.59 to 3.60.  Unrecognized HTML escape
80 sequences are now handled better, problematic trailing newlines are no longer
81 inserted after E<lt>formE<gt> tags by C<startform()> or C<start_form()>, and
82 bogus "Insecure Dependency" warnings appearing with some versions of perl are
83 now worked around.
84
85 =item *
86
87 L<Compress::Raw::Bzip2> has been upgraded from version 2.05201 to 2.055.  The
88 misuse of Perl's "magic" API has been fixed.
89
90 =item *
91
92 L<Compress::Raw::Zlib> has been upgraded from version 2.05401 to 2.056.  The
93 misuse of Perl's "magic" API has been fixed.
94
95 =item *
96
97 L<Compress::Zlib> has been upgraded from version 2.052 to 2.055. C<compress()>,
98 C<uncompress()>, C<memGzip()> and C<memGunzip()> have been speeded up by making
99 parameter validation more efficient.
100
101 =item *
102
103 L<Data::Dumper> has been upgraded from version 2.135_06 to 2.135_07.  It has
104 been optimized to only build a seen-scalar hash as necessary, thereby speeding
105 up serialization drastically.
106
107 =item *
108
109 L<Devel::Peek> has been upgraded from version 1.08 to 1.09.  The only change
110 has been to the test script, to account for changes to some flags in perl's
111 internals.
112
113 =item *
114
115 L<Encode> has been upgraded from version 2.44 to 2.47.  The Mac alias x-mac-ce
116 has been added, and various bugs have been fixed in Encode::Unicode,
117 Encode::UTF7 and Encode::GSM0338.
118
119 =item *
120
121 L<Module::Build> has been upgraded from version 0.40 to 0.4003.  A minor bug
122 fix allows markup to be used around the leading "Name" in a POD "abstract"
123 line, and some documentation improvements have been made.
124
125 =item *
126
127 L<Module::CoreList> has been upgraded from version 2.69 to 2.71.  Version
128 information is now stored as a delta, which greatly reduces the size of the
129 F<CoreList.pm> file.
130
131 =item *
132
133 L<Module::Load::Conditional> has been upgraded from version 0.50 to 0.54.
134 Various enhancements include the new use of Module::Metadata.
135
136 =item *
137
138 L<Module::Metadata> has been upgraded from version 1.000009 to 1.000011.  The
139 creation of a Module::Metadata object for a typical module file has been sped
140 up by about 40%, and some spurious warnings about C<$VERSION>s have been
141 suppressed.
142
143 =item *
144
145 L<Module::Pluggable> has been upgraded from version 4.0 to 4.3.  Amongst other
146 changes, triggers are now allowed on events, which gives a powerful way to
147 modify behaviour.
148
149 =item *
150
151 L<perlfaq> has been upgraded from version 5.0150040 to 5.0150041.  This
152 contains a couple of minor corrections and lists one new editor.
153
154 =item *
155
156 L<Pod::Simple> has been upgraded from version 3.20 to 3.23.  Numerous
157 improvements have been made, mostly to Pod::Simple::XHTML, which also has a
158 compatibility change: the C<codes_in_verbatim> option is now disabled by
159 default.  See F<cpan/Pod-Simple/ChangeLog> for the full details.
160
161 =item *
162
163 L<re> has been upgraded from version 0.21 to 0.22.  Single character [class]es
164 like C</[s]/> or C</[s]/i> are now optimized as if they did not have the
165 brackets, i.e. C</s/> or C</s/i>.
166
167 =item *
168
169 L<Socket> has been upgraded from version 2.002 to 2.004.  Constants and
170 functions required for IP multicast source group membership have been added.
171
172 =item *
173
174 L<Storable> has been upgraded from version 2.37 to 2.38.  It can now freeze and
175 thaw vstrings correctly.  This causes a slight incompatible change in the
176 storage format, so the format version has increased to 2.9.
177
178 =item *
179
180 L<Sys::Syslog> has been upgraded from version 0.29 to 0.31.  This contains
181 several bug fixes relating to C<getservbyname()>, C<setlogsock()>and log levels
182 in C<syslog()>, together with fixes for Windows, Haiku-OS and GNU/kFreeBSD.
183 See F<cpan/Sys-Syslog/Changes> for the full details.
184
185 =item *
186
187 L<Term::ReadLine> has been upgraded from version 1.09 to 1.10.  This fixes the
188 use of the B<cpan> and B<cpanp> shells on Windows in the event that the current
189 drive happens to contain a F<\dev\tty> file.
190
191 =item *
192
193 L<Text::Tabs> and L<Text::Wrap> have been upgraded from version 2009.0305 to
194 2012.0818.  Support for Unicode combining characters has been added to them
195 both.
196
197 =item *
198
199 L<Time::Local> has been upgraded from version 1.2000 to 1.2300.  Seconds values
200 greater than 59 but less than 60 no longer cause C<timegm()> and C<timelocal()>
201 to croak.
202
203 =item *
204
205 L<Unicode::UCD> has been upgraded from version 0.44 to 0.45.  This has been
206 modified slightly for reasons of perl internal use only.
207
208 =item *
209
210 L<Win32> has been upgraded from version 0.44 to 0.45.  New APIs have been added
211 for getting and setting the current code page.
212
213 =item *
214
215 L<Win32CORE> has been upgraded from version 0.02 to 0.03.  The use of
216 PERL_NO_GET_CONTEXT here has resulted in smaller machine code.
217
218 =back
219
220 =head1 Documentation
221
222 =head2 Changes to Existing Documentation
223
224 =head3 L<perlfunc>, L<perlop>
225
226 =over 4
227
228 =item *
229
230 Loop control verbs (C<dump>, C<goto>, C<next>, C<last> and C<redo>) have always
231 had the same precedence as assignment operators, but this was not documented
232 until now.
233
234 =back
235
236 =head3 L<perlvar>
237
238 =over 4
239
240 =item *
241
242 A caveat has been added to the documentation for C<$_> warning against the use
243 of lexical C<$_> [perl #114020].
244
245 =back
246
247 =head1 Diagnostics
248
249 The following additions or changes have been made to diagnostic output,
250 including warnings and fatal error messages.  For the complete list of
251 diagnostic messages, see L<perldiag>.
252
253 =head2 New Diagnostics
254
255 =head3 New Errors
256
257 =over 4
258
259 =item *
260
261 L<Unterminated delimiter for here document|perldiag/"Unterminated delimiter for here document">
262
263 This message now occurs when a here document label has an initial quotation
264 mark but the final quotation mark is missing.
265
266 This replaces a bogus and misleading error message about not finding the label
267 itself [perl #114104].
268
269 =item *
270
271 L<panic: child pseudo-process was never scheduled|perldiag/"panic: child pseudo-process was never scheduled">
272
273 This error is thrown when a child pseudo-process in the ithreads implementation
274 on Windows was not scheduled within the time period allowed and therefore was
275 not able to initialize properly [perl #88840].
276
277 =back
278
279 =head3 New Warnings
280
281 =over 4
282
283 =item *
284
285 L<Wide character in setenv|perldiag/"Wide character in %s">
286
287 Attempts to put wide characters into environment variables via C<%ENV> now
288 provoke this warning.
289
290 =back
291
292 =head1 Configuration and Compilation
293
294 =over 4
295
296 =item *
297
298 The pager detection in F<Configure> has been improved to allow responses which
299 specify options after the program name, e.g. B</usr/bin/less -R>, if the user
300 accepts the default value.  This helps B<perldoc> when handling ANSI escapes
301 [perl #72156].
302
303 =back
304
305 =head1 Platform Support
306
307 =head2 Discontinued Platforms
308
309 =over 4
310
311 =item UTS Global
312
313 Support code relating to UTS global has been removed.  UTS was a mainframe
314 version of System V created by Amdahl, subsequently sold to UTS Global.  The
315 port has not been touched since before Perl 5.8.0, and UTS Global is now
316 defunct.
317
318 =back
319
320 =head2 Platform-Specific Notes
321
322 =over 4
323
324 =item Windows
325
326 A new makefile option, USE_64_BIT_INT, has been added to the Windows makefiles.
327 Set this to "define" when building a 32-bit perl if you want it to use 64-bit
328 integers.
329
330 Machine code size reductions, already made to the DLLs of XS modules in Perl
331 5.17.2, have now been extended to the perl DLL itself.
332
333 Building with VC++ 6.0 was inadvertently broken in Perl 5.17.2 but has now been
334 fixed again.
335
336 =item VMS
337
338 The B<a2p> build has been fixed for the HP C++ compiler on OpenVMS.
339
340 =back
341
342 =head1 Selected Bug Fixes
343
344 =over 4
345
346 =item *
347
348 C<\w> now matches the code points U+200C (ZERO WIDTH NON-JOINER) and U+200D
349 (ZERO WIDTH JOINER).  C<\W> no longer matches these.  This change is because
350 Unicode corrected their definition of what C<\w> should match.
351
352 =item *
353
354 C<dump LABEL> no longer leaks its label.
355
356 =item *
357
358 Constant folding no longer changes the behaviour of functions like C<stat()>
359 and C<truncate()> that can take either filenames or handles.
360 C<stat 1 ? foo : bar> nows treats its argument as a file name (since it is an
361 arbitrary expression), rather than the handle "foo".
362
363 =item *
364
365 C<truncate FOO, $len> no longer falls back to treating "FOO" as a file name if
366 the filehandle has been deleted.  This was broken in Perl 5.16.0.
367
368 =item *
369
370 Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no
371 longer cause double frees or panic messages.
372
373 =item *
374
375 C<s///> now turns vstrings into plain strings when performing a substitution,
376 even if the resulting string is the same (C<s/a/a/>).
377
378 =item *
379
380 Prototype mismatch warnings no longer erroneously treat constant subs as having
381 no prototype when they actually have "".
382
383 =item *
384
385 Constant subroutines and forward declarations no longer prevent prototype
386 mismatch warnings from omitting the sub name.
387
388 =item *
389
390 C<undef> on a subroutine now clears call checkers.
391
392 =item *
393
394 The C<ref> operator started leaking memory on blessed objects in Perl 5.16.0.
395 This has been fixed [perl #114340].
396
397 =item *
398
399 C<use> no longer tries to parse its arguments as a statement, making
400 C<use constant { () };> a syntax error [perl #114222].
401
402 =item *
403
404 On debugging builds, "uninitialized" warnings inside formats no longer cause
405 assertion failures.
406
407 =item *
408
409 On debugging builds, subroutines nested inside formats no longer cause
410 assertion failures [perl #78550].
411
412 =item *
413
414 Formats and C<use> statements are now permitted inside formats.
415
416 =item *
417
418 C<print $x> and C<sub { print $x }-E<gt>()> now always produce the same output.
419 It was possible for the latter to refuse to close over $x if the variable was
420 not active; e.g., if it was defined outside a currently-running named
421 subroutine.
422
423 =item *
424
425 Similarly, C<print $x> and C<print eval '$x'> now produce the same output.
426 This also allows "my $x if 0" variables to be seen in the debugger [perl
427 #114018].
428
429 =item *
430
431 Formats called recursively no longer stomp on their own lexical variables, but
432 each recursive call has its own set of lexicals.
433
434 =item *
435
436 Attempting to free an active format or the handle associated with it no longer
437 results in a crash.
438
439 =item *
440
441 Format parsing no longer gets confused by braces, semicolons and low-precedence
442 operators.  It used to be possible to use braces as format delimiters (instead
443 of C<=> and C<.>), but only sometimes.  Semicolons and low-precedence operators
444 in format argument lines no longer confuse the parser into ignoring the line's
445 return value.  In format argument lines, braces can now be used for anonymous
446 hashes, instead of being treated always as C<do> blocks.
447
448 =item *
449
450 Formats can now be nested inside code blocks in regular expressions and other
451 quoted constructs (C</(?{...})/> and C<qq/${...}/>) [perl #114040].
452
453 =item *
454
455 Formats are no longer created after compilation errors.
456
457 =item *
458
459 Some format syntax errors started causing crashes in Perl 5.17.2, but have now
460 been fixed.
461
462 =item *
463
464 Under debugging builds, the B<-DA> command line option started crashing in Perl
465 5.16.0.  It has been fixed [perl #114368].
466
467 =item *
468
469 Scope::Escape compatibility, which was broken in Perl 5.17.2, has been restored
470 [perl #113872].
471
472 =item *
473
474 A potential deadlock scenario involving the premature termination of a pseudo-
475 forked child in a Windows build with ithreads enabled has been fixed.  This
476 resolves the common problem of the F<t/op/fork.t> test hanging on Windows [perl
477 #88840].
478
479 =item *
480
481 The microperl build, broken since Perl 5.15.7, has now been restored.
482
483 =item *
484
485 The code which generates errors from C<require()> could potentially read one or
486 two bytes before the start of the filename for filenames less than three bytes
487 long and ending C</\.p?\z/>.  This has now been fixed.  Note that it could
488 never have happened with module names given to C<use()> or C<require()> anyway.
489
490 =item *
491
492 The handling of pathnames of modules given to C<require()> has been made
493 thread-safe on VMS.
494
495 =item *
496
497 The C<re_compile()> API function, the entry point for perl's regex compiler,
498 was accidentally changed in Perl 5.17.1 to operate on the current engine.  This
499 has now been restored to its former core-engine-specific state [perl #114302].
500
501 =item *
502
503 Perl 5.17.1 introduced a memory leak into the re-use of run-time regexes where
504 the pattern hasn't changed (i.e. C</$unchanging/>).  This has now been fixed.
505
506 =item *
507
508 A bug in the compilation of a C</(?{})/> expression which affected the TryCatch
509 test suite has been fixed [perl #114242].
510
511 =item *
512
513 Formats no longer leak.  They started leaking in Perl 5.17.2.
514
515 =item *
516
517 Pod can now be nested in code inside a quoted construct outside of a string
518 eval.  This used to work only within string evals [perl #114040].
519
520 =back
521
522 =head1 Acknowledgements
523
524 Perl 5.17.3 represents approximately 4 weeks of development since Perl 5.17.2
525 and contains approximately 85,000 lines of changes across 470 files from 24
526 authors.
527
528 Perl continues to flourish into its third decade thanks to a vibrant community
529 of users and developers.  The following people are known to have contributed
530 the improvements that became Perl 5.17.3:
531
532 Andy Dougherty, Chip Salzenberg, Chris 'BinGOs' Williams, Craig A. Berry,
533 Daniel Dragan, Dave Rolsky, David Leadbeater, David Mitchell, Eric Brine,
534 Father Chrysostomos, Goro Fuji, James E Keenan, Jan Dubois, Joaquin Ferrero,
535 Karl Williamson, Nicholas Clark, Paul Marquess, Reini Urban, Ricardo Signes,
536 Robin Barker, Shirakata Kentaro, Steffen Müller, Steve Hay, Tony Cook.
537
538 The list above is almost certainly incomplete as it is automatically generated
539 from version control history.  In particular, it does not include the names of
540 the (very much appreciated) contributors who reported issues to the Perl bug
541 tracker.
542
543 Many of the changes included in this version originated in the CPAN modules
544 included in Perl's core.  We're grateful to the entire CPAN community for
545 helping Perl to flourish.
546
547 For a more complete list of all of Perl's historical contributors, please see
548 the F<AUTHORS> file in the Perl source distribution.
549
550 =head1 Reporting Bugs
551
552 If you find what you think is a bug, you might check the articles recently
553 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
554 http://rt.perl.org/perlbug/ .  There may also be information at
555 http://www.perl.org/ , the Perl Home Page.
556
557 If you believe you have an unreported bug, please run the L<perlbug> program
558 included with your release.  Be sure to trim your bug down to a tiny but
559 sufficient test case.  Your bug report, along with the output of C<perl -V>,
560 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
561
562 If the bug you are reporting has security implications, which make it
563 inappropriate to send to a publicly archived mailing list, then please send it
564 to perl5-security-report@perl.org.  This points to a closed subscription
565 unarchived mailing list, which includes all the core committers, who will be
566 able to help assess the impact of issues, figure out a resolution, and help
567 co-ordinate the release of patches to mitigate or fix the problem across all
568 platforms on which Perl is supported.  Please only use this address for
569 security issues in the Perl core, not for modules independently distributed on
570 CPAN.
571
572 =head1 SEE ALSO
573
574 The F<Changes> file for an explanation of how to view exhaustive details on
575 what changed.
576
577 The F<INSTALL> file for how to build Perl.
578
579 The F<README> file for general stuff.
580
581 The F<Artistic> and F<Copying> files for copyright information.
582
583 =cut