This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove gete?[ug]id caching
[perl5.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =for comment
4 This has been completed up to 0aae26c14, except for:
5 803e389 rurban  CYG17 utf8 paths
6 d9298c1 rurban  mymalloc isn't thread safe
7
8 =head1 NAME
9
10 [ this is a template for a new perldelta file. Any text flagged as
11 XXX needs to be processed before release. ]
12
13 perldelta - what is new for perl v5.15.8
14
15 =head1 DESCRIPTION
16
17 This document describes differences between the 5.15.7 release and
18 the 5.15.8 release.
19
20 If you are upgrading from an earlier release such as 5.15.6, first read
21 L<perl5157delta>, which describes differences between 5.15.6 and
22 5.15.7.
23
24 =head1 Notice
25
26 XXX Any important notices here
27
28 =head1 Core Enhancements
29
30 XXX New core language features go here. Summarise user-visible core language
31 enhancements. Particularly prominent performance optimisations could go
32 here, but most should go in the L</Performance Enhancements> section.
33
34 [ List each enhancement as a =head2 entry ]
35
36 =head2 Improved ability to mix locales and Unicode, including UTF-8 locales
37
38 An optional parameter has been added to C<use locale>
39
40  use locale ':not_characters';
41
42 which tells Perl to use all but the C<LC_CTYPE> and C<LC_COLLATE>
43 portions of the current locale.  Instead, the character set is assumed
44 to be Unicode.  This allows locales and Unicode to be seamlessly mixed,
45 including the increasingly frequent UTF-8 locales.  When using this
46 hybrid form of locales, the C<:locale> layer to the L<open> pragma can
47 be used to interface with the file system, and there are CPAN modules
48 available for ARGV and environment variable conversions.
49
50 Full details are in L<perllocale>.
51
52 =head2 New function C<fc> and corresponding escape sequence C<\F> for Unicode foldcase
53
54 Unicode foldcase is an extension to lowercase that gives better results
55 when comparing two strings case-insensitively.  It has long been used
56 internally in regular expression C</i> matching.  Now it is available
57 explicitly through the new C<fc> function call (enabled by
58 S<C<"use feature 'fc'">>, or C<use v5.16>, or explicitly callable via
59 C<CORE::fc>) or through the new C<\F> sequence in double-quotish
60 strings.
61
62 Full details are in L<perlfunc/fc>.
63
64 =head2 C<_> in subroutine prototypes
65
66 The C<_> character in subroutine prototypes is now allowed before C<@> or
67 C<%>.
68
69 =head2 Supports (I<almost>) Unicode 6.1
70
71 Besides the addition of whole new scripts, and new characters in
72 existing scripts, this new version of Unicode, as always, makes some
73 changes to existing characters.  One change that may trip up some
74 applications is that the General Category of two characters in the
75 Latin-1 range, PILCROW SIGN and SECTION SIGN, has been changed from
76 Other_Symbol to Other_Punctuation.  The same change has been made for
77 a character in each of Tibetan, Ethiopic, and Aegean.
78 The code points U+3248..U+324F (CIRCLED NUMBER TEN ON BLACK SQUARE
79 through CIRCLED NUMBER EIGHTY ON BLACK SQUARE) have had their General
80 Category changed from Other_Symbol to Other_Numeric.  The Line Break
81 property has changes for Hebrew and Japanese; and as a consequence of
82 other changes in 6.1, the Perl regular expression construct C<\X> now
83 works differently for some characters in Thai and Lao.
84
85 New aliases (synonyms) have been defined for many property values;
86 these, along with the previously existing ones, are all cross indexed in
87 L<perluniprops>.
88
89 The return value of C<charnames::viacode()> is affected by other
90 changes:
91
92  Code point      Old Name             New Name
93    U+000A    LINE FEED (LF)        LINE FEED
94    U+000C    FORM FEED (FF)        FORM FEED
95    U+000D    CARRIAGE RETURN (CR)  CARRIAGE RETURN
96    U+0085    NEXT LINE (NEL)       NEXT LINE
97    U+008E    SINGLE-SHIFT 2        SINGLE-SHIFT-2
98    U+008F    SINGLE-SHIFT 3        SINGLE-SHIFT-3
99    U+0091    PRIVATE USE 1         PRIVATE USE-1
100    U+0092    PRIVATE USE 2         PRIVATE USE-2
101    U+2118    SCRIPT CAPITAL P      WEIERSTRASS ELLIPTIC FUNCTION
102
103 Perl will accept any of these names as input, but
104 C<charnames::viacode()> now returns the new name of each pair.  The
105 change for U+2118 is considered by Unicode to be a correction, that is
106 the original name was a mistake (but again, it will remain forever valid
107 to use it to refer to U+2118).  But most of these changes are the
108 fallout of the mistake Unicode 6.0 made in naming a character used in
109 Japanese cell phones to be "BELL", which conflicts with the long
110 standing industry use of (and Unicode's recommendation to use) that name
111 to mean the ASCII control character at U+0007.  As a result, that name
112 has been deprecated in Perl since v5.14; and any use of it will raise a
113 warning message (unless turned off).  The name "ALERT" is now the
114 preferred name for this code point, with "BEL" being an acceptable short
115 form.  The name for the new cell phone character, at code point U+1F514,
116 remains undefined in this version of Perl (hence we don't quite
117 implement all of Unicode 6.1), but starting in v5.18, BELL will mean
118 this character, and not U+0007.
119
120 Unicode has taken steps to make sure that this sort of mistake does not
121 happen again.  The Standard now includes all the generally accepted
122 names and abbreviations for control characters, whereas previously it
123 didn't (though there were recommended names for most of them, which Perl
124 used).  This means that most of those recommended names are now
125 officially in the Standard.  Unicode did not recommend names for the
126 four code points listed above between U+008E and U+008F, and in
127 standardizing them Unicode subtly changed the names that Perl had
128 previously given them, by replacing the final blank in each name by a
129 hyphen.  Unicode also officially accepts names that Perl had deprecated,
130 such as FILE SEPARATOR.  Now the only deprecated name is BELL.
131 Finally, Perl now uses the new official names instead of the old
132 (now considered obsolete) names for the first four code points in the
133 list above (the ones which have the parentheses in them).
134
135 Now that the names have been placed in the Unicode standard, these kinds
136 of changes should not happen again, though corrections, such as to
137 U+2118, are still possible.
138
139 Unicode also added some name abbreviations, which Perl now accepts:
140 SP for SPACE;
141 TAB for CHARACTER TABULATION;
142 NEW LINE, END OF LINE, NL, and EOL for LINE FEED;
143 LOCKING-SHIFT ONE for SHIFT OUT;
144 LOCKING-SHIFT ZERO for SHIFT IN;
145 and ZWNBSP for ZERO WIDTH NO-BREAK SPACE.
146
147 More details on this version of Unicode are provided in
148 L<http://www.unicode.org/versions/Unicode6.1.0/>.
149
150 =head2 Added C<is_utf8_char_buf()>
151
152 This function is designed to replace the deprecated L</is_utf8_char()>
153 function.  It includes an extra parameter to make sure it doesn't read
154 past the end of the input buffer.
155
156 =head1 Security
157
158 XXX Any security-related notices go here.  In particular, any security
159 vulnerabilities closed should be noted here rather than in the
160 L</Selected Bug Fixes> section.
161
162 [ List each security issue as a =head2 entry ]
163
164 =head2 Use C<is_utf8_char_buf()> and not C<is_utf8_char()>
165
166 The latter function is now deprecated because its API is insufficient to
167 guarantee that it doesn't read (up to 12 bytes in the worst case) beyond
168 the end of its input string.  See
169 L<is_utf8_char_buf()|/Added is_utf8_char_buf()>.
170
171 =head1 Incompatible Changes
172
173 XXX For a release on a stable branch, this section aspires to be:
174
175     There are no changes intentionally incompatible with 5.XXX.XXX
176     If any exist, they are bugs, and we request that you submit a
177     report.  See L</Reporting Bugs> below.
178
179 [ List each incompatible change as a =head2 entry ]
180
181 =head2 Special blocks called in void context
182
183 Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now
184 called in void context.  This avoids wasteful copying of the result of the
185 last statement [perl #108794].
186
187 =head2 The C<overloading> pragma and regexp objects
188
189 With C<no overloading>, regular expression objects returned by C<qr//> are
190 now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
191 expression itself [perl #108780].
192
193 =head2 Two XS typemap Entries removed
194
195 Two presumably unused XS typemap entries have been removed from the
196 core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds,
197 a user of these, please see the instructions on how to regain them
198 in L<perlxstypemap>.
199
200 =head2 Unicode 6.1 has incompatibilities with Unicode 6.0
201
202 These are detailed in L</Supports (almost) Unicode 6.1> above.
203
204 =head2 Changed returns for some properties in C<Unicode::UCD::prop_invmap()>
205
206 The return values for C<prop_invmap> have been changed for some
207 properties to make the returned lists significantly smaller.  This
208 allows those lists to be searched faster.
209
210 This function was introduced earlier in the v5.15 series of releases,
211 and the API will not be considered stable until v5.16.
212
213 See L<Unicode::UCD/prop_invmap()> for details on the new interface.
214
215 =head2 C<$$> and C<getppid()> no longer emulate POSIX semantics under LinuxThreads
216
217 The POSIX emulation of C<$$> and C<getppid()> under the obsolete
218 LinuxThreads implementation has been removed (the C<$$> emulation was
219 actually removed in v5.15.0). This only impacts users of Linux 2.4 and
220 users of Debian GNU/kFreeBSD up to and including 6.0, not the vast
221 majority of Linux installations that use NPTL threads.
222
223 This means that C<getppid()> like C<$$> is now always guaranteed to
224 return the OS's idea of the current state of the process, not perl's
225 cached version of it.
226
227 See the documentation for L<$$|perlvar/$$> for details.
228
229 =head2 C<< $< >>, C<< $> >>, C<$(> and C<$)> are no longer cached
230
231 Similarly to the changes to C<$$> and C<getppid()> the internal
232 caching of C<< $< >>, C<< $> >>, C<$(> and C<$)> has been removed.
233
234 When we cached these values our idea of what they were would drift out
235 of sync with reality if someone (e.g. someone embedding perl) called
236 sete?[ug]id() without updating C<PL_e?[ug]id>. Having to deal with
237 this complexity wasn't worth it given how cheap the C<gete?[ug]id()>
238 system call is.
239
240 This change will break a handful of CPAN modules that use the XS-level
241 C<PL_uid>, C<PL_gid>, C<PL_euid> or C<PL_egid> variables.
242
243 The fix for those breakages is to use C<PerlProc_gete?[ug]id()> to
244 retrieve them (e.g. C<PerlProc_getuid()>), and not to assign to
245 C<PL_e?[ug]id> if you change the UID/GID/EUID/EGID. There is no longer
246 any need to do so since perl will always retrieve the up-to-date
247 version of those values from the OS.
248
249 =head2 Which Non-ASCII characters get quoted by C<quotemeta> and C<\Q> has changed
250
251 This is unlikely to result in a real problem, as Perl does not attach
252 special meaning to any non-ASCII character, so it is currently
253 irrelevant which are quoted or not.  This change fixes bug [perl #77654] and
254 bring Perl's behavior more into line with Unicode's recommendations.
255 See L<perlfunc/quotemeta>.
256
257 =head1 Deprecations
258
259 XXX Any deprecated features, syntax, modules etc. should be listed here.
260 In particular, deprecated modules should be listed here even if they are
261 listed as an updated module in the L</Modules and Pragmata> section.
262
263 [ List each deprecation as a =head2 entry ]
264
265 =head2 C<is_utf8_char()>
266
267 This function is deprecated because it could read beyond the end of the
268 input string.  Use the new L<is_utf8_char_buf()|/Added is_utf8_char_buf()>
269 instead.
270
271 =head1 Performance Enhancements
272
273 XXX Changes which enhance performance without changing behaviour go here. There
274 may well be none in a stable release.
275
276 [ List each enhancement as a =item entry ]
277
278 =over 4
279
280 =item *
281
282 XXX
283
284 =back
285
286 =head1 Modules and Pragmata
287
288 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
289 go here.  If Module::CoreList is updated, generate an initial draft of the
290 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
291 entries to STDOUT.  Results can be pasted in place of the '=head2' entries
292 below.  A paragraph summary for important changes should then be added by hand.
293 In an ideal world, dual-life modules would have a F<Changes> file that could be
294 cribbed.
295
296 [ Within each section, list entries as a =item entry ]
297
298 =head2 New Modules and Pragmata
299
300 =over 4
301
302 =item *
303
304 The C<mmap> PerlIO layer is no longer implemented by perl itself, but has
305 been moved out into the new L<PerlIO::mmap> module.
306
307 =back
308
309 =head2 Updated Modules and Pragmata
310
311 =over 4
312
313 =item *
314
315 L<arybase> has been upgraded from version 0.03 to version 0.04.
316
317 List slices no longer modify items on the stack belonging to outer lists
318 [perl #109570].
319
320 =item *
321
322 L<B> has been upgraded from version 1.33 to version 1.34.
323
324 C<B::COP> now has a C<stashflags> method, corresponding to a new internal
325 field added in 5.15.4 [perl #108860].
326
327 =item *
328
329 L<Carp> has been upgraded from version 1.24 to version 1.25.
330
331 It now puts a dot after the file and line number, just like errors from
332 C<die> [perl #106538].
333
334 =item *
335
336 L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.049.
337
338 =item *
339
340 L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.049.
341
342 Include zlib 1.2.6 source
343
344 =item *
345
346 L<Compress::Zlib> has been upgraded from version 2.046 to version 2.049.
347
348 =item *
349
350 L<CPAN::Meta> has been upgraded from version 2.113640 to version 2.120351.
351
352 Work around a memory leak bug involving version objects in boolean context.
353
354 =item *
355
356 L<CPAN::Meta::YAML> has been upgraded from version 0.005 to version 0.007.
357
358 =item *
359
360 L<CPANPLUS> has been upgraded from version 0.9116 to version 0.9118.
361
362 =item *
363
364 L<CPANPLUS::Dist::Build> has been upgraded from version 0.60 to version 0.62.
365
366 =item *
367
368 L<DB_File> has been upgraded from version 1.824 to version 1.826.
369
370 =item *
371
372 L<diagnostics> has been upgraded from version 1.27 to version 1.28.
373
374 When searching for F<perldiag.pod>, it no longer uses paths that were only
375 relevant on Perl 5.004 and earlier.
376
377 =item *
378
379 L<ExtUtils::ParseXS> has been upgraded from version 3.12 to version 3.15.
380
381 The new version comes with important tools for sharing typemaps between
382 different CPAN distributions.
383
384 =item *
385
386 L<File::Copy> has been upgraded from version 2.21 to version 2.23.
387
388 It no longer emits warnings when copying files with newlines in their names
389 [perl #109104].
390
391 =item *
392
393 L<IPC::Cmd> has been upgraded from version 0.72 to version 0.76.
394
395 =item *
396
397 L<Math::Complex> has been upgraded from version 1.58 to version 1.59.
398
399 This avoids a new core warning.
400
401 =item *
402
403 L<Module::Metadata> has been upgraded from version 1.000007 to version 1.000009.
404
405 Adds C<provides> method to generate a CPAN META provides data structure
406 correctly; use of C<package_versions_from_directory> is discouraged.
407
408 =item *
409
410 L<Parse::CPAN::Meta> has been upgraded from version 1.4401 to version 1.4402.
411
412 =item *
413
414 L<perlfaq> has been upgraded from version 5.0150038 to version 5.0150039.
415
416 =item *
417
418 L<Pod::Functions> has been upgraded from version 1.04 to version 1.05.
419
420 F<Functions.pm> is now generated at perl build time from annotations in
421 F<perlfunc.pod>. This will ensure that L<Pod::Functions> and L<perlfunc>
422 remain in synchronisation.
423
424 =item *
425
426 L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
427
428 =item *
429
430 L<Term::ReadLine> has been upgraded from version 1.07 to version 1.08.
431
432 Its C<tkRunning> method now supports L<AnyEvent> event loops, and not just
433 L<Tk>.  A more general mechanism has been proposed, so this may be reverted
434 before Perl 5.16 [perl #108470].
435
436 =item *
437
438 L<Socket> has been upgraded from version 1.97 to version 1.98.
439
440 =item *
441
442 L<Time::HiRes>  has been upgraded from version 1.9724 to version 1.9725.
443
444 C<Time::HiRes::stat()> no longer corrupts the Perl stack.
445
446 =item *
447
448 L<Unicode::UCD> has been upgraded from version 0.39 to 0.40.
449
450 The only change is to fix a formatting error in the Pod.
451
452 =item *
453
454 L<Version::Requirements> has been upgraded from version 0.101021 to version 0.101022.
455
456 =back
457
458 =head2 Removed Modules and Pragmata
459
460 =over 4
461
462 =item *
463
464 XXX
465
466 =back
467
468 =head1 Documentation
469
470 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
471 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
472
473 =head2 New Documentation
474
475 XXX Changes which create B<new> files in F<pod/> go here.
476
477 =head3 L<perlxstypemap>
478
479 The new manual describes the XS typemapping mechanism in unprecedented
480 detail and combines new documentation with information extracted from
481 L<perlxs> and the previously unofficial list of all core typemaps.
482
483 =head3 L<XXX>
484
485 XXX Description of the purpose of the new file here
486
487 =head2 Changes to Existing Documentation
488
489 XXX Changes which significantly change existing files in F<pod/> go here.
490 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
491 section.
492
493 =head3 L<XXX>
494
495 =over 4
496
497 =item *
498
499 XXX Description of the change here
500
501 =back
502
503 =head1 Diagnostics
504
505 The following additions or changes have been made to diagnostic output,
506 including warnings and fatal error messages.  For the complete list of
507 diagnostic messages, see L<perldiag>.
508
509 XXX New or changed warnings emitted by the core's C<C> code go here. Also
510 include any changes in L<perldiag> that reconcile it to the C<C> code.
511
512 [ Within each section, list entries as a =item entry that links to perldiag,
513   e.g.
514
515   =item *
516
517   L<Invalid version object|perldiag/"Invalid version object">
518 ]
519
520 =head2 New Diagnostics
521
522 XXX Newly added diagnostic messages go here
523
524 =head3 New Errors
525
526 =over 4
527
528 =item *
529
530 XXX L<message|perldiag/"message">
531
532 =back
533
534 =head3 New Warnings
535
536 =over 4
537
538 =item *
539
540 XXX L<message|perldiag/"message">
541
542 =back
543
544 =head2 Changes to Existing Diagnostics
545
546 XXX Changes (i.e. rewording) of diagnostic messages go here
547
548 =over 4
549
550 =item *
551
552 XXX Describe change here
553
554 =back
555
556 =head1 Utility Changes
557
558 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
559 here. Most of these are built within the directories F<utils> and F<x2p>.
560
561 [ List utility changes as a =head3 entry for each utility and =item
562 entries for each change
563 Use L<XXX> with program names to get proper documentation linking. ]
564
565 =head3 L<XXX>
566
567 =over 4
568
569 =item *
570
571 XXX
572
573 =back
574
575 =head1 Configuration and Compilation
576
577 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
578 go here.  Any other changes to the Perl build process should be listed here.
579 However, any platform-specific changes should be listed in the
580 L</Platform Support> section, instead.
581
582 [ List changes as a =item entry ].
583
584 =over 4
585
586 =item *
587
588 XXX
589
590 =back
591
592 =head1 Testing
593
594 XXX Any significant changes to the testing of a freshly built perl should be
595 listed here.  Changes which create B<new> files in F<t/> go here as do any
596 large changes to the testing harness (e.g. when parallel testing was added).
597 Changes to existing files in F<t/> aren't worth summarising, although the bugs
598 that they represent may be covered elsewhere.
599
600 [ List each test improvement as a =item entry ]
601
602 =over 4
603
604 =item *
605
606 F<t/porting/pending-author.t> has been added, to avoid the problem of
607 C<make test> passing 100%, but the subsequent git commit causing
608 F<t/porting/authors.t> to fail, because it uses a "new" e-mail address.
609
610 This test is only run if one is building inside a git checkout, B<and> one
611 has made local changes. Otherwise it's skipped.
612
613 =item *
614
615 F<t/porting/perlfunc.t> has been added, to test that changes to
616 F<pod/perlfunc.pod> do not inadvertently break the build of L<Pod::Functions>.
617
618 =item *
619
620 The test suite for typemaps has been extended to cover a larger fraction of
621 the core typemaps.
622
623 =back
624
625 =head1 Platform Support
626
627 XXX Any changes to platform support should be listed in the sections below.
628
629 [ Within the sections, list each platform as a =item entry with specific
630 changes as paragraphs below it. ]
631
632 =head2 New Platforms
633
634 XXX List any platforms that this version of perl compiles on, that previous
635 versions did not. These will either be enabled by new files in the F<hints/>
636 directories, or new subdirectories and F<README> files at the top level of the
637 source tree.
638
639 =over 4
640
641 =item XXX-some-platform
642
643 XXX
644
645 =back
646
647 =head2 Discontinued Platforms
648
649 XXX List any platforms that this version of perl no longer compiles on.
650
651 =over 4
652
653 =item XXX-some-platform
654
655 XXX
656
657 =back
658
659 =head2 Platform-Specific Notes
660
661 XXX List any changes for specific platforms. This could include configuration
662 and compilation changes or changes in portability/compatibility.  However,
663 changes within modules for platforms should generally be listed in the
664 L</Modules and Pragmata> section.
665
666 =over 4
667
668 =item XXX-some-platform
669
670 XXX
671
672 =back
673
674 =head1 Internal Changes
675
676 XXX Changes which affect the interface available to C<XS> code go here.
677 Other significant internal changes for future core maintainers should
678 be noted as well.
679
680 [ List each change as a =item entry ]
681
682 =over 4
683
684 =item *
685
686 XXX
687
688 =back
689
690 =head1 Selected Bug Fixes
691
692 XXX Important bug fixes in the core language are summarised here.
693 Bug fixes in files in F<ext/> and F<lib/> are best summarised in
694 L</Modules and Pragmata>.
695
696 [ List each fix as a =item entry ]
697
698 =over 4
699
700 =item *
701
702 C<~~> now correctly handles the precedence of Any~~Object, and is not tricked
703 by an overloaded object on the left-hand side.
704
705 =item *
706
707 C<stat _> no longer warns about unopened filehandles [perl #71002].
708
709 =item *
710
711 C<stat> on an unopened filehandle now warns consistently, instead of
712 skipping the warning at times.
713
714 =item *
715
716 A change in an earlier 5.15 release caused warning hints to propagate into
717 C<do $file>.  This has been fixed [rt.cpan.org #72767].
718
719 =item *
720
721 Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up
722 after assigning C<${ qr// }> to a hash element and locking it with
723 L<Hash::Util>.  This could result in double frees, crashes or erratic
724 behaviour.
725
726 =item *
727
728 In 5.15.7, some typeglobs in the CORE namespace were made read-only by
729 mistake.  This has been fixed [rt.cpan.org #74289].
730
731 =item *
732
733 C<-t> now works when stacked with other filetest operators [perl #77388].
734
735 =item *
736
737 Stacked filetest operators now only call FETCH once on a tied argument.
738
739 =item *
740
741 C</.*/g> would sometimes refuse to match at the end of a string that ends
742 with "\n".  This has been fixed [perl #109206].
743
744 =item *
745
746 C<m/[[:ascii:]]/i> and C</\p{ASCII}/i> now match identically (when not
747 under a differing locale).  This fixes a regression introduced in 5.14
748 in which the first expression could match characters outside of ASCII,
749 such as the KELVIN SIGN.
750
751 =item *
752
753 Method calls whose arguments were all surrounded with C<my()> or C<our()>
754 (as in C<<$object->method(my($a,$b)) >>) used to force lvalue context on
755 the subroutine.  This would prevent lvalue methods from returning certain
756 values.  Due to lvalue fixes earlier in the 5.15.x series, it would also
757 prevent non-lvalue methods from being called [perl #109264].
758
759 =for comment
760 This bug I<did> affect earlier stable releases.  It is just the last
761 sentence that does not apply to 5.14.
762
763 =item *
764
765 The C<SvPVutf8> C function no longer tries to modify its argument,
766 resulting in errors [perl #108994].
767
768 =item *
769
770 C<SvPVutf8> now works properly with magical variables.
771
772 =item *
773
774 C<SvPVbyte> now works properly non-PVs.
775
776 =item *
777
778 C</[[:ascii:]]/> and C</[[:blank:]]/> now use locale rules under
779 C<use locale> when the platform supports that.  Previously, they used
780 the platform's native character set.
781
782 =item *
783
784 A regression introduced in 5.13.6 was fixed.  This involved an inverted
785 bracketed character class in a regular expression that consisted solely
786 of a Unicode property, that property wasn't getting inverted outside the
787 Latin1 range.
788
789 =item *
790
791 C<quotemeta> now quotes consistently the same non-ASCII characters under
792 C<use feature 'unicode_strings'>, regardless of whether the string is
793 encoded in UTF-8 or not, hence fixing the last vestiges (we hope) of the
794 infamous L<perlunicode/The "Unicode Bug">.  [perl #77654].
795
796 Which of these code points is quoted has changed, based on Unicode's
797 recommendations.  See L<perlfunc/quotemeta> for details.
798
799 =back
800
801 =head1 Known Problems
802
803 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
804 tests that had to be C<TODO>ed for the release would be noted here, unless
805 they were specific to a particular platform (see below).
806
807 This is a list of some significant unfixed bugs, which are regressions
808 from either 5.XXX.XXX or 5.XXX.XXX.
809
810 [ List each fix as a =item entry ]
811
812 =over 4
813
814 =item *
815
816 XXX
817
818 =back
819
820 =head1 Obituary
821
822 XXX If any significant core contributor has died, we've added a short obituary
823 here.
824
825 =head1 Acknowledgements
826
827 XXX Generate this with:
828
829   perl Porting/acknowledgements.pl v5.15.7..HEAD
830
831 =head1 Reporting Bugs
832
833 If you find what you think is a bug, you might check the articles
834 recently posted to the comp.lang.perl.misc newsgroup and the perl
835 bug database at http://rt.perl.org/perlbug/ .  There may also be
836 information at http://www.perl.org/ , the Perl Home Page.
837
838 If you believe you have an unreported bug, please run the L<perlbug>
839 program included with your release.  Be sure to trim your bug down
840 to a tiny but sufficient test case.  Your bug report, along with the
841 output of C<perl -V>, will be sent off to perlbug@perl.org to be
842 analysed by the Perl porting team.
843
844 If the bug you are reporting has security implications, which make it
845 inappropriate to send to a publicly archived mailing list, then please send
846 it to perl5-security-report@perl.org. This points to a closed subscription
847 unarchived mailing list, which includes
848 all the core committers, who will be able
849 to help assess the impact of issues, figure out a resolution, and help
850 co-ordinate the release of patches to mitigate or fix the problem across all
851 platforms on which Perl is supported. Please only use this address for
852 security issues in the Perl core, not for modules independently
853 distributed on CPAN.
854
855 =head1 SEE ALSO
856
857 The F<Changes> file for an explanation of how to view exhaustive details
858 on what changed.
859
860 The F<INSTALL> file for how to build Perl.
861
862 The F<README> file for general stuff.
863
864 The F<Artistic> and F<Copying> files for copyright information.
865
866 =cut