This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Module::CoreList for 5.15.3
[perl5.git] / pod / perl5152delta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to perl v5.15.2
5
6 =head1 NAME
7
8 perl5152delta - what is new for perl v5.15.2
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.15.1 release and
13 the 5.15.2 release.
14
15 If you are upgrading from an earlier release such as 5.15.0, first read
16 L<perl5151delta>, which describes differences between 5.15.0 and
17 5.15.1.
18
19 =head1 Core Enhancements
20
21 =head2 Subroutines in the CORE namespace
22
23 Many Perl keywords are now available as subroutines in the CORE namespace.
24 Most of these cannot be called through references or via C<&foo> syntax
25 yet, but must be called as barewords.  In other words, you can now do
26 this:
27
28     BEGIN { *entangle = \&CORE::tie }
29     entangle $variable, $package, @args;
30
31 This currently works for overridable keywords other than C<dump> and the
32 infix operators.  Calling through references only works for functions that
33 take no arguments (like C<wantarray>).
34
35 Work is under way to allow more of these subroutines to be called through
36 references.
37
38 =head2 C<__FILE__()> Syntax
39
40 The C<__FILE__>, C<__LINE__> and C<__PACKAGE__> tokens can now be written
41 with an empty pair of parentheses after them.  This makes them parse the
42 same way as C<time>, C<fork> and other built-in functions.
43
44 =head1 Incompatible Changes
45
46 =head2 C<UNIVERSAL::VERSION> now returns $VERSION
47
48 C<UNIVERSAL::VERSION> now return whatever is in $VERSION, instead of
49 returning $VERSION converted to a version object and then to a string.
50 As a result, it no longer parses the version when called without arguments,
51 so it no longer dies in that case for malformed versions.  This allows
52 custom version number parsers to use C<< ->VERSION >> to retrieve the
53 version number, as was the case in Perl 5.8 [perl #95544].
54
55 =head1 Modules and Pragmata
56
57 =head2 Updated Modules and Pragmata
58
59 =over 4
60
61 =item *
62
63 L<B> has been upgraded from version 1.30 to version 1.31
64
65 The XS code has changed slightly, as it was too tightly coupled to
66 the contents of the header F<embedvar.h>. Documentation in L<B::Terse>
67 and L<B::Xref> has been improved, hence their versions have been increased.
68
69 =item *
70
71 L<CPAN> has been upgraded from version 1.9600 to version 1.9800
72
73 =item *
74
75 L<CPANPLUS> has been upgraded from version 0.9108 to version 0.9109
76
77 Fixed support for v-strings and x.y.z versions with v5.8.4
78
79 =item *
80
81 L<CPAN::Meta> has been upgraded from version 2.110930_001 to version 2.112150
82
83 Stringify any objects encountered during conversion.
84
85 Clarified that file paths in the 'provides' section must be in
86 Unix-style (i.e. forward slashes)
87
88 =item *
89
90 L<DB_File> has been upgraded from version 1.822 to version 1.824
91
92 Will now croak if attempt to freeze/thaw DB_File object [RT #69985]
93
94 =item *
95
96 L<diagnostics> has been upgraded from version 1.23 to 1.24.
97
98 It now supports the %u formatting code.  Previously it was unable to find
99 descriptions for messages whose entries in L<perldiag> included that code
100 [perl #94988].
101
102 =item *
103
104 L<Encode> has been upgraded from version 2.43 to version 2.44
105
106 Addressed 'decode_xs n-byte heap-overflow' security bug in Unicode.xs
107
108 =item *
109
110 L<ExtUtils::Install> has been upgraded from version 1.56 to version 1.57.
111
112 There is no change to ExtUtils::Install other than the version number
113 increase, but L<ExtUtils::Installed> has been upgraded from version 1.999_001
114 to version 1.999002 and a new C<skip_cwd> attribute has been added.
115
116 =item *
117
118 L<ExtUtils::MakeMaker> has been upgraded from version 6.58 to version 6.59
119
120 =item *
121
122 L<ExtUtils::Manifest> has been upgraded from version 1.58 to version 1.60
123
124 =item *
125
126 L<ExtUtils::ParseXS> has been upgraded from 3.00_01 to 3.00_04.
127
128 =item *
129
130 L<IPC::Open3> has been upgraded from version 1.11 to 1.12.
131
132 C<open3> with "-" for the program name works once more.  This was broken in
133 version 1.06 (and hence in Perl 5.14.0) [perl #95748].
134
135 =item *
136
137 L<Module::Build> has been upgraded from version 0.3800 to version 0.39_01.
138
139 Pod to HTML internals changed to support revisions to Pod::Html in core.
140 Also fixes some minor bugs. [rt.cpan.org #68585] [rt.cpan.org #67893]
141 [rt.cpan.org #67008]
142
143 =item *
144
145 L<Module::CoreList> has been upgraded from version 2.54 to version 2.55
146
147 =item *
148
149 L<Module::Load> has been upgraded from version 0.18 to version 0.20
150
151 =item *
152
153 L<Module::Metadata> has been upgraded from version 1.000004 to version 1.000005
154
155 Added C<new_from_handle()> method.
156
157 =item *
158
159 L<Params::Check> has been upgraded from version 0.28 to version 0.32
160
161 =item *
162
163 L<PerlIO::via> has been upgraded from version 0.11 to version 0.12.
164
165 The only change is a correction in the documentation.
166
167 =item *
168
169 L<Term::ANSIColor> has been upgraded from version 3.00 to version 3.01
170
171 Only interpret an initial array reference as a list of colors, not any initial
172 reference, allowing the colored function to work properly on objects with
173 stringification defined.
174
175 =item *
176
177 L<Unicode::Collate> has been upgraded from version 0.77 to version 0.78
178
179 =item *
180
181 L<Unicode::Normalize> has been upgraded from version 1.12 to version 1.13
182
183 =back
184
185 =head1 Documentation
186
187 =head2 New Documentation
188
189 =head3 L<perlexperiment>
190
191 This document is intended to provide a list of experimental features in
192 Perl.  It is still a work in progress.
193
194 =head2 Changes to Existing Documentation
195
196 =head3 L<perlsub>
197
198 =over 4
199
200 =item *
201
202 The ($;) prototype syntax, which has existed for rather a long time, is now
203 documented in L<perlsub>.  It allows a unary function to have the same
204 precedence as a list operator.
205
206 =back
207
208 =head1 Diagnostics
209
210 The following additions or changes have been made to diagnostic output,
211 including warnings and fatal error messages.  For the complete list of
212 diagnostic messages, see L<perldiag>.
213
214 =head2 New Diagnostics
215
216 =head3 New Errors
217
218 =over 4
219
220 =item *
221
222 L<&CORE::%s cannot be called directly|perldiag/"&CORE::%s cannot be called directly">
223
224 (F) You tried to call a subroutine in the C<CORE::> namespace
225 with C<&foo> syntax or through a reference.  The subroutines
226 in this package cannot yet be called that way, but must be
227 called as barewords.  Something like this will work:
228
229     BEGIN { *shove = \&CORE::push; }
230     shove @array, 1,2,3; # pushes on to @array
231
232 =back
233
234 =head1 Utility Changes
235
236 =head3 L<perlivp>
237
238 =over 4
239
240 =item *
241
242 Fixed a bug whereby other perls under the current directory could cause
243 false positive failures.
244
245 =item *
246
247 Tests for .ph files have been removed, as these test have been optional since
248 2005 and .ph files are no longer generated during installation.
249
250 =back
251
252 =head3 L<splain>
253
254 See the entry for C<< diagnostics >> in L</Updated Modules and Pragmata>,
255 above.
256
257 =head1 Configuration and Compilation
258
259 =over 4
260
261 =item *
262
263 F<makedef.pl> has been refactored. This should have no noticeable affect on
264 any of the platforms that use it as part of their build (AIX, VMS, Win32).
265
266 =item *
267
268 C<useperlio> can no longer be disabled.
269
270 =back
271
272 =head1 Platform Support
273
274 =over 4
275
276 =item HP-UX PA-RISC/64 now supports gcc-4.x
277
278 A fix to correct the socketsize now makes the test suite pass on HP-UX
279 PA-RISC for 64bitall builds.
280
281 =back
282
283 =head1 Internal Changes
284
285 =over 4
286
287 =item *
288
289 F<embedvar.h> has been simplified, and one level of macro indirection for
290 PL_* variables has been removed for the default (non-multiplicity)
291 configuration. PERLVAR*() macros now directly expand their arguments to
292 tokens such as C<PL_defgv>, instead of expanding to C<PL_Idefgv>, with
293 F<embedvar.h> defining a macro to map C<PL_Idefgv> to C<PL_defgv>. XS code
294 which has unwarranted chumminess with the implementation may need updating.
295
296 =item *
297
298 A C<coreargs> opcode has been added, to be used by C<&CORE::foo> subs to sort
299 out C<@_>.
300
301 =item *
302
303 An API has been added to explicitly choose whether or not to export XSUB
304 symbols.  More detail can be found in the comments for commit e64345f8.
305
306 =back
307
308 =head1 Selected Bug Fixes
309
310 =over 4
311
312 =item *
313
314 Locking a subroutine (via C<lock &sub>) is no longer a compile-time error
315 for regular subs.  For lvalue subroutines, it no longer tries to return the
316 sub as a scalar, resulting in strange side effects like C<ref \$_>
317 returning "CODE" in some instances.
318
319 C<lock &sub> is now a run-time error if L<threads::shared> is loaded (a
320 no-op otherwise), but that may be rectified in a future version.
321
322 =item *
323
324 The prototypes of several built-in functions--C<getprotobynumber>, C<lock>,
325 C<not> and C<select>--have been corrected, or at least are now closer to
326 reality than before.
327
328 =item *
329
330 Most dereferencing operators (C<${}>, etc.) used to call C<FETCH> twice on
331 a tied operand when doing a symbolic dereference (looking up a variable by
332 name, which is not permitted under C<use strict 'refs'>).  Only C<&{}> did
333 not have this problem.  This has been fixed.
334
335 =item *
336
337 A minor regression introduced in 5.15.0 has been fixed.  Dereferencing a
338 magical mortal (e.g., the return value of C<delete> on a tied hash element)
339 explicitly returned from a subroutine called recursively was not calling
340 C<FETCH>.  This would affect code like C<@{ foo() }> where the C<foo> sub
341 contains C<return delete $hash{elem}> and is calling itself.
342
343 =item *
344
345 A panic involving the combination of the regular expression modifiers
346 C</aa> and the C<\b> escape sequence introduced in 5.14.0 has been
347 fixed [perl #95964].
348
349 =item *
350
351 stat() would always return the inode number as an IV, even when the
352 original was unsigned, or too large to fit in an IV.  stat() now
353 returns the inode number as the type that would best preserve the
354 original value. [perl #84590]
355
356 =item *
357
358 The combination of the regular expression modifiers C</aa> and the C<\b>
359 and C<\B> escape sequences did not work properly on UTF-8 encoded
360 strings.  All non-ASCII characters under C</aa> should be treated as
361 non-word characters, but what was happening was that Unicode rules were
362 used to determine wordness/non-wordness for non-ASCII characters.  This
363 is now fixed [perl #95968].
364
365 =item *
366
367 Infinite loops like C<1 while 1> used to stop C<strict 'subs'> mode from
368 working for the rest of the block.t
369
370 =item *
371
372 The C<\h>, C<\H>, C<\v> and C<\V> regular expression metacharacters used to
373 cause a panic error message when attempting to match at the end of the
374 string [perl #96354].
375
376 =item *
377
378 For list assignments like C<($a,$b) = ($b,$a)>, Perl has to make a copy of
379 the items on the right-hand side before assignment them to the left.  For
380 efficiency's sake, it assigns the values on the right straight to the items
381 on the left no variable is mentioned on both sides, as in
382 C<($a,$b) = ($c,$d)>.  The logic for determining when it can cheat was
383 faulty, in that C<&&> and C<||> on the right-hand side could fool it.  So
384 C<($a,$b) = $some_true_value && ($b,$a)> would end up assigning the value
385 of C<$b> to both scalars.
386
387 =item *
388
389 Perl no longer tries to apply lvalue context to the string in
390 C<("string", $variable) ||= 1> (which used to be an error).  Since the
391 left-hand side of C<||=> is evaluated in scalar context, that's a scalar
392 comma operator, which gives all but the last item void context.  There is
393 no such thing as void lvalue context, so it was a mistake for Perl to try
394 to force it [perl #96942].
395
396 =item *
397
398 Every subroutine has a filename associated with it, that the debugger uses.
399 The one associated with constant subroutines used to be misallocated when
400 cloned under threads.  Consequently, debugging threaded applications could
401 result in memory corruption [perl #96126].
402
403 =item *
404
405 C<caller> no longer leaks memory when called from the DB package if
406 C<@DB::args> was assigned to after the first call to C<caller>.  L<Carp>
407 was triggering this bug [perl #97010].
408
409 =back
410
411 =head1 Acknowledgements
412
413 Perl 5.15.2 represents approximately 2 months of development since Perl
414 5.15.1 and contains approximately 17,000 lines of changes across 330
415 files from 35 authors.
416
417 Perl continues to flourish into its third decade thanks to a vibrant
418 community of users and developers. The following people are known to
419 have contributed the improvements that became Perl 5.15.2:
420
421 Abigail, Andreas König, brian d foy, Brian Greenfield, Chas. Owens,
422 Chris 'BinGOs' Williams, Craig A. Berry, David Golden, David Mitchell,
423 Eric Brine, Father Chrysostomos, Florian Ragwitz, Gerard Goossen,
424 H.Merijn Brand, Jesse Vincent, John Peacock, Karl Williamson, Karthik
425 Rajagopalan, Keith Thompson, Kevin Ryde, Matthew Horsfall, Mike
426 Sheldrake, Nicholas Clark, Niko Tyni, Reini Urban, Ricardo Signes,
427 Salvador Fandiño, Shlomi Fish, Spiros Denaxas, Steffen Müller, Stephen
428 Oberholtzer, Steve Hay, Tony Cook, Vincent Pit, Zefram.
429
430 The list above is almost certainly incomplete as it is automatically
431 generated from version control history. In particular, it does not
432 include the names of the (very much appreciated) contributors who
433 reported issues to the Perl bug tracker.
434
435 Many of the changes included in this version originated in the CPAN
436 modules included in Perl's core. We're grateful to the entire CPAN
437 community for helping Perl to flourish.
438
439 For a more complete list of all of Perl's historical contributors,
440 please see the F<AUTHORS> file in the Perl source distribution.
441
442 =head1 Reporting Bugs
443
444 If you find what you think is a bug, you might check the articles
445 recently posted to the comp.lang.perl.misc newsgroup and the perl
446 bug database at http://rt.perl.org/perlbug/ .  There may also be
447 information at http://www.perl.org/ , the Perl Home Page.
448
449 If you believe you have an unreported bug, please run the L<perlbug>
450 program included with your release.  Be sure to trim your bug down
451 to a tiny but sufficient test case.  Your bug report, along with the
452 output of C<perl -V>, will be sent off to perlbug@perl.org to be
453 analysed by the Perl porting team.
454
455 If the bug you are reporting has security implications, which make it
456 inappropriate to send to a publicly archived mailing list, then please send
457 it to perl5-security-report@perl.org. This points to a closed subscription
458 unarchived mailing list, which includes
459 all the core committers, who will be able
460 to help assess the impact of issues, figure out a resolution, and help
461 co-ordinate the release of patches to mitigate or fix the problem across all
462 platforms on which Perl is supported. Please only use this address for
463 security issues in the Perl core, not for modules independently
464 distributed on CPAN.
465
466 =head1 SEE ALSO
467
468 The F<Changes> file for an explanation of how to view exhaustive details
469 on what changed.
470
471 The F<INSTALL> file for how to build Perl.
472
473 The F<README> file for general stuff.
474
475 The F<Artistic> and F<Copying> files for copyright information.
476
477 =cut