This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Get perldelta into mostly finished state
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 perldelta - what is new for perl v5.15.4
6
7 =head1 DESCRIPTION
8
9 This document describes differences between the 5.15.3 release and
10 the 5.15.4 release.
11
12 If you are upgrading from an earlier release such as 5.15.3, first read
13 L<perl5153delta>, which describes differences between 5.15.3 and
14 5.15.4.
15
16 =head1 Core Enhancements
17
18 =head2 $^X converted to an absolute path on FreeBSD, OS X and Solaris
19
20 C<$^X> is now converted to an absolute path on OS X, FreeBSD (without
21 needing F</proc> mounted) and Solaris 10 and 11. This augments the
22 previous approach of using F</proc> on Linux, FreeBSD and NetBSD
23 (in all cases, where mounted).
24
25 This makes relocatable perl installations more useful on these platforms.
26 (See "Relocatable @INC" in F<INSTALL>)
27
28 =head2 Unicode Symbol Names
29
30 Perl now has proper support for Unicode in symbol names.  It used to be
31 that C<*{$foo}> would ignore the internal UTF8 flag and use the bytes of
32 the underlying representation to look up the symbol.  That meant that
33 C<*{"\x{100}"}> and C<*{"\xc4\x80"}> would return the same thing.  All
34 these parts of Perl have been fixed to account for Unicode:
35
36 =over
37
38 =item *
39
40 Method names (including those passed to C<use overload>)
41
42 =item *
43
44 Typeglob names (including names of variables, subroutines and filehandles)
45
46 =item *
47
48 Package names
49
50 =item *
51
52 Constant subroutine names (not null-clean yet)
53
54 =item *
55
56 C<goto>
57
58 =item *
59
60 Symbolic dereferencing
61
62 =item *
63
64 Second argument to C<bless()> and C<tie()>
65
66 =item *
67
68 Return value of C<ref()>
69
70 =item *
71
72 Package names returned by C<caller()>
73
74 =item *
75
76 Subroutine prototypes
77
78 =item *
79
80 Attributes
81
82 =item *
83
84 Various warnings and error messages that mention variable names or values,
85 methods, etc.
86
87 =back
88
89 In addition, a parsing bug has been fixed that prevented C<*{é}> from
90 implicitly quoting the name, but instead interpreted it as C<*{+é}>, which
91 would cause a strict violation.
92
93 C<*{"*a::b"}> automatically strips off the * if it is followed by an ASCII
94 letter.  That has been extended to all Unicode identifier characters.
95
96 C<$é> is now subject to "Used only once" warnings.  It used to be exempt,
97 as it was treated as a punctuation variable.
98
99 Also, single-character Unicode punctuation variables (like $‰) are now
100 supported [perl #69032].  They are also supported with C<our> and C<my>,
101 but that is a mistake that will be fixed before 5.16.
102
103 =head2 Support for Embedded Nulls
104
105 Some parts of Perl did not work correctly with nulls (C<chr 0>) embedded in
106 strings.  That meant that, for instance, C<< $m = "a\0b"; foo->$m >> would
107 call the "a" method, instead of the actual method name contained in $m.
108 These parts of perl have been fixed to support nulls:
109
110 =over
111
112 =item *
113
114 Method names
115
116 =item *
117
118 Typeglob names (including filehandle names)
119
120 =item *
121
122 Package names
123
124 =item *
125
126 Autoloading
127
128 =item *
129
130 Return value of C<ref()>
131
132 =item *
133
134 Package names returned by C<caller()>
135
136 =item *
137
138 Filehandle warnings
139
140 =item *
141
142 Typeglob elements (C<*foo{"THING\0stuff"}>)
143
144 =item *
145
146 Signal names
147
148 =item *
149
150 Various warnings and error messages that mention variable names or values,
151 methods, etc.
152
153 =back
154
155 One side effect of these changes is that blessing into "\0" no longer
156 causes C<ref()> to return false.
157
158 =head2 Autoloaded sort Subroutines
159
160 Custom sort subroutines can now be autoloaded [perl #30661]:
161
162     sub AUTOLOAD { ... }
163     @sorted = sort foo @list; # uses AUTOLOAD
164
165 =head2 Improved typemaps for Some Builtin Types
166
167 Most XS authors will be aware that there is a longstanding bug
168 in the OUTPUT typemap for T_AVREF (C<AV*>), T_HVREF (C<HV*>),
169 T_CVREF (C<CV*>), and T_SVREF (C<SVREF> or C<\$foo>) that requires
170 manually decrementing the reference count of the return value
171 instead of the typemap taking care of this. For
172 backwards-compatibility, this cannot be changed in the default
173 typemaps. But we now provide additional typemaps
174 C<T_AVREF_REFCOUNT_FIXED>, etc. that do not exhibit this bug.
175 Using them in your extension is as simple as having one line
176 in your C<TYPEMAP> section:
177
178   HV*   T_HVREF_REFCOUNT_FIXED
179
180 =head1 Performance Enhancements
181
182 =over 4
183
184 =item *
185
186 C<substr> no longer calculates a value to return when called in void
187 context.
188
189 =back
190
191 =head1 Modules and Pragmata
192
193 =head2 Updated Modules and Pragmata
194
195 =over 4
196
197 =item *
198
199 L<Archive::Tar> has been upgraded from version 1.78 to version 1.80.
200
201 =item *
202
203 L<base> has been upgraded from version 2.17 to version 2.18.
204
205 C<base> no longer sets a module's C<$VERSION> to "-1" when a module it loads
206 does not define a C<$VERSION>.  This change has been made because "-1" is not
207 a valid version number under the new "lax" criteria used internally by
208 C<UNIVERSAL::VERSION>.  (See L<version> for more on "lax" version criteria.)
209
210 C<base> no longer internally skips loading modules it has already loaded and
211 instead relies on C<require> to inspect C<%INC>.  This fixes a bug when C<base>
212 is used with code that clear C<%INC> to force a module to be reloaded.
213
214 =item *
215
216 L<Digest> has been upgraded from version 1.16 to version 1.17.
217
218 =item *
219
220 L<DynaLoader> has been upgraded from version 1.13 to 1.14.
221
222 It stopped exporting its symbols with the ExtUtils::ParseXS changes in
223 5.15.2.  Now it exports them once more.
224
225 =item *
226
227 L<ExtUtils::MakeMaker> has been upgraded from version 6.59 to version 6.61_01.
228
229 =item *
230
231 L<ExtUtils::ParseXS> has been upgraded from version 3.04_04 to version 3.05.
232
233 =item *
234
235 L<Module::Load> has been upgraded from version 0.20 to version 0.22.
236
237 Resolve possible security problem [http://goo.gl/YzHRU] where a '::' prefixed
238 module can 'jump' out of @INC
239
240 =item *
241
242 L<perlfaq> has been upgraded from version 5.0150034 to version 5.0150035.
243
244 =item *
245
246 L<Unicode::Collate> has been upgraded from version 0.78 to version 0.80.
247
248 Locales updated to CLDR 2.0: ar, be, bg, ha, hr, kk, lt.
249 Newly supported locales: as, fi__phonebook, gu, hi, kn, kok and ln.
250
251 =back
252
253 =head1 Documentation
254
255 =head2 Changes to Existing Documentation
256
257 =head3 L<perlfunc>, L<open>
258
259 =over 4
260
261 =item *
262
263 As an accident of history, C<open $fh, "<:", ...> applies the default
264 layers for the platform (C<:raw> on Unix, C<:crlf> on Windows), ignoring
265 whatever is declared by L<open.pm|open>.  This seems such a useful feature
266 it has been documented in L<perlfunc|perlfunc/open> and L<open>.
267
268 =back
269
270 =head3 L<perlapi>
271
272 =over 4
273
274 =item *
275
276 The HV API has long accepted negative lengths to indicate that the key is
277 in UTF8.  Now this is documented.
278
279 =item *
280
281 The C<boolSV()> macro is now documented.
282
283 =back
284
285 =head3 L<perlguts>
286
287 =over 4
288
289 =item *
290
291 A new section, L<Autoloading with XSUBs|perlguts/Autoloading with XSUBs>,
292 has been added, which explains the two APIs for accessing the name of the
293 autoloaded sub.
294
295 =back
296
297 =head1 Diagnostics
298
299 The following additions or changes have been made to diagnostic output,
300 including warnings and fatal error messages.  For the complete list of
301 diagnostic messages, see L<perldiag>.
302
303 =head2 Changes to Existing Diagnostics
304
305 =over 4
306
307 =item *
308
309 The message,
310 "Code point 0x%X is not Unicode, no properties match it; all inverse
311 prop erties do" has been changed to "Code point 0x%X is not Unicode, all
312 \p{} matches fail; all \P{} matches succeed"
313
314 =back
315
316 =head1 Testing
317
318 =over 4
319
320 =item *
321
322 F<t/porting/checkcfgvar.t> now tests that all config.sh-style files are
323 complete. These are used by the various non-*nix to generate their
324 F<config.h>, and an incomplete input file will generate invalid output.
325
326 =back
327
328 =head1 Internal Changes
329
330 =over 4
331
332 =item *
333
334 These new functions have been added as part of the work on Unicode symbols:
335
336     HvNAMELEN
337     HvNAMEUTF8
338     HvENAMELEN
339     HvENAMEUTF8
340     gv_init_pv
341     gv_init_pvn
342     gv_init_pvsv
343     gv_fetchmeth_pv
344     gv_fetchmeth_pvn
345     gv_fetchmeth_sv
346     gv_fetchmeth_pv_autoload
347     gv_fetchmeth_pvn_autoload
348     gv_fetchmeth_sv_autoload
349     gv_fetchmethod_pv_flags
350     gv_fetchmethod_pvn_flags
351     gv_fetchmethod_sv_flags
352     gv_autoload_pv
353     gv_autoload_pvn
354     gv_autoload_sv
355     newGVgen_flags
356     sv_derived_from_pv
357     sv_derived_from_pvn
358     sv_derived_from_sv
359     sv_does_pv
360     sv_does_pvn
361     sv_does_sv
362     whichsig_pv
363     whichsig_pvn
364     whichsig_sv
365
366 The gv_fetchmethod_*_flags functions, like gv_fetchmethod_flags, are
367 experimental and may change in a future release.
368
369 =item *
370
371 The following functions were added.  These are I<not> part of the API:
372
373     GvNAMEUTF8
374     GvENAMELEN
375     GvENAME_HEK
376     CopSTASH_flags
377     CopSTASH_flags_set
378     PmopSTASH_flags
379     PmopSTASH_flags_set
380     sv_sethek
381     HEKfARG
382
383 There is also a C<HEKf> macro corresponding to C<SVf>, for
384 interpolating HEKs in formatted strings.
385
386 =item *
387
388 C<sv_catpvn_flags> takes a couple of new internal-only flags,
389 C<SV_CATBYTES> and C<SV_CATUTF8>, which tell it whether the char array to
390 be concatenated is UTF8.  This allows for more efficient concatenation than
391 creating temporary SVs to pass to C<sv_catsv>.
392
393 =item *
394
395 For XS AUTOLOAD subs, $AUTOLOAD is set once more, as it was in 5.6.0.  This
396 is in addition to setting C<SvPVX(cv)>, for compatibility with 5.8 to 5.14.
397 See L<perlguts/Autoloading with XSUBs>.
398
399 =item *
400
401 Perl now checks whether the array (the linearised isa) returned by a MRO
402 plugin begins with the name of the class itself, for which the array was
403 created, instead of assuming that it does.  This prevents the first element
404 from being skipped during method lookup.  It also means that
405 C<mro::get_linear_isa> may return an array with one more element than the
406 MRO plugin provided [perl #94306].
407
408 =back
409
410 =head1 Selected Bug Fixes
411
412 =over 4
413
414 =item *
415
416 In Perl 5.14.0, C<$tainted ~~ @array> stopped working properly.  Sometimes
417 it would erroneously fail (when C<$tainted> contained a string that occurs
418 in the array I<after> the first element) or erroneously succeed (when
419 C<undef> occurred after the first element) [perl #93590].
420
421 =item *
422
423 Perl 5.15.0 introduced a minor regression, in that an object referenced by
424 a deleted hash element would be able to access the freed element from its
425 DESTROY method, causing panic errors [perl #99660].
426
427 =item *
428
429 Functions in the CORE package can now be called as methods.  That used to
430 work only when they had been called or referenced already.  So
431 C<< "foo"->CORE::ucfirst >> returns Foo.
432
433 =item *
434
435 C<use> and C<require> are no longer affected by the I/O layers active in
436 the caller's scope (enabled by L<open.pm|open>) [perl #96008].
437
438 =item *
439
440 Errors that occur when methods cannot be found during overloading now
441 mention the correct package name, as they did in 5.8.x, instead of
442 erroneously mentioning the "overload" package, as they have since 5.10.0.
443
444 =item *
445
446 Undefining C<%overload::> no longer causes a crash.
447
448 =item *
449
450 C<our $::é; $é> (which is invalid) no longer produces the "Compilation
451 error at lib/utf8_heavy.pl..." error message, which it started emitting in
452 5.10.0 [perl #99984].
453
454 =item *
455
456 A minor regression, introduced Perl 5.15.0, has been fixed in which some
457 regular expression Unicode property matches (C<\p{...}>) matched
458 non-Unicode code points.
459
460 =item *
461
462 In case-insensitive regular expression pattern matching, no longer on
463 UTF-8 encoded strings does the scan for the start of match only look at
464 the first possible position.  This caused matches such as
465 C<"f\x{FB00}" =~ /ff/i> to fail.
466
467 =item *
468
469 On 64-bit systems, C<read()> now understands large string offsets beyond
470 the 32-bit range.
471
472 =item *
473
474 Errors that occur when processing subroutine attributes no longer cause the
475 subroutine's op tree to leak.
476
477 =item *
478
479 C<sort> now works once more with custom sort routines that are XSUBs.  It
480 stopped working in 5.10.0.
481
482 =item *
483
484 C<sort> with a constant for a custom sort routine, although it produces
485 unsorted results, no longer crashes.  It started crashing in 5.10.0.
486
487 =item *
488
489 Warnings produced when a custom sort routine returns a non-numeric value
490 now contain "in sort"; e.g., "Use of uninitialized value in sort".
491
492 =item *
493
494 C<< sort { $a <=> $b } >>, which is optimised internally, now produces
495 "uninitialized" warnings for NaNs (not-a-number values), since C<< <=> >>
496 returns C<undef> for those.  This brings it in line with
497 S<C<< sort { 1; $a <=> $b } >>> and other more complex cases, which are not
498 optimised [perl #94390].
499
500 =item *
501
502 C<..> and C<...> in list context now call FETCH only once on tied
503 arguments, instead of three or four times [perl #53554].
504
505 =item *
506
507 C<..> and C<...> in list context now mention the name of the variable in
508 "uninitialized" warnings for string (as opposed to numeric) ranges.
509
510 =back
511
512 =head1 Acknowledgements
513
514 XXX Generate this with:
515
516   perl Porting/acknowledgements.pl v5.15.3..HEAD
517
518 =head1 Reporting Bugs
519
520 If you find what you think is a bug, you might check the articles
521 recently posted to the comp.lang.perl.misc newsgroup and the perl
522 bug database at http://rt.perl.org/perlbug/ .  There may also be
523 information at http://www.perl.org/ , the Perl Home Page.
524
525 If you believe you have an unreported bug, please run the L<perlbug>
526 program included with your release.  Be sure to trim your bug down
527 to a tiny but sufficient test case.  Your bug report, along with the
528 output of C<perl -V>, will be sent off to perlbug@perl.org to be
529 analysed by the Perl porting team.
530
531 If the bug you are reporting has security implications, which make it
532 inappropriate to send to a publicly archived mailing list, then please send
533 it to perl5-security-report@perl.org. This points to a closed subscription
534 unarchived mailing list, which includes
535 all the core committers, who will be able
536 to help assess the impact of issues, figure out a resolution, and help
537 co-ordinate the release of patches to mitigate or fix the problem across all
538 platforms on which Perl is supported. Please only use this address for
539 security issues in the Perl core, not for modules independently
540 distributed on CPAN.
541
542 =head1 SEE ALSO
543
544 The F<Changes> file for an explanation of how to view exhaustive details
545 on what changed.
546
547 The F<INSTALL> file for how to build Perl.
548
549 The F<README> file for general stuff.
550
551 The F<Artistic> and F<Copying> files for copyright information.
552
553 =cut