This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta entry for 64eff8b7
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.15.1
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.15.1 release and
10 the 5.15.0 release.
11
12 If you are upgrading from an earlier release such as 5.14.0, first read
13 L<perl5150delta>, which describes differences between 5.14.0 and
14 5.15.0.
15
16 =head1 Core Enhancements
17
18 =head2 C<splice()> doesn't warn when truncating
19
20 You can now limit the size of an array using C<splice(@a,MAX_LEN)> without
21 worrying about warnings.
22
23 =head2 The C<\$> prototype accepts any scalar lvalue
24
25 The C<\$> and C<\[$]> subroutine prototypes now accept any scalar lvalue
26 argument.  Previously they only accepted scalars beginning with C<$> and
27 hash and array elements.  This change makes them consistent with the way
28 the built-in C<read> and C<recv> functions (among others) parse their
29 arguments. This means that one can override the built-in functions with
30 custom subroutines that parse their arguments the same way.
31
32 =head2 You can now C<study> more than one string
33
34 The restriction that you can only have one C<study> active at a time has been
35 removed. You can now usefully C<study> as many strings as you want (until you
36 exhaust memory).
37
38 =head2 The Unicode C<Script_Extensions> property is now supported.
39
40 New in Unicode 6.0, this is an improved C<Script> property.  Details
41 are in L<perlunicode/Scripts>.
42
43 =head2 DTrace probes for interpreter phase change
44
45 The C<phase-change> probes will fire when the interpreter's phase
46 changes, which tracks the C<${^GLOBAL_PHASE}> variable. C<arg0> is
47 the new phase name; C<arg1> is the old one. This is useful mostly
48 for limiting your instrumentation to one or more of: compile time,
49 run time, destruct time.
50
51 =head2 New Pad API
52
53 Many new functions have been added to the API for manipulating lexical
54 pads.  See L<perlapi/Pad Data Structures> for more information.
55
56 =head1 Performance Enhancements
57
58 =over 4
59
60 =item *
61
62 The short-circuiting operators C<&&>, C<||>, and C<//> are now
63 considerably faster in the short-circuiting case due to reduced
64 OP-tree traversal.
65
66 =item *
67
68 The implementation of C<s///r> makes one less copy of the scalar's value.
69
70 =item *
71
72 If a studied scalar is C<split> with a regex, the engine will now take
73 advantage of the C<study> data.
74
75 =item *
76
77 C<study> now uses considerably less memory for shorter strings. Strings shorter
78 than 65535 characters use roughly half the memory than previously, strings
79 shorter than 255 characters use roughly one quarter of the memory.
80
81 =item *
82
83 Recursive calls to lvalue subroutines in lvalue scalar context use less
84 memory.
85
86 =back
87
88 =head1 Modules and Pragmata
89
90 =head2 New Modules and Pragmata
91
92 =over 4
93
94 =item *
95
96 The logic for parsing, merging, and dumping XS typemaps has been extracted
97 from C<ExtUtils::ParseXS> into a module of its own, L<ExtUtils::Typemaps>.
98 C<ExtUtils::Typemaps> offers an interface to typemap handling outside of
99 the scope of the XS compiler itself.
100
101 As a first use case of the improved API and extensibility, typemaps can now
102 be included inline in XS code with a HEREDOC-like syntax:
103
104   TYPEMAP: <<END_TYPEMAP
105   MyType        T_IV
106   END_TYPEMAP
107
108 =back
109
110 =head2 Updated Modules and Pragmata
111
112 =over 4
113
114 =item *
115
116 L<B::Deparse> has been upgrade from version 1.05 to 1.06.
117
118 It now correctly deparses interpolation of punctuation variables (like
119 C<@*>) that do not interpolate without braces [perl #93990].
120
121 =item *
122
123 L<CGI> has been upgraded from version 3.54 to version 3.55
124
125 [THINGS THAT MAY BREAK YOUR CODE]
126
127 C<url()> was fixed to return C<PATH_INFO> when it is explicitly requested
128 with either the path=>1 or path_info=>1 flag.
129
130 If your code is running under mod_rewrite (or compatible) and you are calling C<self_url()> or
131 you are calling C<url()> and passing path_info=>1, These methods will actually be
132 returning C<PATH_INFO> now, as you have explicitly requested, or has C<self_url()>
133 has requested on your behalf.
134
135 The C<PATH_INFO> has been omitted in such URLs since the issue was introduced
136 in the 3.12 release in December, 2005.
137
138 This bug is so old your application may have come to depend on it or
139 workaround it. Check for application before upgrading to this release.
140
141 Examples of affected method calls:
142
143   $q->url(-absolute => 1, -query => 1, -path_info => 1 )
144   $q->url(-path=>1)
145   $q->url(-full=>1,-path=>1)
146   $q->url(-rewrite=>1,-path=>1)
147   $q->self_url();
148
149 =item *
150
151 L<Compress::Raw::Bzip2> has been upgraded from version 2.035 to version 2.037
152
153 =item *
154
155 L<Compress::Raw::Zlib> has been upgraded from version 2.035 to version 2.037
156
157 Added offset parameter to CRC32
158
159 =item *
160
161 L<Compress::Zlib> has been upgraded from version 2.035 to version 2.037
162
163 IO::Compress::Zip and IO::Uncompress::Unzip now have support for LZMA (method 14).
164 There is a fix for a CRC issue in IO::Compress::Unzip and it supports Streamed
165 Stored context now. And fixed a Zip64 issue in
166 IO::Compress::Zip when the content size was exactly 0xFFFFFFFF.
167
168 =item *
169
170 L<CPANPLUS> has been upgraded from version 0.9105 to version 0.9108
171
172 =item *
173
174 L<Cwd> has been upgraded from version 3.36 to 3.37, to address an
175 incompatibility with the EPIC debugger.
176
177 =item *
178
179 L<diagnostics> has been upgraded from version 1.22 to 1.23.
180
181 It now knows how to find descriptions for diagnostic messages ending with a
182 dot, instead getting confused by it.
183
184 =item *
185
186 L<ExtUtils::MakeMaker> has been upgraded from version 6.57_05 to version 6.58
187
188 =item *
189
190 L<ExtUtils::ParseXS> has been upgraded from version 2.2210 to 3.00_01.
191
192 Much of L<ExtUtils::ParseXS>, the module behind the XS compiler C<xsubpp>,
193 was rewritten and cleaned up. It has been made somewhat more extensible
194 and now finally uses strictures.
195
196 The typemap logic has been moved into a separate module,
197 L<ExtUtils::Typemaps>.  See L</New Modules and Pragmata>, above.
198
199 =item *
200
201 L<HTTP::Tiny> has been upgraded from version 0.012 to version 0.013.
202
203 Added support for using C<$ENV{http_proxy}> to set the default proxy host.
204
205 =item *
206
207 L<IPC::Cmd> has been upgraded from version 0.70 to version 0.72
208
209 Capturing of command output (both C<STDOUT> and C<STDERR>) is now supported
210 using L<IPC::Open3> on MSWin32 without requiring L<IPC::Run>.
211
212 =item *
213
214 L<Locale::Codes> has been upgraded from version 3.16 to version 3.17
215
216 Added Language Extension codes (langext) and Language Variation codes
217 (langvar) as defined in the IANA language registry.
218
219 Added language codes from ISO 639-5
220
221 Added language/script codes from the IANA language subtag
222 registry
223
224 Fixed an uninitialized value warning.  RT 67438
225
226 Fixed the return value for the all_XXX_codes and all_XXX_names functions.  RT 69100
227
228 Reorganized modules to move Locale::MODULE to Locale::Codes::MODULE to
229 allow for cleaner future additions.  The original four modules (Locale::Language,
230 Locale::Currency, Locale::Country, Locale::Script) will continue to work, but
231 all new sets of codes will be added in the Locale::Codes namespace.
232
233 =item *
234
235 L<attributes> has been upgraded from version 0.14 to 0.15, as part of the
236 lvalue attribute warnings fix.  See L</Selected Bug Fixes>, below.
237
238 =item *
239
240 L<Math::BigInt::FastCalc> has been upgraded from version 0.28 to version 0.29.
241
242 The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid
243 performance under ithreads.
244
245 =item *
246
247 L<Module::CoreList> has been upgraded from version 2.51 to 2.53.
248
249 Some extraneous (and erroneous) entries have been removed
250 [rt.cpan.org #69108].
251
252 The C<corelist> utility now understands the C<-r> option for
253 displaying Perl release dates.
254
255 =item *
256
257 L<Pod::Perldoc> has been upgraded from version 3.15_05 to 3.15_06.
258
259 The B<-v> option now fetches the right section for C<$0>.
260
261 =item *
262
263 L<Pod::Simple> has been upgraded from version 3.16 to version 3.18
264
265 =item *
266
267 L<Unicode::Collate> has been upgraded from version 0.76 to version 0.77
268
269 Applied [perl #93470] silencing compiler warnings with -Wwrite-strings
270
271 =item *
272
273 L<Win32API::File> has been upgraded from version 0.1101 to version 0.1200
274
275 Added SetStdHandle and GetStdHandle functions
276
277 =item *
278
279 L<threads> has been upgraded from version 1.83 to 1.84
280
281 An unused variable was removed from the XS code.
282
283 =back
284
285 =head2 Removed Modules and Pragmata
286
287 =over 4
288
289 =item *
290
291 Perl 4-era .pl libraries
292
293 Perl used to bundle a handful of library files that predate Perl 5. Most of
294 these files, which have been deprecated since version 5.14.0, have now been
295 removed. If your code still relies on these libraries, you can install them
296 again from C<Perl4::CoreLibs> on CPAN.
297
298 =back
299
300 =head1 Documentation
301
302 =head2 New Documentation
303
304 =head3 L<perldtrace>
305
306 L<perldtrace> describes Perl's DTrace support, listing the provided probes
307 and gives examples of their use.
308
309 =head3 L<perl5141delta>
310
311 The delta file for Perl 5.14.1 has been copied to blead.
312
313 =head2 Changes to Existing Documentation
314
315 =over 4
316
317 =item *
318
319 L<perlxs> was extended with documentation on inline typemaps.
320
321 =item *
322
323 L<perlref> has a new L<Circular References|perlref/Circular References>
324 section explaining how circularities may not be freed and how to solve that
325 with weak references.
326
327 =item *
328
329 The documentation for smart match in L<perlsyn> has been corrected for the
330 case of C<undef> on the left-hand side.  The list of different smart match
331 behaviours had an item in the wrong place.
332
333 =item *
334
335 Parts of L<perlapi> were clarified, and Perl equivalents of some C
336 functions have been added as an additional mode of exposition.
337
338 =item *
339
340 A few parts of L<perlre> and L<perlrecharclass> were clarified.
341
342 =back
343
344 =head1 Diagnostics
345
346 The following additions or changes have been made to diagnostic output,
347 including warnings and fatal error messages.  For the complete list of
348 diagnostic messages, see L<perldiag>.
349
350 =head2 Changes to Existing Diagnostics
351
352 =over 4
353
354 =item *
355
356 The L<Invalid version format|perldiag/"Invalid version format (%s)">
357 error message now says "negative version number" within the parentheses,
358 rather than "non-numeric data", for negative numbers.
359
360 =item *
361
362 The two warnings
363 L<Possible attempt to put comments in qw() list|perldiag/"Possible attempt to put comments in qw() list">
364 and
365 L<Possible attempt to separate words with commas|perldiag/"Possible attempt to separate words with commas">
366 are no longer mutually exclusive: the same C<qw> construct may produce
367 both.
368
369 =item *
370
371 Warnings that mention the names of lexical (C<my>) variables with Unicode
372 characters in them now respect the presence or absence of the C<:utf8>
373 layer on the output handle, instead of outputting UTF8 regardless.  Also,
374 the correct names are included in the strings passed to C<$SIG{__WARN__}>
375 handlers, rather than the raw UTF8 bytes.
376
377 =back
378
379 =head1 Testing
380
381 =over 4
382
383 =item *
384
385 F<t/run/dtrace.t> was added to test Perl's DTrace support. This
386 test will only be run if your Perl was built with C<-Dusedtrace>
387 and if calling C<dtrace> actually lets you instrument code. This
388 generally requires being run as root, so this test file is primarily
389 intended for use by the dtrace subcommittee of p5p.
390
391 =item *
392
393 F<t/win32/runenv.t> was added to test aspects of Perl's environment
394 variable handling on MSWin32 platforms.  Previously, such tests were
395 skipped on MSWin32 platforms.
396
397 =item *
398
399 Some bitrot has been fixed in the miniperl test suite, so that it now
400 nearly passes.  The minitest is normally only run when building the
401 full perl fails, so it was liable to fall into disrepair making it a
402 less useful debugging tool.  When it is fully passing it is hoped to
403 start including it in regular smoke tests, so that future bitrot will
404 be quickly detected.
405
406 =back
407
408 =head1 Platform Support
409
410 =head2 Platform-Specific Notes
411
412 =head3 Windows
413
414 =over
415
416 =item *
417
418 On Windows 7, 2008 and Vista, C<@INC> is now always properly populated
419 based on the value of PERL5LIB set in the environment.  Previously,
420 values of PERL5LIB longer than 32766 bytes were skipped when C<@INC>
421 was being populated.  Tests for environment handling were
422 also added (see L</Testing> section).  Fixes
423 L<RT #87322|https://rt.perl.org/rt3/Public/Bug/Display.html?id=87322>.
424
425 =back
426
427 =head1 Internal Changes
428
429 =over 4
430
431 =item *
432
433 The expermental C<fetch_cop_label> function has been renamed to
434 C<cop_fetch_label>.
435
436 =item *
437
438 The C<cop_store_label> function has been added to the API, but is
439 experimental.
440
441 =back
442
443 =head1 Selected Bug Fixes
444
445 =over 4
446
447 =item *
448
449 Applying the :lvalue attribute to subroutine that is already defined does
450 not work properly, as the attribute changes the way the sub is compiled.
451 Hence, Perl 5.12 began warning when an attempt is made to apply the
452 attribute to an already defined sub.  In such cases, the attribute is
453 discarded.
454
455 But the change in 5.12 missed the case where custom attributes are also
456 present: that case still silently and ineffectively applied the attribute.
457 That omission has now been corrected.  C<sub foo :lvalue :Whatever> (when
458 C<foo> is already defined) now warns about the :lvalue attribute, and does
459 not apply it.
460
461 L<attributes.pm|attributes> has likewise been updated to warn and not apply
462 the attribute.
463
464 =item *
465
466 =for comment
467 Not necessary for perl5160delta
468
469 The remaining discrepancies between explicit and implicit return from
470 lvalue subroutines have been resolved.  They mainly involved which error
471 message to display when a read-only value is returned in lvalue context.
472 Also, returning a PADTMP (the result of most built-ins, like C<index>) in
473 lvalue context is now forbidden for explicit return, as it always has been
474 for implicit return.  This is not a regression from 5.14, as all the cases
475 in which it could happen where previously syntax errors.
476
477 =item *
478
479 =for comment
480 Not necessary for perl5160delta
481
482 Explicitly returning a tied C<my> variable from an lvalue subroutine in
483 list lvalue context used to clear the variable before the assignment could
484 happen.  This is something that was missed when explicit return was made to
485 work in 5.15.0.
486
487 =item *
488
489 =for comment
490 Not necessary for perl5160delta
491
492 A minor memory leak, introduced in 5.15.0, has been fixed.  It would occur
493 when a hash is freed that has had its current iterator deleted
494 [perl #93454].
495
496 =item *
497
498 The C<prototype> function no longer dies for the C<__FILE__>, C<__LINE__>
499 and C<__PACKAGE__> directives.  It now returns an empty-string prototype
500 for them, because they are syntactically very similar to nullary functions
501 like C<time>.
502
503 =item *
504
505 C<prototype> now returns C<undef> for all overridable infix operators,
506 such as C<eq>, which are not callable in any way resembling functions.
507 It used to return incorrect prototypes for some and die for others
508 [perl #94984].
509
510 =item *
511
512 A bug affecting lvalue context propagation through nested lvalue subroutine
513 calls has been fixed.  Previously, returning a value in nested rvalue
514 context would be treated as lvalue context by the inner subroutine call,
515 resulting in some values (such as read-only values) being rejected.
516
517 =item *
518
519 Some core bugs affecting L<Hash::Util> have been fixed: locking a hash
520 element that is a glob copy no longer causes subsequent assignment to it to
521 corrupt the glob, and unlocking a hash element that holds a copy-on-write
522 scalar no longer causes modifications to that scalar to modify other
523 scalars that were sharing the same string buffer.
524
525 =item *
526
527 C<when> blocks are now capable of returning variables declared inside the
528 enclosing C<given> block [perl #93548].
529
530 =item *
531
532 A problem with context propagation when a C<do> block is an argument to
533 C<return> has been fixed.  It used to cause undefined to be returned in
534 some cases of a C<return> inside an C<if> block which itself is followed by
535 another C<return>.
536
537 =item *
538
539 Calling C<index> with a tainted constant no longer causes constants in
540 subsequently compiled code to become tainted [perl #64804].
541
542 =item *
543
544 Use of lexical (C<my>) variables in code blocks embedded in regular
545 expressions will no longer result in memory corruption or crashes.
546
547 Nevertheless, these code blocks are still experimental, as there are still
548 problems with the wrong variables being closed over (in loops for instance)
549 and with abnormal exiting (e.g., C<die>) causing memory corruption.
550
551 =item *
552
553 The C<SvIsCOW> C macro now returns false for read-only copies of typeglobs,
554 such as those created by:
555
556   $hash{elem} = *foo;
557   Hash::Util::lock_value %hash, 'elem';
558
559 It used to return true.
560
561 =item *
562
563 Assignment to C<$^A> (the format output accumulator) now recalculates
564 the number of lines output.
565
566 =item *
567
568 The regexp optimiser no longer crashes on debugging builds when merging
569 fixed-string nodes with inconvenient contents.
570
571 =back
572
573 =head1 Acknowledgements
574
575 XXX Generate this with:
576
577   perl Porting/acknowledgements.pl v5.15.0..HEAD
578
579 =head1 Reporting Bugs
580
581 If you find what you think is a bug, you might check the articles
582 recently posted to the comp.lang.perl.misc newsgroup and the perl
583 bug database at http://rt.perl.org/perlbug/ .  There may also be
584 information at http://www.perl.org/ , the Perl Home Page.
585
586 If you believe you have an unreported bug, please run the L<perlbug>
587 program included with your release.  Be sure to trim your bug down
588 to a tiny but sufficient test case.  Your bug report, along with the
589 output of C<perl -V>, will be sent off to perlbug@perl.org to be
590 analysed by the Perl porting team.
591
592 If the bug you are reporting has security implications, which make it
593 inappropriate to send to a publicly archived mailing list, then please send
594 it to perl5-security-report@perl.org. This points to a closed subscription
595 unarchived mailing list, which includes
596 all the core committers, who will be able
597 to help assess the impact of issues, figure out a resolution, and help
598 co-ordinate the release of patches to mitigate or fix the problem across all
599 platforms on which Perl is supported. Please only use this address for
600 security issues in the Perl core, not for modules independently
601 distributed on CPAN.
602
603 =head1 SEE ALSO
604
605 The F<Changes> file for an explanation of how to view exhaustive details
606 on what changed.
607
608 The F<INSTALL> file for how to build Perl.
609
610 The F<README> file for general stuff.
611
612 The F<Artistic> and F<Copying> files for copyright information.
613
614 =cut