Commit | Line | Data |
---|---|---|
44691e6f AB |
1 | =encoding utf8 |
2 | ||
249950d7 | 3 | =for comment |
c0f37554 | 4 | This has been completed up to 0aae26c14, except for: |
ff4ff6f3 | 5 | d9298c1 rurban mymalloc isn't thread safe |
249950d7 | 6 | |
44691e6f AB |
7 | =head1 NAME |
8 | ||
c1e74734 | 9 | perldelta - what is new for perl v5.15.8 |
88c5c971 | 10 | |
c1e74734 | 11 | =head1 DESCRIPTION |
8f12b018 | 12 | |
c1e74734 CBW |
13 | This document describes differences between the 5.15.7 release and |
14 | the 5.15.8 release. | |
8f12b018 | 15 | |
c1e74734 CBW |
16 | If you are upgrading from an earlier release such as 5.15.6, first read |
17 | L<perl5157delta>, which describes differences between 5.15.6 and | |
18 | 5.15.7. | |
26afcec5 | 19 | |
c1e74734 | 20 | =head1 Notice |
8f12b018 | 21 | |
811ac709 | 22 | This space intentionally left blank. |
d7fbd56d | 23 | |
c1e74734 | 24 | =head1 Core Enhancements |
d7fbd56d | 25 | |
66cbab2c KW |
26 | =head2 Improved ability to mix locales and Unicode, including UTF-8 locales |
27 | ||
28 | An optional parameter has been added to C<use locale> | |
29 | ||
30 | use locale ':not_characters'; | |
31 | ||
32 | which tells Perl to use all but the C<LC_CTYPE> and C<LC_COLLATE> | |
33 | portions of the current locale. Instead, the character set is assumed | |
34 | to be Unicode. This allows locales and Unicode to be seamlessly mixed, | |
35 | including the increasingly frequent UTF-8 locales. When using this | |
36 | hybrid form of locales, the C<:locale> layer to the L<open> pragma can | |
37 | be used to interface with the file system, and there are CPAN modules | |
38 | available for ARGV and environment variable conversions. | |
39 | ||
40 | Full details are in L<perllocale>. | |
41 | ||
628253b8 BF |
42 | =head2 New function C<fc> and corresponding escape sequence C<\F> for Unicode foldcase |
43 | ||
44 | Unicode foldcase is an extension to lowercase that gives better results | |
45 | when comparing two strings case-insensitively. It has long been used | |
46 | internally in regular expression C</i> matching. Now it is available | |
47 | explicitly through the new C<fc> function call (enabled by | |
48 | S<C<"use feature 'fc'">>, or C<use v5.16>, or explicitly callable via | |
249950d7 | 49 | C<CORE::fc>) or through the new C<\F> sequence in double-quotish |
628253b8 BF |
50 | strings. |
51 | ||
52 | Full details are in L<perlfunc/fc>. | |
53 | ||
10c62b23 FC |
54 | =head2 C<_> in subroutine prototypes |
55 | ||
56 | The C<_> character in subroutine prototypes is now allowed before C<@> or | |
57 | C<%>. | |
58 | ||
74968535 | 59 | =head2 Supports (I<almost>) Unicode 6.1 |
7620cb10 KW |
60 | |
61 | Besides the addition of whole new scripts, and new characters in | |
62 | existing scripts, this new version of Unicode, as always, makes some | |
63 | changes to existing characters. One change that may trip up some | |
64 | applications is that the General Category of two characters in the | |
65 | Latin-1 range, PILCROW SIGN and SECTION SIGN, has been changed from | |
66 | Other_Symbol to Other_Punctuation. The same change has been made for | |
67 | a character in each of Tibetan, Ethiopic, and Aegean. | |
68 | The code points U+3248..U+324F (CIRCLED NUMBER TEN ON BLACK SQUARE | |
69 | through CIRCLED NUMBER EIGHTY ON BLACK SQUARE) have had their General | |
70 | Category changed from Other_Symbol to Other_Numeric. The Line Break | |
71 | property has changes for Hebrew and Japanese; and as a consequence of | |
72 | other changes in 6.1, the Perl regular expression construct C<\X> now | |
73 | works differently for some characters in Thai and Lao. | |
74 | ||
75 | New aliases (synonyms) have been defined for many property values; | |
76 | these, along with the previously existing ones, are all cross indexed in | |
77 | L<perluniprops>. | |
78 | ||
898b2fa7 KW |
79 | The return value of C<charnames::viacode()> is affected by other |
80 | changes: | |
81 | ||
82 | Code point Old Name New Name | |
83 | U+000A LINE FEED (LF) LINE FEED | |
84 | U+000C FORM FEED (FF) FORM FEED | |
85 | U+000D CARRIAGE RETURN (CR) CARRIAGE RETURN | |
86 | U+0085 NEXT LINE (NEL) NEXT LINE | |
87 | U+008E SINGLE-SHIFT 2 SINGLE-SHIFT-2 | |
88 | U+008F SINGLE-SHIFT 3 SINGLE-SHIFT-3 | |
89 | U+0091 PRIVATE USE 1 PRIVATE USE-1 | |
90 | U+0092 PRIVATE USE 2 PRIVATE USE-2 | |
91 | U+2118 SCRIPT CAPITAL P WEIERSTRASS ELLIPTIC FUNCTION | |
92 | ||
93 | Perl will accept any of these names as input, but | |
94 | C<charnames::viacode()> now returns the new name of each pair. The | |
95 | change for U+2118 is considered by Unicode to be a correction, that is | |
96 | the original name was a mistake (but again, it will remain forever valid | |
97 | to use it to refer to U+2118). But most of these changes are the | |
7620cb10 KW |
98 | fallout of the mistake Unicode 6.0 made in naming a character used in |
99 | Japanese cell phones to be "BELL", which conflicts with the long | |
100 | standing industry use of (and Unicode's recommendation to use) that name | |
101 | to mean the ASCII control character at U+0007. As a result, that name | |
102 | has been deprecated in Perl since v5.14; and any use of it will raise a | |
103 | warning message (unless turned off). The name "ALERT" is now the | |
104 | preferred name for this code point, with "BEL" being an acceptable short | |
105 | form. The name for the new cell phone character, at code point U+1F514, | |
106 | remains undefined in this version of Perl (hence we don't quite | |
107 | implement all of Unicode 6.1), but starting in v5.18, BELL will mean | |
108 | this character, and not U+0007. | |
109 | ||
110 | Unicode has taken steps to make sure that this sort of mistake does not | |
111 | happen again. The Standard now includes all the generally accepted | |
112 | names and abbreviations for control characters, whereas previously it | |
898b2fa7 KW |
113 | didn't (though there were recommended names for most of them, which Perl |
114 | used). This means that most of those recommended names are now | |
115 | officially in the Standard. Unicode did not recommend names for the | |
116 | four code points listed above between U+008E and U+008F, and in | |
117 | standardizing them Unicode subtly changed the names that Perl had | |
118 | previously given them, by replacing the final blank in each name by a | |
119 | hyphen. Unicode also officially accepts names that Perl had deprecated, | |
120 | such as FILE SEPARATOR. Now the only deprecated name is BELL. | |
121 | Finally, Perl now uses the new official names instead of the old | |
aafe1054 KW |
122 | (now considered obsolete) names for the first four code points in the |
123 | list above (the ones which have the parentheses in them). | |
898b2fa7 KW |
124 | |
125 | Now that the names have been placed in the Unicode standard, these kinds | |
126 | of changes should not happen again, though corrections, such as to | |
127 | U+2118, are still possible. | |
128 | ||
129 | Unicode also added some name abbreviations, which Perl now accepts: | |
7620cb10 KW |
130 | SP for SPACE; |
131 | TAB for CHARACTER TABULATION; | |
132 | NEW LINE, END OF LINE, NL, and EOL for LINE FEED; | |
133 | LOCKING-SHIFT ONE for SHIFT OUT; | |
134 | LOCKING-SHIFT ZERO for SHIFT IN; | |
135 | and ZWNBSP for ZERO WIDTH NO-BREAK SPACE. | |
136 | ||
137 | More details on this version of Unicode are provided in | |
138 | L<http://www.unicode.org/versions/Unicode6.1.0/>. | |
139 | ||
27f00e3d KW |
140 | =head2 Added C<is_utf8_char_buf()> |
141 | ||
142 | This function is designed to replace the deprecated L</is_utf8_char()> | |
143 | function. It includes an extra parameter to make sure it doesn't read | |
144 | past the end of the input buffer. | |
145 | ||
c1e74734 | 146 | =head1 Security |
711a3903 | 147 | |
27f00e3d KW |
148 | =head2 Use C<is_utf8_char_buf()> and not C<is_utf8_char()> |
149 | ||
150 | The latter function is now deprecated because its API is insufficient to | |
151 | guarantee that it doesn't read (up to 12 bytes in the worst case) beyond | |
152 | the end of its input string. See | |
153 | L<is_utf8_char_buf()|/Added is_utf8_char_buf()>. | |
154 | ||
c1e74734 | 155 | =head1 Incompatible Changes |
6ba817f3 | 156 | |
c1e74734 | 157 | [ List each incompatible change as a =head2 entry ] |
b240fc0f | 158 | |
249950d7 FC |
159 | =head2 Special blocks called in void context |
160 | ||
161 | Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now | |
162 | called in void context. This avoids wasteful copying of the result of the | |
163 | last statement [perl #108794]. | |
164 | ||
eff8c8ec FC |
165 | =head2 The C<overloading> pragma and regexp objects |
166 | ||
167 | With C<no overloading>, regular expression objects returned by C<qr//> are | |
168 | now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular | |
169 | expression itself [perl #108780]. | |
170 | ||
84ecb73f S |
171 | =head2 Two XS typemap Entries removed |
172 | ||
173 | Two presumably unused XS typemap entries have been removed from the | |
174 | core typemap: T_DATAUNIT and T_CALLBACK. If you are, against all odds, | |
175 | a user of these, please see the instructions on how to regain them | |
176 | in L<perlxstypemap>. | |
177 | ||
7620cb10 KW |
178 | =head2 Unicode 6.1 has incompatibilities with Unicode 6.0 |
179 | ||
180 | These are detailed in L</Supports (almost) Unicode 6.1> above. | |
181 | ||
290a3bf6 KW |
182 | =head2 Changed returns for some properties in C<Unicode::UCD::prop_invmap()> |
183 | ||
184 | The return values for C<prop_invmap> have been changed for some | |
185 | properties to make the returned lists significantly smaller. This | |
186 | allows those lists to be searched faster. | |
187 | ||
188 | This function was introduced earlier in the v5.15 series of releases, | |
189 | and the API will not be considered stable until v5.16. | |
190 | ||
191 | See L<Unicode::UCD/prop_invmap()> for details on the new interface. | |
192 | ||
d7c042c9 AB |
193 | =head2 C<$$> and C<getppid()> no longer emulate POSIX semantics under LinuxThreads |
194 | ||
195 | The POSIX emulation of C<$$> and C<getppid()> under the obsolete | |
196 | LinuxThreads implementation has been removed (the C<$$> emulation was | |
197 | actually removed in v5.15.0). This only impacts users of Linux 2.4 and | |
198 | users of Debian GNU/kFreeBSD up to and including 6.0, not the vast | |
199 | majority of Linux installations that use NPTL threads. | |
200 | ||
201 | This means that C<getppid()> like C<$$> is now always guaranteed to | |
202 | return the OS's idea of the current state of the process, not perl's | |
203 | cached version of it. | |
204 | ||
205 | See the documentation for L<$$|perlvar/$$> for details. | |
206 | ||
985213f2 AB |
207 | =head2 C<< $< >>, C<< $> >>, C<$(> and C<$)> are no longer cached |
208 | ||
209 | Similarly to the changes to C<$$> and C<getppid()> the internal | |
210 | caching of C<< $< >>, C<< $> >>, C<$(> and C<$)> has been removed. | |
211 | ||
212 | When we cached these values our idea of what they were would drift out | |
213 | of sync with reality if someone (e.g. someone embedding perl) called | |
214 | sete?[ug]id() without updating C<PL_e?[ug]id>. Having to deal with | |
215 | this complexity wasn't worth it given how cheap the C<gete?[ug]id()> | |
216 | system call is. | |
217 | ||
218 | This change will break a handful of CPAN modules that use the XS-level | |
219 | C<PL_uid>, C<PL_gid>, C<PL_euid> or C<PL_egid> variables. | |
220 | ||
221 | The fix for those breakages is to use C<PerlProc_gete?[ug]id()> to | |
222 | retrieve them (e.g. C<PerlProc_getuid()>), and not to assign to | |
223 | C<PL_e?[ug]id> if you change the UID/GID/EUID/EGID. There is no longer | |
224 | any need to do so since perl will always retrieve the up-to-date | |
225 | version of those values from the OS. | |
226 | ||
2e2b2571 KW |
227 | =head2 Which Non-ASCII characters get quoted by C<quotemeta> and C<\Q> has changed |
228 | ||
229 | This is unlikely to result in a real problem, as Perl does not attach | |
230 | special meaning to any non-ASCII character, so it is currently | |
231 | irrelevant which are quoted or not. This change fixes bug [perl #77654] and | |
232 | bring Perl's behavior more into line with Unicode's recommendations. | |
233 | See L<perlfunc/quotemeta>. | |
234 | ||
c1e74734 | 235 | =head1 Deprecations |
b240fc0f | 236 | |
27f00e3d KW |
237 | =head2 C<is_utf8_char()> |
238 | ||
239 | This function is deprecated because it could read beyond the end of the | |
240 | input string. Use the new L<is_utf8_char_buf()|/Added is_utf8_char_buf()> | |
241 | instead. | |
242 | ||
c1e74734 | 243 | =head1 Modules and Pragmata |
cadced9f | 244 | |
c1e74734 | 245 | =head2 New Modules and Pragmata |
cadced9f | 246 | |
c1e74734 | 247 | =over 4 |
632c5d30 NC |
248 | |
249 | =item * | |
250 | ||
2f987927 FC |
251 | The C<mmap> PerlIO layer is no longer implemented by perl itself, but has |
252 | been moved out into the new L<PerlIO::mmap> module. | |
4e6e9b23 | 253 | |
c1e74734 | 254 | =back |
4e6e9b23 | 255 | |
c1e74734 | 256 | =head2 Updated Modules and Pragmata |
4e6e9b23 | 257 | |
c1e74734 | 258 | =over 4 |
1887da8c RS |
259 | |
260 | =item * | |
261 | ||
eeac62ad FC |
262 | L<arybase> has been upgraded from version 0.03 to version 0.04. |
263 | ||
264 | List slices no longer modify items on the stack belonging to outer lists | |
265 | [perl #109570]. | |
266 | ||
267 | =item * | |
268 | ||
197aacaf FC |
269 | L<B> has been upgraded from version 1.33 to version 1.34. |
270 | ||
271 | C<B::COP> now has a C<stashflags> method, corresponding to a new internal | |
272 | field added in 5.15.4 [perl #108860]. | |
273 | ||
274 | =item * | |
275 | ||
c0f37554 FC |
276 | L<Carp> has been upgraded from version 1.24 to version 1.25. |
277 | ||
278 | It now puts a dot after the file and line number, just like errors from | |
279 | C<die> [perl #106538]. | |
280 | ||
281 | =item * | |
282 | ||
fed9e2bd | 283 | L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048. |
76f546a2 CBW |
284 | |
285 | =item * | |
286 | ||
fed9e2bd | 287 | L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.048. |
589c1691 CBW |
288 | |
289 | =item * | |
290 | ||
fed9e2bd | 291 | L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048. |
422d6414 CBW |
292 | |
293 | =item * | |
294 | ||
2d1dec40 CBW |
295 | L<CPAN::Meta> has been upgraded from version 2.113640 to version 2.120351. |
296 | ||
297 | Work around a memory leak bug involving version objects in boolean context. | |
298 | ||
299 | =item * | |
300 | ||
ce09a8a1 | 301 | L<CPAN::Meta::YAML> has been upgraded from version 0.005 to version 0.007. |
b3100a1d CBW |
302 | |
303 | =item * | |
304 | ||
2364a08e CBW |
305 | L<CPANPLUS> has been upgraded from version 0.9116 to version 0.9118. |
306 | ||
307 | =item * | |
308 | ||
89ddfa67 CBW |
309 | L<CPANPLUS::Dist::Build> has been upgraded from version 0.60 to version 0.62. |
310 | ||
311 | =item * | |
312 | ||
53095d08 NC |
313 | L<Data::Dumper> has been upgraded from version 2.135_04 to version 2.135_05. |
314 | ||
315 | =item * | |
316 | ||
b34385a6 | 317 | L<DB_File> has been upgraded from version 1.824 to version 1.826. |
acb29889 CBW |
318 | |
319 | =item * | |
320 | ||
ce2c4022 NC |
321 | L<diagnostics> has been upgraded from version 1.27 to version 1.28. |
322 | ||
323 | When searching for F<perldiag.pod>, it no longer uses paths that were only | |
324 | relevant on Perl 5.004 and earlier. | |
325 | ||
326 | =item * | |
327 | ||
84ecb73f S |
328 | L<ExtUtils::ParseXS> has been upgraded from version 3.12 to version 3.15. |
329 | ||
330 | The new version comes with important tools for sharing typemaps between | |
331 | different CPAN distributions. | |
332 | ||
333 | =item * | |
334 | ||
a3cc0403 FC |
335 | L<File::Copy> has been upgraded from version 2.21 to version 2.23. |
336 | ||
337 | It no longer emits warnings when copying files with newlines in their names | |
338 | [perl #109104]. | |
339 | ||
340 | =item * | |
341 | ||
eb96f3fa CBW |
342 | L<IPC::Cmd> has been upgraded from version 0.72 to version 0.76. |
343 | ||
344 | =item * | |
345 | ||
04ae1553 Z |
346 | L<Math::Complex> has been upgraded from version 1.58 to version 1.59. |
347 | ||
348 | This avoids a new core warning. | |
349 | ||
350 | =item * | |
351 | ||
f50587e0 MM |
352 | L<Module::CoreList> has been upgraded from version 2.60 to version 2.61. |
353 | ||
354 | =item * | |
355 | ||
4402c0f3 | 356 | L<Module::Metadata> has been upgraded from version 1.000007 to version 1.000009. |
75ff5956 CBW |
357 | |
358 | Adds C<provides> method to generate a CPAN META provides data structure | |
359 | correctly; use of C<package_versions_from_directory> is discouraged. | |
360 | ||
361 | =item * | |
362 | ||
a4a5e2bf CBW |
363 | L<Parse::CPAN::Meta> has been upgraded from version 1.4401 to version 1.4402. |
364 | ||
365 | =item * | |
366 | ||
843331c7 CBW |
367 | L<perlfaq> has been upgraded from version 5.0150038 to version 5.0150039. |
368 | ||
369 | =item * | |
370 | ||
812efae1 NC |
371 | L<Pod::Functions> has been upgraded from version 1.04 to version 1.05. |
372 | ||
373 | F<Functions.pm> is now generated at perl build time from annotations in | |
374 | F<perlfunc.pod>. This will ensure that L<Pod::Functions> and L<perlfunc> | |
375 | remain in synchronisation. | |
376 | ||
377 | =item * | |
378 | ||
1051d5b5 | 379 | L<Pod::Parser> has been upgraded from version 1.37 to version 1.51. |
88c5c971 | 380 | |
2a7afa74 NC |
381 | =item * |
382 | ||
ecd144ea FC |
383 | L<Term::ReadLine> has been upgraded from version 1.07 to version 1.08. |
384 | ||
32e63b32 | 385 | Term::ReadLine now supports any event loop, including unpublished ones and |
811ac709 MM |
386 | simple L<IO::Select> loops without the need to rewrite existing code for |
387 | any particular framework [perl #108470]. | |
ecd144ea FC |
388 | |
389 | =item * | |
390 | ||
9dea6244 CBW |
391 | L<Socket> has been upgraded from version 1.97 to version 1.98. |
392 | ||
393 | =item * | |
394 | ||
858dcda5 Z |
395 | L<Time::HiRes> has been upgraded from version 1.9724 to version 1.9725. |
396 | ||
694644e0 | 397 | C<Time::HiRes::stat()> no longer corrupts the Perl stack. |
858dcda5 Z |
398 | |
399 | =item * | |
400 | ||
2a7afa74 NC |
401 | L<Unicode::UCD> has been upgraded from version 0.39 to 0.40. |
402 | ||
403 | The only change is to fix a formatting error in the Pod. | |
404 | ||
e9e4ee62 CBW |
405 | =item * |
406 | ||
407 | L<Version::Requirements> has been upgraded from version 0.101021 to version 0.101022. | |
408 | ||
c1e74734 | 409 | =back |
c0504019 | 410 | |
c1e74734 | 411 | =head2 Removed Modules and Pragmata |
937a45d0 | 412 | |
c1e74734 | 413 | =over 4 |
937a45d0 | 414 | |
ef337e16 CBW |
415 | =item * |
416 | ||
cf6f994f | 417 | XXX |
ef337e16 | 418 | |
7f28d7ed | 419 | =back |
679b54e7 | 420 | |
52deee2e | 421 | =head1 Documentation |
3c7c5233 | 422 | |
c1e74734 | 423 | =head2 New Documentation |
cadced9f | 424 | |
84ecb73f S |
425 | =head3 L<perlxstypemap> |
426 | ||
427 | The new manual describes the XS typemapping mechanism in unprecedented | |
428 | detail and combines new documentation with information extracted from | |
429 | L<perlxs> and the previously unofficial list of all core typemaps. | |
430 | ||
c1e74734 | 431 | =head1 Testing |
39de7394 | 432 | |
c1e74734 | 433 | =over 4 |
5dd80d85 | 434 | |
52272450 FC |
435 | =item * |
436 | ||
f0bcc49a NC |
437 | F<t/porting/pending-author.t> has been added, to avoid the problem of |
438 | C<make test> passing 100%, but the subsequent git commit causing | |
439 | F<t/porting/authors.t> to fail, because it uses a "new" e-mail address. | |
440 | ||
441 | This test is only run if one is building inside a git checkout, B<and> one | |
442 | has made local changes. Otherwise it's skipped. | |
443 | ||
444 | =item * | |
445 | ||
cf6f994f NC |
446 | F<t/porting/perlfunc.t> has been added, to test that changes to |
447 | F<pod/perlfunc.pod> do not inadvertently break the build of L<Pod::Functions>. | |
52272450 | 448 | |
84ecb73f S |
449 | =item * |
450 | ||
451 | The test suite for typemaps has been extended to cover a larger fraction of | |
452 | the core typemaps. | |
453 | ||
52deee2e | 454 | =back |
5dd80d85 | 455 | |
c1e74734 | 456 | =head1 Platform Support |
52272450 | 457 | |
c1e74734 | 458 | =head2 Platform-Specific Notes |
ea88c40c | 459 | |
c1e74734 | 460 | =over 4 |
ea88c40c | 461 | |
811ac709 | 462 | =item Cygwin |
ea88c40c | 463 | |
811ac709 MM |
464 | Since version 1.7, Cygwin supports native UTF-8 paths. If Perl is built |
465 | under that environment, directory and filenames will be UTF-8 encoded. | |
466 | ||
467 | Cygwin does not initialize all original Win32 environment variables. See | |
468 | F<README.cygwin> for a discussion of C<Cygwin::sync_winenv()> and | |
469 | further links. | |
470 | ||
471 | =item VMS | |
472 | ||
473 | The build on VMS now allows names of the resulting | |
474 | symbols in C code for Perl longer than 31 characters. | |
475 | Symbols like C<Perl__it_was_the_best_of_times_it_was_the_worst_of_times> | |
476 | can now be created freely without causing the VMS linker to seize up. | |
ea88c40c | 477 | |
c1e74734 | 478 | =back |
ea88c40c | 479 | |
c1e74734 | 480 | =head1 Selected Bug Fixes |
ea88c40c | 481 | |
c1e74734 | 482 | =over 4 |
ea88c40c FC |
483 | |
484 | =item * | |
485 | ||
6025c6dd RS |
486 | C<~~> now correctly handles the precedence of Any~~Object, and is not tricked |
487 | by an overloaded object on the left-hand side. | |
ea88c40c | 488 | |
249950d7 FC |
489 | =item * |
490 | ||
491 | C<stat _> no longer warns about unopened filehandles [perl #71002]. | |
492 | ||
493 | =item * | |
494 | ||
495 | C<stat> on an unopened filehandle now warns consistently, instead of | |
496 | skipping the warning at times. | |
497 | ||
498 | =item * | |
499 | ||
500 | A change in an earlier 5.15 release caused warning hints to propagate into | |
501 | C<do $file>. This has been fixed [rt.cpan.org #72767]. | |
502 | ||
503 | =item * | |
504 | ||
505 | Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up | |
506 | after assigning C<${ qr// }> to a hash element and locking it with | |
507 | L<Hash::Util>. This could result in double frees, crashes or erratic | |
508 | behaviour. | |
509 | ||
92c88ef1 FC |
510 | =item * |
511 | ||
512 | In 5.15.7, some typeglobs in the CORE namespace were made read-only by | |
513 | mistake. This has been fixed [rt.cpan.org #74289]. | |
514 | ||
b1ea7742 FC |
515 | =item * |
516 | ||
517 | C<-t> now works when stacked with other filetest operators [perl #77388]. | |
518 | ||
a1d95121 FC |
519 | =item * |
520 | ||
521 | Stacked filetest operators now only call FETCH once on a tied argument. | |
522 | ||
ff4ff6f3 FC |
523 | =item * |
524 | ||
525 | C</.*/g> would sometimes refuse to match at the end of a string that ends | |
526 | with "\n". This has been fixed [perl #109206]. | |
527 | ||
a7bff800 FC |
528 | =item * |
529 | ||
ea317ccb KW |
530 | C<m/[[:ascii:]]/i> and C</\p{ASCII}/i> now match identically (when not |
531 | under a differing locale). This fixes a regression introduced in 5.14 | |
532 | in which the first expression could match characters outside of ASCII, | |
533 | such as the KELVIN SIGN. | |
534 | ||
535 | =item * | |
536 | ||
a7bff800 | 537 | Method calls whose arguments were all surrounded with C<my()> or C<our()> |
32e63b32 | 538 | (as in C<< $object->method(my($a,$b)) >>) used to force lvalue context on |
a7bff800 FC |
539 | the subroutine. This would prevent lvalue methods from returning certain |
540 | values. Due to lvalue fixes earlier in the 5.15.x series, it would also | |
541 | prevent non-lvalue methods from being called [perl #109264]. | |
542 | ||
543 | =for comment | |
544 | This bug I<did> affect earlier stable releases. It is just the last | |
545 | sentence that does not apply to 5.14. | |
546 | ||
0aae26c1 FC |
547 | =item * |
548 | ||
549 | The C<SvPVutf8> C function no longer tries to modify its argument, | |
550 | resulting in errors [perl #108994]. | |
551 | ||
552 | =item * | |
553 | ||
554 | C<SvPVutf8> now works properly with magical variables. | |
555 | ||
556 | =item * | |
557 | ||
558 | C<SvPVbyte> now works properly non-PVs. | |
559 | ||
07315176 KW |
560 | =item * |
561 | ||
67addccf KW |
562 | C</[[:ascii:]]/> and C</[[:blank:]]/> now use locale rules under |
563 | C<use locale> when the platform supports that. Previously, they used | |
07315176 KW |
564 | the platform's native character set. |
565 | ||
5d103fec KW |
566 | =item * |
567 | ||
568 | A regression introduced in 5.13.6 was fixed. This involved an inverted | |
569 | bracketed character class in a regular expression that consisted solely | |
570 | of a Unicode property, that property wasn't getting inverted outside the | |
571 | Latin1 range. | |
572 | ||
2e2b2571 KW |
573 | =item * |
574 | ||
575 | C<quotemeta> now quotes consistently the same non-ASCII characters under | |
576 | C<use feature 'unicode_strings'>, regardless of whether the string is | |
577 | encoded in UTF-8 or not, hence fixing the last vestiges (we hope) of the | |
578 | infamous L<perlunicode/The "Unicode Bug">. [perl #77654]. | |
579 | ||
580 | Which of these code points is quoted has changed, based on Unicode's | |
581 | recommendations. See L<perlfunc/quotemeta> for details. | |
582 | ||
ea88c40c FC |
583 | =back |
584 | ||
c1e74734 | 585 | =head1 Known Problems |
ea88c40c | 586 | |
c1e74734 | 587 | This is a list of some significant unfixed bugs, which are regressions |
32e63b32 | 588 | from either 5.14.0 or 5.15.7. |
ea88c40c | 589 | |
c1e74734 | 590 | =over 4 |
18af289e | 591 | |
811ac709 | 592 | =item * C<eval { 'fork()' }> is broken on Windows [perl #109718] |
18af289e | 593 | |
811ac709 | 594 | This is a known test failure to be fixed before 5.16.0. |
1ac442bc | 595 | |
c1e74734 | 596 | =back |
c0154fe2 | 597 | |
c1e74734 | 598 | =head1 Obituary |
1ac442bc | 599 | |
c1e74734 CBW |
600 | XXX If any significant core contributor has died, we've added a short obituary |
601 | here. | |
84b2a83e | 602 | |
52deee2e | 603 | =head1 Acknowledgements |
8fe05716 | 604 | |
811ac709 MM |
605 | Perl 5.15.8 represents approximately 4 weeks of development since Perl 5.15.7 |
606 | and contains approximately 61,000 lines of changes across 480 files from 36 | |
607 | authors. | |
608 | ||
609 | Perl continues to flourish into its third decade thanks to a vibrant community | |
610 | of users and developers. The following people are known to have contributed the | |
611 | improvements that became Perl 5.15.8: | |
612 | ||
613 | Abhijit Menon-Sen, Alan Haggai Alavi, Alexandr Ciornii, Andy Dougherty, Brian | |
614 | Fraser, Chris 'BinGOs' Williams, Craig A. Berry, Darin McBride, Dave Rolsky, | |
615 | David Golden, David Leadbeater, David Mitchell, Dominic Hargreaves, Eric Brine, | |
616 | Father Chrysostomos, Florian Ragwitz, H.Merijn Brand, Juerd Waalboer, Karl | |
617 | Williamson, Leon Timmermans, Marc Green, Max Maischein, Nicholas Clark, Paul | |
618 | Evans, Rafael Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes, Robin | |
619 | Barker, Shlomi Fish, Steffen Müller, Todd Rinaldo, Tony Cook, Yves Orton, | |
620 | Zefram, Ævar Arnfjörð Bjarmason. | |
621 | ||
622 | The list above is almost certainly incomplete as it is automatically generated | |
623 | from version control history. In particular, it does not include the names of | |
624 | the (very much appreciated) contributors who reported issues to the Perl bug | |
625 | tracker. | |
626 | ||
627 | Many of the changes included in this version originated in the CPAN modules | |
628 | included in Perl's core. We're grateful to the entire CPAN community for | |
629 | helping Perl to flourish. | |
630 | ||
631 | For a more complete list of all of Perl's historical contributors, please see | |
632 | the F<AUTHORS> file in the Perl source distribution. | |
29cf780c | 633 | |
44691e6f AB |
634 | =head1 Reporting Bugs |
635 | ||
636 | If you find what you think is a bug, you might check the articles | |
52deee2e DR |
637 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
638 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
44691e6f AB |
639 | information at http://www.perl.org/ , the Perl Home Page. |
640 | ||
641 | If you believe you have an unreported bug, please run the L<perlbug> | |
52deee2e DR |
642 | program included with your release. Be sure to trim your bug down |
643 | to a tiny but sufficient test case. Your bug report, along with the | |
644 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
645 | analysed by the Perl porting team. | |
44691e6f AB |
646 | |
647 | If the bug you are reporting has security implications, which make it | |
52deee2e DR |
648 | inappropriate to send to a publicly archived mailing list, then please send |
649 | it to perl5-security-report@perl.org. This points to a closed subscription | |
650 | unarchived mailing list, which includes | |
651 | all the core committers, who will be able | |
652 | to help assess the impact of issues, figure out a resolution, and help | |
653 | co-ordinate the release of patches to mitigate or fix the problem across all | |
654 | platforms on which Perl is supported. Please only use this address for | |
655 | security issues in the Perl core, not for modules independently | |
656 | distributed on CPAN. | |
44691e6f AB |
657 | |
658 | =head1 SEE ALSO | |
659 | ||
52deee2e DR |
660 | The F<Changes> file for an explanation of how to view exhaustive details |
661 | on what changed. | |
44691e6f AB |
662 | |
663 | The F<INSTALL> file for how to build Perl. | |
664 | ||
665 | The F<README> file for general stuff. | |
666 | ||
667 | The F<Artistic> and F<Copying> files for copyright information. | |
668 | ||
669 | =cut |