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