This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Adding in my choice of epigraph to epigraph.pod
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
f25d4e05 5perldelta - what is new for perl v5.15.3
760696b8 6
5438d4b8 7=head1 DESCRIPTION
5cd408a2 8
f25d4e05
RS
9This document describes differences between the 5.15.2 release and
10the 5.15.3 release.
5cd408a2 11
f25d4e05
RS
12If you are upgrading from an earlier release such as 5.15.1, first read
13L<perl5152delta>, which describes differences between 5.15.1 and
145.15.2.
062678b2 15
63ac71b9 16=head1 Notice
4185c919 17
83307084
SL
18This release includes a rewrite of the perl OO docs which represent
19a significant modernization of the OO documentation. All of the old OO
45c0823b
SL
20tutorials (perltoot, perlboot, etc.) have been replaced with pointers
21to the new docs.
0afed34d 22
63ac71b9 23=head1 Core Enhancements
0afed34d 24
d2006265
FC
25=head2 More CORE subs are callable through references
26
c148612c 27Perl 5.15.2 introduced subroutines in the CORE namespace. Most of them
d2006265
FC
28could only be called as barewords; i.e., they could be aliased at compile
29time and then inlined under new names.
30
2702a50a
FC
31Almost all of these functions can now be called through references and via
32C<&foo()> syntax, bypassing the prototype. See L<CORE> for a list of the
33exceptions.
d2006265 34
d6cf2367
FC
35=head2 New debugger commands
36
37The debugger now has C<disable> and C<enable> commands for disabling
38existing breakpoints and reënabling them. See L<perldebug>.
39
63ac71b9 40=head1 Security
0afed34d 41
46661105
CB
42=head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
43
83307084 44Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would
46661105
CB
45cause an access violation / segfault. A Perl program that accepts a flags value from
46an external source could expose itself to denial of service or arbitrary code
47execution attacks. There are no known exploits in the wild. The problem has been
48corrected by explicitly disabling all unsupported flags and setting unused function
49pointers to null. Bug reported by Clément Lecigne.
50
5438d4b8 51=head1 Incompatible Changes
7818c927 52
e1dccc0d
Z
53=head2 $[ has been removed
54
55The array/string index offsetting mechanism, controlled by the C<$[> magic
56variable, has been removed. C<$[> now always reads as zero. Writing a
57zero to it is still permitted, but writing a non-zero value causes an
58exception. Those hopelessly addicted to FORTRAN-style 1-based indexing
59may wish to use the module L<Array::Base>, which provides an independent
60implementation of the index offsetting concept, or L<Classic::Perl>,
61which allows L<Array::Base> to be controlled through assignment to C<$[>.
62
5d1892be 63=head2 User-defined case changing operations.
7b2b001e 64
5d1892be
KW
65This feature was deprecated in Perl 5.14, and has now been removed.
66The CPAN module L<Unicode::Casing> provides better functionality without
67the drawbacks that this feature had, as are detailed in the 5.14
68documentation:
69L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
bdb9ba77 70
7ec04da5
SM
71=head2 XSUBs are now 'static'
72
73XSUB C functions are now 'static', that is, they are not visible from
404452ea
SM
74outside the compilation unit. Users can use the new C<XS_EXTERNAL(name)>
75and C<XS_INTERNAL(name)> macros to pick the desired linking behaviour.
76The ordinary C<XS(name)> declaration for XSUBs will continue to declare
77non-'static' XSUBs for compatibility, but the XS compiler,
78C<ExtUtils::ParseXS> (C<xsubpp>) will emit 'static' XSUBs by default.
79C<ExtUtils::ParseXS>'s behaviour can be reconfigured from XS using the
7ec04da5
SM
80C<EXPORT_XSUB_SYMBOLS> keyword, see L<perlxs> for details.
81
d6cf2367
FC
82=head2 Borland compiler
83
84All support for the Borland compiler has been dropped. The code had not
85worked for a long time anyway.
86
5d4ff231
FC
87=head2 Weakening read-only references
88
89Weakening read-only references is no longer permitted. It should never
90hove worked anyway, and in some cases could result in crashes.
91
63ac71b9 92=head1 Modules and Pragmata
730e5b5b 93
63ac71b9 94=head2 Updated Modules and Pragmata
e46d9735 95
63ac71b9 96=over 4
e46d9735
CBW
97
98=item *
99
5f8b5b70
NC
100L<AnyDBM_File> has been upgraded from version 1.00 to version 1.01.
101
102This is only a minor documentation update.
103
104=item *
105
43c6b706 106L<Archive::Extract> has been upgraded from version 0.52 to version 0.56.
4afdee4c
CBW
107
108Resolved an issue where C<unzip> executable was present in C<PATH> on MSWin32
57126352 109
d93f0209
FC
110=item *
111
93e94d8a
CBW
112L<Archive::Tar> has been upgraded from version 1.76 to version 1.78.
113
114=item *
115
83307084
SL
116L<attributes> has been upgraded from version 0.15 to version 0.16.
117
118=item *
119
120L<Attribute::Handlers> has been upgraded from version 0.92 to version 0.93.
121
122=item *
123
6ec73527
FC
124L<B::Deparse> has been upgraded from version 1.07 to 1.08.
125
61154ac0 126It now correctly deparses C<$#{/}> and C<qq(${#}a)>.
6ec73527
FC
127
128=item *
129
83307084
SL
130L<Carp> has been upgraded from version 1.21 to 1.23.
131
132L<Carp> is now a dual life module and several fixes have been make to make
133it more portable to older versions of perl.
134
135=item *
136
a808a03d 137L<CPAN::Meta> has been upgraded from version 2.112150 to version 2.112621.
13975bd1
CBW
138
139=item *
140
53b10071
CBW
141L<CPAN::Meta::YAML> has been upgraded from version 0.003 to version 0.004.
142
143=item *
144
891b5d1e 145L<CPANPLUS> has been upgraded from version 0.9109 to version 0.9111.
755f12e5
NC
146
147=item *
148
50b3d220
CBW
149L<CPANPLUS::Dist::Build> has been upgraded from version 0.56 to version 0.58.
150
151=item *
152
49ef49fe
CBW
153L<Devel::PPPort> has been upgraded from version 3.19 to version 3.20.
154
155=item *
156
43c6b706 157L<diagnostics> has been upgraded from version 1.24 to version 1.25.
d2006265 158
6776795f 159It now strips out C<SZE<lt>E<gt>E<lt>...E<gt>> formatting codes before displaying
d2006265
FC
160descriptions [perl #94488].
161
162=item *
163
4bbdbd51
NC
164L<Data::Dumper> has been upgraded from version 2.133 to version 2.134.
165
166The XS code for sorting hash keys has been simplified slightly.
167
168=item *
169
f87cd9fa
CBW
170L<Exporter> has been upgraded from version 5.64_03 to version 5.65.
171
172=item *
173
404452ea 174L<ExtUtils::ParseXS> has been upgraded from version 3.03_01 to version 3.04_04.
98e61122
NC
175
176The handling of C<dVAR> in the generated XS code has been simplified.
177
404452ea
SM
178The previously broken "INCLUDE: ... |" functionality has been repaired
179(CPAN RT #70213).
180
181A compatibility-workaround for modules that cannot
182live with the new XSUB staticness (see I<XSUBs are now static> above)
183has been implemented with the C<PERL_EUPXS_ALWAYS_EXPORT> and
184C<PERL_EUPXS_NEVER_EXPORT> preprocessor defines.
185
186The compiler warnings when -except option is used with F<xsubpp>
187have been fixed.
188
189The XSUB.h changes to make C<XS(name)> use C<XS_INTERNAL(name)>
190by default (which were in the 5.15.2 dev release of perl)
191have been reverted since too many CPAN modules expect to
192be able to refer to XSUBs declared with C<XS(name)>.
193Instead, C<ExtUtils::ParseXS> will define a copy of the
194C<XS_INTERNAL>/C<XS_EXTERNAL> macros as necessary going back to
195perl 5.10.0. By default, ExtUtils::ParseXS will use
196C<XS_INTERNAL(name)> instead of C<XS(name)>.
197
198Fixed regression for input-typemap override in XS argument
199list (CPAN RT #70448).
200
201C<ExtUtils::Typemaps> now properly strips trailing semicolons
202from inputmaps. These could previously trigger warnings (errors
203in strict C89 compilers) due to additional semicolons being
204interpreted as empty statements.
205
206Now detects and throws a warning if there is a C<CODE> section using
207C<RETVAL>, but no C<OUTPUT> section (CPAN RT #69536).
208
98e61122
NC
209=item *
210
43c6b706
CBW
211L<Locale::Codes> has been upgraded from version 3.17 to version 3.18.
212
213The CIA world added non-standard values, so this is no longer used as a source
214of data.
215
216=item *
217
46661105
CB
218L<File::Glob> has been upgraded from version 1.12 to version 1.13.
219
d6cf2367
FC
220On Windows, tilde (~) expansion now checks the C<USERPROFILE> environment
221variable, after checking C<HOME>.
222
223See also L</Security>.
46661105
CB
224
225=item *
226
0b2be169
FC
227L<Filter::Simple> has been upgrade from version 0.87 to 0.88.
228
229It is now better at detecting the end of a pod section. It always checks
230for =cut, instead of checking for =end (if the pod begins with =begin) or
231the end of the paragraph (if the pod begins with =for) [perl #92436].
232
828d6195
FC
233It is also better at detecting variables. A method call on a variable is
234no longer considered part of the variable name, so strings passed to a
235method are now hidden from filters that do not want to deal with strings
236[perl #92436].
237
0b2be169
FC
238=item *
239
986a805c
FC
240L<IO> has been upgraded from version 1.25_05 to 1.25_06, and L<IO::Handle>
241from version 1.32 to 1.33.
242
243Together, these upgrades fix a problem with IO::Handle's C<getline> and
244C<getlines> methods. When these methods are called on the special ARGV
245handle, the next file is automatically opened, as happens with the built-in
1d5a17e3 246C<E<lt>E<gt>> and C<readline> functions. But, unlike the built-ins, these
986a805c
FC
247methods were not respecting the caller's use of the L<open> pragma and
248applying the approprate I/O layers to the newly-opened file
249[rt.cpan.org #66474].
250
251=item *
252
83307084
SL
253L<Math::BigFloat> has been upgraded from version 1.995 to version 1.997.
254
255=item *
256
257L<Math::BigInt> has been upgraded from version 1.996 to version 1.997.
258
259=item *
260
261L<Math::BigInt::FastCalc> has been upgraded from version 0.29 to 0.30.
262
263=item *
264
43c6b706 265L<Math::BigRat> has been upgraded from version 0.2602 to version 0.2603.
d93f0209
FC
266
267C<int()> on a Math::BigRat object containing -1/2 now creates a
268Math::BigInt containing 0, rather than -0. L<Math::BigInt> does not even
269support negative zero, so the resulting object was actually malformed
270[perl #95530].
271
60527824
FR
272=item *
273
d6cf2367
FC
274L<Module::CoreList> has been upgraded from version 2.55 to 2.56.
275
e46b3c7d
SL
276Updated module for 5.15.3, additionally it was missing a few entries:
277L<DB_File> in 5.8.2, L<Errno> in 5.6.0 and 5.6.1, and L<VMS::Filespec>
278in 5.12.3.
d6cf2367
FC
279
280=item *
281
d6ee8587 282L<Module::Metadata> has been upgraded from version 1.000005_01 to version 1.000007.
d39de893
CBW
283
284=item *
285
39afdc5a
CBW
286L<Module::Load::Conditional> has been upgraded from version 0.44 to version 0.46.
287
288=item *
289
666c7ca6
NC
290L<ODBM_File> has been upgraded from version 1.11 to version 1.12.
291
292This is only a minor refactoring of the XS code to bring it closer to the
293other C<?DBM_File> modules.
294
295=item *
296
d6cf2367
FC
297L<open> has been upgraded from version 1.08 to 1.09.
298
299It no longer turns of layers on standard handles when invoked without the
300":std" directive. Similarly, when invoked I<with> the ":std" directive, it
301now clears layers on STDERR before applying the new ones, and not just on
302STDIN and STDOUT [perl #92728].
303
304=item *
305
c56bc1f6 306L<perlfaq> has been upgraded from version 5.01500302 to version 5.0150034.
a9feb6cb
CBW
307
308=item *
309
8fe353ef
FC
310L<Pod::Perldoc> has been upgraded from version 3.15_06 to 3.15_07.
311
312When rendering a file specified as an HTTP URL, it now use a manpage name
313based on the URL, instead of the name of the temporary file.
314
315=item *
316
43c6b706 317L<Pod::Simple> has been upgraded from version 3.18 to version 3.19.
60527824 318
7ac26854
NC
319=item *
320
321L<POSIX> has been upgraded from version 1.24 to version 1.25.
322
323L<POSIX> no longer uses L<AutoLoader>. Any code which was relying on this
324implementation detail was buggy, and may fail as a result of this change.
325The module's Perl code has been considerably simplified, roughly halving
29d1ad9e
NC
326the number of lines, with no change in functionality. The XS code has
327been refactored to reduce the size of the shared object by about 12%,
328with no change in functionality. More POSIX functions now have tests.
7ac26854 329
518487b2
NC
330C<POSIX::Termios::setattr> now defaults the third argument to C<TCSANOW>,
331instead of 0. On most platforms C<TCSANOW> is defined as 0, but on some
3320 is not a valid parameter, which caused a call with defaults to fail.
333
daef35db
NC
334=item *
335
83307084
SL
336L<Search::Dict> has been upgraded from version 1.03 to 1.04.
337
338=item *
339
b420b12a
NC
340L<Storable> has been upgraded from version 2.31 to version 2.32.
341
342XS code which duplicates functionality of F<ppport.h> has been removed.
343Tests should now pass on older versions of L<Test::More>. Storable now
344builds and passes tests back to perl 5.004.
345
346=item *
347
83307084
SL
348L<Text::Abbrev> has been upgraded from version 1.01 to 1.02.
349
350=item *
351
352L<threads> has been upgraded from version 1.83 to 1.85.
353
354=item *
355
d6cf2367
FC
356L<threads::shared> has been upgraded from version 1.38 to 1.40.
357
358Destructors on shared objects used to be ignored sometimes if the objects
359were referenced only by shared data structures. This has been mostly
360fixed, but destructors may still be ignored if the objects still exist at
361global destruction time [perl #98204].
362
363=item *
364
83307084 365L<Unicode::UCD> has been upgraded from version 0.34 to version 0.35.
daef35db 366
83307084 367=item *
259925f6 368
83307084 369L<UNIVERSAL> has been upgraded from version 1.08 to version 1.09.
9840cdee
CBW
370
371=item *
372
83307084 373L<XSLoader> has been upgraded from version 0.15 to version 0.16.
54e02335 374
63ac71b9 375=back
310913d4 376
63ac71b9 377=head1 Documentation
310913d4 378
63ac71b9 379=head2 New Documentation
7b2b001e 380
b89e9b0d 381=head3 L<perlootut>
7b2b001e 382
b89e9b0d
DR
383This a new OO tutorial. It focuses on basic OO concepts, and then recommends
384that readers choose an OO framework from CPAN.
2df9265e 385
63ac71b9 386=head2 Changes to Existing Documentation
2df9265e 387
b89e9b0d 388=head3 L<perlobj>
dc80b0c6 389
63ac71b9 390=over 4
83b32788
CBW
391
392=item *
393
b89e9b0d
DR
394This document has been rewritten from scratch, and its coverage of various OO
395concepts has been expanded.
4eb81ef2 396
63ac71b9 397=back
4eb81ef2 398
d6cf2367
FC
399=head3 L<perlpragma>
400
401=over 4
402
403=item *
404
405There is now a standard convention for naming keys in the C<%^H>,
406documented under L<Key naming|perlpragma/Key naming>.
407
408=back
409
b89e9b0d
DR
410=head2 Removed Documentation
411
412=head3 Old OO Documentation
413
414All the old OO tutorials, perltoot, perltooc, and perlboot, have been
d6cf2367
FC
415removed. The perlbot (bag of object tricks) document has been removed as well.
416
417=head3 Development Deltas
418
419The old perldelta files for development cycles prior to 5.15 have been
420removed.
b89e9b0d 421
63ac71b9 422=head1 Utility Changes
0cb4637e 423
7d167fe7 424=head3 L<h2ph>
4abaf918 425
5438d4b8 426=over 4
4abaf918
Z
427
428=item *
429
7d167fe7
FC
430L<h2ph> used to generate code of the form
431
432 unless(defined(&FOO)) {
433 sub FOO () {42;}
434 }
435
436But the subroutine is a compile-time declaration, and is hence unaffected
437by the condition. It has now been corrected to emit a string C<eval>
438around the subroutine [perl #99368].
8b00e523 439
e8e35311
FC
440=back
441
63ac71b9 442=head1 Configuration and Compilation
b908e258 443
63ac71b9 444=over 4
71449ad0
DG
445
446=item *
447
5ecd28b8
NC
448The file F<global.sym> is no longer needed, and has been removed. It
449contained a list of all exported functions, one of the files generated by
450F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>. The code
451has been refactored so that the only user of F<global.sym>, F<makedef.pl>,
452now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to
453store the list of exported functions in an intermediate file.
454
455As F<global.sym> was never installed, this change will not be visible
456outside the build process.
b908e258 457
6693394d
FC
458=back
459
63ac71b9 460=head1 Testing
bbc28bfc 461
34dc2ec0 462=over 4
42a91c97 463
6693394d 464=item *
42a91c97 465
c752c500
FC
466F<t/porting/globvar.t> has been added, to run a sanity check on F<globar.sym>.
467F<globar.sym> is not needed on most *nix platforms, but is for Win32, hence
468previously was it was possible to inadvertently commit changes that worked
469perfectly locally, but broke the build on Win32.
310913d4 470
d2006265
FC
471=item *
472
473F<t/op/unlink.t> has been added to test the C<unlink> function.
474
83307084 475=item *
42a91c97 476
83307084 477Several tests were added in L<POSIX>.
975dff8c 478
83307084 479F<ext/POSIX/t/export.t> added to test C<@EXPORT> and C<@EXPORT_OK>.
887094cb 480F<ext/POSIX/t/sigset.t> added to see if C<POSIX::SigSet> works.
83307084
SL
481F<ext/POSIX/t/unimplemented.t> added to test the diagnostics for
482unimplemented functions. F<ext/POSIX/t/usage.t> added to test the
483diagnostics for usage messages. F<ext/POSIX/t/wrappers.t> added to
484test the L<POSIX> wrapper subroutines.
9cfd094e 485
83307084 486=item *
9cfd094e 487
83307084
SL
488F<ext/XS-APItest/t/gotosub.t> in L<XS::APItest> tests C<goto &xsub>
489and hints.
9cfd094e 490
83307084 491=item *
7c4c6e7c 492
83307084 493F<t/io/shm.t> was added to see if SysV shared memory works.
95f7e41f 494
83307084 495=item *
95f7e41f 496
83307084 497F<t/op/coreamp.t> was added to test C<&foo()> calls for CORE subs.
df5b44bd 498
63ac71b9 499=back
310913d4 500
83307084 501=head1 Platform Support
df5b44bd 502
63ac71b9
RS
503=head2 Platform-Specific Notes
504
5438d4b8 505=over 4
7818c927 506
83307084
SL
507=item VMS
508
509Remove unnecessary includes, fix miscellaneous compiler warnings and
510close some unclosed comments on F<vms/vms.c>.
7818c927 511
83307084 512Remove sockadapt layer from the VMS build.
f79aa60b 513
63ac71b9 514=back
7818c927 515
63ac71b9 516=head1 Internal Changes
3fdd840f 517
63ac71b9 518=over 4
7ffa7e75 519
862b2c43
FC
520=item *
521
c39e29ea
FC
522The C<is_gv_magical_sv> function has been eliminated and merged with
523C<gv_fetchpvn_flags>. It used to be called to determine whether a GV
524should be autovivified in rvalue context. Now it has been replaced with a
525new C<GV_ADDMG> flag (not part of the API).
526
527=item *
528
529Padlists are now marked C<AvREAL>; i.e., reference-counted. They have
530always been reference-counted, but were not marked real, because F<pad.c>
531did its own clean-up, instead of using the usual clean-up code in F<sv.c>.
532That caused problems in thread cloning, so now the C<AvREAL> flag is on,
533but is turned off in F<pad.c> right before the padlist is freed (after
534F<pad.c> has done its custom freeing of the pads).
862b2c43 535
d6cf2367
FC
536=item *
537
538All the C files that make up the Perl core have been converted to UTF-8.
539
63ac71b9 540=back
c973bd4f 541
63ac71b9 542=head1 Selected Bug Fixes
a6cefd81 543
63ac71b9 544=over 4
c4499eff 545
bbc28bfc
FC
546=item *
547
d2006265
FC
548In Perl 5.15.0 C<defined(${'$'})> stopped returning true if the C<$$>
549variable had not been used yet. This has been fixed.
550
551=item *
552
b4155db2
FC
553C<defined(${"..."})>, C<defined(*{"..."})>, etc., used to
554return true for most, but not all built-in variables, if
555they had not been used yet. Many times that new built-in
556variables were added in past versions, this construct was
23496c6e 557not taken into account, so this affected C<${^GLOBAL_PHASE}> and
b4155db2
FC
558C<${^UTF8CACHE}>, among others. It also used to return false if the
559package name was given as well (C<${"::!"}>) and for subroutines in the
560CORE package [perl #97978] [perl #97492] [perl #97484].
23496c6e
FC
561
562=item *
563
d2006265
FC
564Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo"
565represents the name of a built-in global variable used to return false if
566the variable had never been used before, but only on the I<first> call.
567This, too, has been fixed.
568
569=item *
570
571Various functions that take a filehandle argument in rvalue context
572(C<close>, C<readline>, etc.) used to call C<FETCH> multiple times, if it
573was a tied variable, and warn twice, if it was C<undef> [perl #97482].
574
575=item *
576
577C<close> and similar filehandle functions, when called on built-in global
578variables (like C<$+>), used to die if the variable happened to hold the
579undefined value, instead of producing the usual "Use of uninitialized
580value" warning.
581
582=item *
583
584When autovivified file handles were introduced in Perl 5.6.0, C<readline>
585was inadvertently made to autovivify when called as C<readline($foo)> (but
1d5a17e3 586not as C<E<lt>$fooE<gt>>). It has now been fixed never to autovivify.
d2006265
FC
587
588=item *
589
590C<defined ${ $tied_variable }> used to call C<FETCH> multiple times, but
591now calls it just once.
592
593=item *
594
595Some cases of dereferencing a complex expression, such as
596C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call
597it once.
598
599=item *
600
1d5a17e3 601For a tied variable returning a package name, C<$tied-E<gt>method> used to
d2006265
FC
602call C<FETCH> multiple times (even up to six!), and sometimes would
603fail to call the method, due to memory corruption.
604
605=item *
606
607Calling an undefined anonymous subroutine (e.g., what $x holds after
608C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which
609has been corrected to "Undefined subroutine called" [perl #71154].
bbc28bfc 610
e1a80902
FC
611=item *
612
613Causing C<@DB::args> to be freed between uses of C<caller> no longer
614results in a crash [perl #93320].
615
fdd313f4
FC
616=item *
617
618Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined
619values. It would die in strict mode or lvalue context for most undefined
620values, but would be treated as the empty string (with a warning) for the
621specific scalar return by C<undef()> (C<&PL_sv_undef> internally). This
622has been corrected. C<undef()> is now treated like other undefined
623scalars, as in Perl 5.005.
624
01433346
FC
625=item *
626
627It used to be possible to free the typeglob of a localised array or hash
628(e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit.
629
88d69532
FC
630=item *
631
632C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because
633C<setpgrp> was ignoring its argument if there was just one. Now it is
634equivalent to C<setpgrp($foo,0)>.
635
33d4ef81
FC
636=item *
637
8d4393cf
FC
638Assignments like C<*$tied = \&{"..."}> and C<*glob = $tied> now call FETCH
639only once.
33d4ef81 640
93564729
FC
641=item *
642
7d3f03b7
SL
643C<chdir>, C<chmod>, C<chown>, C<utime>, C<truncate>, C<stat>, C<lstat> and
644the filetest ops (C<-r>, C<-x>, etc.) now always call FETCH if passed a tied
93564729
FC
645variable as the last argument. They used to ignore tiedness if the last
646thing return from or assigned to the variable was a typeglob or reference
647to a typeglob.
648
c39e29ea
FC
649=item *
650
651Perl 5.15.1 inadvertently stopped C<*foo =~ s/\*//r> from working, as it
652would try to force the *foo glob into a string. This has been fixed
653[perl #97954].
654
655=item *
656
657If things were arranged in memory the right way, it was possible for
658thread joining to emit "Attempt to free unreferenced scalar" warnings if
659C<caller> had been used from the C<DB> package prior to thread creation,
660due to the way pads were reference-counted and cloned [perl #98092].
661
662=item *
663
664CORE:: subs were introduced in the previous development release, but
665C<defined &{"CORE::..."}> did not return true. That has been rectified
666[perl #97484].
667
668=item *
669
670Lvalue subroutines were made to autovivify in 5.15.0, but it did not work
671in some cases involving an intervening list operator between the
672dereference operator and the subroutine call (C<${(), lvsub()}>)
673[perl #98184].
674
d6cf2367
FC
675=item *
676
677A bug has been fixed that occurs when a tied variable is used as a
678subroutine reference: if the last thing assigned to or returned from the
679variable was a reference or typeglob, the C<\&$tied> could either crash or
680return the wrong subroutine. The reference case is a regression introduced
681in Perl 5.10.0. For typeglobs, it has probably never worked till now.
682
683=item *
684
685C<given> was not scoping its implicit $_ properly, resulting in memory
686leaks or "Variable is not available" warnings [perl #94682].
687
688=item *
689
690C<-l> followed by a bareword no longer "eats" the previous argument to
691the list operator in whose argument list it resides. In less convoluted
692English: C<print "bar", -l foo> now actually prints "bar", because C<-l>
693on longer eats it.
694
695=item *
696
697In 5.14.0, filetest ops (C<-r>, C<-x>, etc.) started calling FETCH on a
698tied argument belonging to the previous argument to a list operator, if
699called with a bareword argument or no argument at all. This has been
700fixed, so C<push @foo, $tied, -r> no longer calls FETCH on C<$tied>.
701
702=item *
703
704C<shmread> was not setting the scalar flags correctly when reading from
705shared memory, causing the existing cached numeric representation in the
706scalar to persist [perl #98480].
707
5d4ff231
FC
708=item *
709
710Weakening the first argument to an automatically-invoked C<DESTROY> method
711could result in erroneous "DESTROY created new reference" errors or
712crashes. Now it is an error to weaken a read-only reference.
713
a3342be3
FC
714=item *
715
716Under miniperl (used to configure modules when perl itself is built),
717C<glob> now clears %ENV before calling csh, since the latter croaks on some
718systems if it does not like the contents of the LS_COLORS enviroment
719variable [perl #98662].
720
60092ce4
FC
721=item *
722
723C<++> and C<--> now work on copies of globs, instead of dying.
724
309aab3a
FC
725=item *
726
727The subroutines in the CORE:: namespace that were introduced in the
728previous development release run with the lexical hints (strict, warnings)
729of the caller, just as though the built-in function had been called. But
730this was not the case for C<goto &CORE::sub>. The CORE sub would end up
731running with the lexical hints of the subroutine it replaced, instead of
732that subroutine's caller. This has been fixed.
733
1f26655e
FC
734=item *
735
736Stacked C<-l> (followed immediately by other filetest operators) did not
737work previously; now it does. It is only permitted when the rightmost
738filetest op has the special "_" handle for its argument and the most
739recent C<stat>/C<lstat> call was an C<lstat>.
740
433644ee
FC
741=item *
742
743In Perl 5.6, C<-l> followed by anything other than a bareword would treat
744its argument as a file name. That was changed in 5.8 for glob references
396d9be3
FC
745(C<\*foo>), but not for globs themselves (C<*foo>). C<-l> started
746returning C<undef> for glob references without setting the last
747stat buffer that the "_" handle uses, but only if warnings
748were turned on. With warnings off, it was the same as 5.6.
433644ee
FC
749In other words, it was simply buggy and inconsistent. Now the 5.6
750behaviour has been restored.
751
63ac71b9 752=back
bbc28bfc 753
7d3f03b7
SL
754=head1 Known Problems
755
756=over 4
757
758=item *
759
760We have a failing test in F<op/sigdispatch.t> on i386-netbsd 3.1
761
762=item *
763
93f0c9e6 764On Solaris, we have two kinds of failure.
7d3f03b7 765
93f0c9e6
SL
766If F<make> is Sun's F<make≥>, we get an error about a badly formed macro
767assignment in the F<Makefile>. That happens when F<./Configure> tries to
768make depends. F<Configure> then exits 0, but further F<make>-ing fails.
7d3f03b7 769
93f0c9e6
SL
770If F<make> is F<gmake>, F<Configure> completes, then we get errors related
771to F</usr/include/stdbool.h>
7d3f03b7
SL
772
773=back
774
44691e6f
AB
775=head1 Acknowledgements
776
d14a8abf
SL
777Perl 5.15.3 represents approximately 2 months of development since Perl 5.15.2
778and contains approximately 160,000 lines of changes across 700 files from 44
779authors.
780
781Perl continues to flourish into its third decade thanks to a vibrant community
782of users and developers. The following people are known to have contributed the
783improvements that became Perl 5.15.3:
784
785Abigail, Alexandr Ciornii, Aristotle Pagaltzis, Chas. Owens, Chip Salzenberg,
786Chris 'BinGOs' Williams, Craig A. Berry, Damian Conway, Dave Rolsky, David
787Mitchell, Dominic Hargreaves, Douglas Christopher Wilson, Eric Brine, Father
788Chrysostomos, Florian Ragwitz, Frederic Briere, George Greer, Gerard Goossen,
789H.Merijn Brand, Jerry D. Hedden, Jesse Vincent, Jim Cromie, Karl Williamson,
790Keith Thompson, Leo Lapworth, Leon Timmermans, Lukas Mai, Mark Jason Dominus,
791Matthew Horsfall, Moritz Lenz, Nicholas Clark, Peter John Acklam, Rafael
792Garcia-Suarez, Ricardo Signes, Robin Barker, Shlomi Fish, Steffen Müller,
793Stephen Bennett, Stevan Little, Steve Hay, Tony Cook, Vincent Pit, Walt
794Mankowski, Zefram.
795
796The list above is almost certainly incomplete as it is automatically generated
797from version control history. In particular, it does not include the names of
798the (very much appreciated) contributors who reported issues to the Perl bug
799tracker.
800
801Many of the changes included in this version originated in the CPAN modules
802included in Perl's core. We're grateful to the entire CPAN community for
803helping Perl to flourish.
804
805For a more complete list of all of Perl's historical contributors, please see
806the F<AUTHORS> file in the Perl source distribution.
29cf780c 807
44691e6f
AB
808=head1 Reporting Bugs
809
810If you find what you think is a bug, you might check the articles
34dc2ec0 811recently posted to the comp.lang.perl.misc newsgroup and the perl
44691e6f
AB
812bug database at http://rt.perl.org/perlbug/ . There may also be
813information at http://www.perl.org/ , the Perl Home Page.
814
815If you believe you have an unreported bug, please run the L<perlbug>
816program included with your release. Be sure to trim your bug down
817to a tiny but sufficient test case. Your bug report, along with the
818output of C<perl -V>, will be sent off to perlbug@perl.org to be
819analysed by the Perl porting team.
820
821If the bug you are reporting has security implications, which make it
822inappropriate to send to a publicly archived mailing list, then please send
34dc2ec0 823it to perl5-security-report@perl.org. This points to a closed subscription
b4707b2a
FC
824unarchived mailing list, which includes
825all the core committers, who will be able
44691e6f
AB
826to help assess the impact of issues, figure out a resolution, and help
827co-ordinate the release of patches to mitigate or fix the problem across all
34dc2ec0
DM
828platforms on which Perl is supported. Please only use this address for
829security issues in the Perl core, not for modules independently
44691e6f
AB
830distributed on CPAN.
831
832=head1 SEE ALSO
833
834The F<Changes> file for an explanation of how to view exhaustive details
835on what changed.
836
837The F<INSTALL> file for how to build Perl.
838
839The F<README> file for general stuff.
840
841The F<Artistic> and F<Copying> files for copyright information.
842
843=cut