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 | ||
c11980ad MM |
251 | C<PerlIO::mmap> 0.010 has been added to the Perl core. |
252 | ||
2f987927 FC |
253 | The C<mmap> PerlIO layer is no longer implemented by perl itself, but has |
254 | been moved out into the new L<PerlIO::mmap> module. | |
4e6e9b23 | 255 | |
c1e74734 | 256 | =back |
4e6e9b23 | 257 | |
c1e74734 | 258 | =head2 Updated Modules and Pragmata |
4e6e9b23 | 259 | |
c1e74734 | 260 | =over 4 |
1887da8c RS |
261 | |
262 | =item * | |
263 | ||
eeac62ad FC |
264 | L<arybase> has been upgraded from version 0.03 to version 0.04. |
265 | ||
266 | List slices no longer modify items on the stack belonging to outer lists | |
267 | [perl #109570]. | |
268 | ||
269 | =item * | |
270 | ||
197aacaf FC |
271 | L<B> has been upgraded from version 1.33 to version 1.34. |
272 | ||
273 | C<B::COP> now has a C<stashflags> method, corresponding to a new internal | |
274 | field added in 5.15.4 [perl #108860]. | |
275 | ||
276 | =item * | |
277 | ||
c11980ad MM |
278 | C<B::Deparse> has been upgraded from version 1.11 to 1.12. |
279 | ||
280 | =item * | |
281 | ||
c0f37554 FC |
282 | L<Carp> has been upgraded from version 1.24 to version 1.25. |
283 | ||
284 | It now puts a dot after the file and line number, just like errors from | |
285 | C<die> [perl #106538]. | |
286 | ||
287 | =item * | |
288 | ||
c11980ad | 289 | C<Compress::Raw::Bzip2> has been upgraded from version 2.045 to 2.048. |
76f546a2 CBW |
290 | |
291 | =item * | |
292 | ||
c11980ad | 293 | C<Compress::Raw::Zlib> has been upgraded from version 2.045 to 2.048. |
589c1691 CBW |
294 | |
295 | =item * | |
296 | ||
fed9e2bd | 297 | L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048. |
422d6414 CBW |
298 | |
299 | =item * | |
300 | ||
c11980ad | 301 | C<CPAN::Meta> has been upgraded from version 2.113640 to 2.120351. |
2d1dec40 CBW |
302 | |
303 | Work around a memory leak bug involving version objects in boolean context. | |
304 | ||
305 | =item * | |
306 | ||
c11980ad | 307 | C<CPAN::Meta::YAML> has been upgraded from version 0.005 to 0.007. |
b3100a1d CBW |
308 | |
309 | =item * | |
310 | ||
c11980ad | 311 | C<CPANPLUS> has been upgraded from version 0.9116 to 0.9118. |
2364a08e CBW |
312 | |
313 | =item * | |
314 | ||
c11980ad | 315 | C<CPANPLUS::Dist::Build> has been upgraded from version 0.60 to 0.62. |
89ddfa67 CBW |
316 | |
317 | =item * | |
318 | ||
c11980ad | 319 | C<Data::Dumper> has been upgraded from version 2.135_04 to 2.135_05. |
53095d08 NC |
320 | |
321 | =item * | |
322 | ||
c11980ad | 323 | C<DB_File> has been upgraded from version 1.824 to 1.826. |
acb29889 CBW |
324 | |
325 | =item * | |
326 | ||
c11980ad | 327 | C<diagnostics> has been upgraded from version 1.27 to 1.28. |
ce2c4022 NC |
328 | |
329 | When searching for F<perldiag.pod>, it no longer uses paths that were only | |
330 | relevant on Perl 5.004 and earlier. | |
331 | ||
332 | =item * | |
333 | ||
c11980ad MM |
334 | C<English> has been upgraded from version 1.04 to 1.05. |
335 | ||
336 | =item * | |
337 | ||
338 | C<ExtUtils::Install> has been upgraded from version 1.57 to 1.58. | |
339 | ||
340 | =item * | |
341 | ||
342 | C<ExtUtils::ParseXS> has been upgraded from version 3.12 to 3.16. | |
84ecb73f S |
343 | |
344 | The new version comes with important tools for sharing typemaps between | |
345 | different CPAN distributions. | |
346 | ||
347 | =item * | |
348 | ||
c11980ad | 349 | C<File::Copy> has been upgraded from version 2.21 to 2.23. |
a3cc0403 FC |
350 | |
351 | It no longer emits warnings when copying files with newlines in their names | |
352 | [perl #109104]. | |
353 | ||
354 | =item * | |
355 | ||
c11980ad | 356 | C<File::Glob> has been upgraded from version 1.16 to 1.17. |
eb96f3fa CBW |
357 | |
358 | =item * | |
359 | ||
c11980ad | 360 | C<Filter::Util::Call> has been upgraded from version 1.39 to 1.40. |
04ae1553 | 361 | |
c11980ad MM |
362 | =item * |
363 | ||
364 | C<IPC::Cmd> has been upgraded from version 0.72 to 0.76. | |
04ae1553 Z |
365 | |
366 | =item * | |
367 | ||
c11980ad MM |
368 | C<Math::Complex> has been upgraded from version 1.58 to 1.59. |
369 | ||
370 | This avoids a new core warning. | |
f50587e0 MM |
371 | |
372 | =item * | |
373 | ||
c11980ad | 374 | C<Module::Metadata> has been upgraded from version 1.000007 to 1.000009. |
75ff5956 CBW |
375 | |
376 | Adds C<provides> method to generate a CPAN META provides data structure | |
377 | correctly; use of C<package_versions_from_directory> is discouraged. | |
378 | ||
379 | =item * | |
380 | ||
c11980ad MM |
381 | C<Opcode> has been upgraded from version 1.22 to 1.23. |
382 | ||
383 | =item * | |
384 | ||
385 | C<overload> has been upgraded from version 1.17 to 1.18. | |
a4a5e2bf CBW |
386 | |
387 | =item * | |
388 | ||
c11980ad | 389 | C<Parse::CPAN::Meta> has been upgraded from version 1.4401 to 1.4402. |
843331c7 CBW |
390 | |
391 | =item * | |
392 | ||
c11980ad MM |
393 | C<perlfaq> has been upgraded from version 5.0150038 to 5.0150039. |
394 | ||
395 | =item * | |
396 | ||
397 | C<Pod::Functions> has been upgraded from version 1.04 to 1.05. | |
812efae1 NC |
398 | |
399 | F<Functions.pm> is now generated at perl build time from annotations in | |
400 | F<perlfunc.pod>. This will ensure that L<Pod::Functions> and L<perlfunc> | |
401 | remain in synchronisation. | |
402 | ||
403 | =item * | |
404 | ||
c11980ad | 405 | C<Pod::Html> has been upgraded from version 1.13 to 1.14. |
88c5c971 | 406 | |
2a7afa74 NC |
407 | =item * |
408 | ||
c11980ad | 409 | C<Pod::Parser> has been upgraded from version 1.37 to 1.51. |
ecd144ea | 410 | |
c11980ad MM |
411 | =item * |
412 | ||
413 | C<POSIX> has been upgraded from version 1.28 to 1.30. | |
414 | ||
415 | =item * | |
416 | ||
417 | C<re> has been upgraded from version 0.18 to 0.19. | |
418 | ||
419 | =item * | |
420 | ||
421 | C<Safe> has been upgraded from version 2.30 to 2.31. | |
422 | ||
423 | =item * | |
424 | ||
425 | C<Socket> has been upgraded from version 1.97 to 1.98. | |
ecd144ea FC |
426 | |
427 | =item * | |
428 | ||
c11980ad | 429 | C<Term::Cap> has been upgraded from version 1.12 to 1.13. |
9dea6244 CBW |
430 | |
431 | =item * | |
432 | ||
c11980ad MM |
433 | C<Term::ReadLine> has been upgraded from version 1.07 to 1.08. |
434 | ||
435 | Term::ReadLine now supports any event loop, including unpublished ones and | |
436 | simple L<IO::Select> loops without the need to rewrite existing code for | |
437 | any particular framework [perl #108470]. | |
438 | ||
439 | =item * | |
440 | ||
441 | C<Time::HiRes> has been upgraded from version 1.9724 to 1.9725. | |
858dcda5 | 442 | |
694644e0 | 443 | C<Time::HiRes::stat()> no longer corrupts the Perl stack. |
858dcda5 Z |
444 | |
445 | =item * | |
446 | ||
c11980ad | 447 | C<Unicode::UCD> has been upgraded from version 0.39 to 0.41. |
2a7afa74 NC |
448 | |
449 | The only change is to fix a formatting error in the Pod. | |
450 | ||
e9e4ee62 CBW |
451 | =item * |
452 | ||
c11980ad | 453 | C<Version::Requirements> has been upgraded from version 0.101021 to 0.101022. |
c0504019 | 454 | |
c11980ad | 455 | =item * |
937a45d0 | 456 | |
c11980ad | 457 | C<warnings> has been upgraded from version 1.12 to 1.13. |
937a45d0 | 458 | |
ef337e16 CBW |
459 | =item * |
460 | ||
c11980ad | 461 | C<XS::Typemap> has been upgraded from version 0.07 to 0.08. |
ef337e16 | 462 | |
7f28d7ed | 463 | =back |
679b54e7 | 464 | |
52deee2e | 465 | =head1 Documentation |
3c7c5233 | 466 | |
c1e74734 | 467 | =head2 New Documentation |
cadced9f | 468 | |
84ecb73f S |
469 | =head3 L<perlxstypemap> |
470 | ||
471 | The new manual describes the XS typemapping mechanism in unprecedented | |
472 | detail and combines new documentation with information extracted from | |
473 | L<perlxs> and the previously unofficial list of all core typemaps. | |
474 | ||
c1e74734 | 475 | =head1 Testing |
39de7394 | 476 | |
c1e74734 | 477 | =over 4 |
5dd80d85 | 478 | |
52272450 FC |
479 | =item * |
480 | ||
f0bcc49a NC |
481 | F<t/porting/pending-author.t> has been added, to avoid the problem of |
482 | C<make test> passing 100%, but the subsequent git commit causing | |
483 | F<t/porting/authors.t> to fail, because it uses a "new" e-mail address. | |
484 | ||
485 | This test is only run if one is building inside a git checkout, B<and> one | |
486 | has made local changes. Otherwise it's skipped. | |
487 | ||
488 | =item * | |
489 | ||
cf6f994f NC |
490 | F<t/porting/perlfunc.t> has been added, to test that changes to |
491 | F<pod/perlfunc.pod> do not inadvertently break the build of L<Pod::Functions>. | |
52272450 | 492 | |
84ecb73f S |
493 | =item * |
494 | ||
495 | The test suite for typemaps has been extended to cover a larger fraction of | |
496 | the core typemaps. | |
497 | ||
52deee2e | 498 | =back |
5dd80d85 | 499 | |
c1e74734 | 500 | =head1 Platform Support |
52272450 | 501 | |
c1e74734 | 502 | =head2 Platform-Specific Notes |
ea88c40c | 503 | |
c1e74734 | 504 | =over 4 |
ea88c40c | 505 | |
811ac709 | 506 | =item Cygwin |
ea88c40c | 507 | |
811ac709 MM |
508 | Since version 1.7, Cygwin supports native UTF-8 paths. If Perl is built |
509 | under that environment, directory and filenames will be UTF-8 encoded. | |
510 | ||
511 | Cygwin does not initialize all original Win32 environment variables. See | |
512 | F<README.cygwin> for a discussion of C<Cygwin::sync_winenv()> and | |
513 | further links. | |
514 | ||
515 | =item VMS | |
516 | ||
517 | The build on VMS now allows names of the resulting | |
518 | symbols in C code for Perl longer than 31 characters. | |
519 | Symbols like C<Perl__it_was_the_best_of_times_it_was_the_worst_of_times> | |
520 | can now be created freely without causing the VMS linker to seize up. | |
ea88c40c | 521 | |
c1e74734 | 522 | =back |
ea88c40c | 523 | |
c1e74734 | 524 | =head1 Selected Bug Fixes |
ea88c40c | 525 | |
c1e74734 | 526 | =over 4 |
ea88c40c FC |
527 | |
528 | =item * | |
529 | ||
6025c6dd RS |
530 | C<~~> now correctly handles the precedence of Any~~Object, and is not tricked |
531 | by an overloaded object on the left-hand side. | |
ea88c40c | 532 | |
249950d7 FC |
533 | =item * |
534 | ||
535 | C<stat _> no longer warns about unopened filehandles [perl #71002]. | |
536 | ||
537 | =item * | |
538 | ||
539 | C<stat> on an unopened filehandle now warns consistently, instead of | |
540 | skipping the warning at times. | |
541 | ||
542 | =item * | |
543 | ||
544 | A change in an earlier 5.15 release caused warning hints to propagate into | |
545 | C<do $file>. This has been fixed [rt.cpan.org #72767]. | |
546 | ||
547 | =item * | |
548 | ||
549 | Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up | |
550 | after assigning C<${ qr// }> to a hash element and locking it with | |
551 | L<Hash::Util>. This could result in double frees, crashes or erratic | |
552 | behaviour. | |
553 | ||
92c88ef1 FC |
554 | =item * |
555 | ||
556 | In 5.15.7, some typeglobs in the CORE namespace were made read-only by | |
557 | mistake. This has been fixed [rt.cpan.org #74289]. | |
558 | ||
b1ea7742 FC |
559 | =item * |
560 | ||
561 | C<-t> now works when stacked with other filetest operators [perl #77388]. | |
562 | ||
a1d95121 FC |
563 | =item * |
564 | ||
565 | Stacked filetest operators now only call FETCH once on a tied argument. | |
566 | ||
ff4ff6f3 FC |
567 | =item * |
568 | ||
569 | C</.*/g> would sometimes refuse to match at the end of a string that ends | |
570 | with "\n". This has been fixed [perl #109206]. | |
571 | ||
a7bff800 FC |
572 | =item * |
573 | ||
ea317ccb KW |
574 | C<m/[[:ascii:]]/i> and C</\p{ASCII}/i> now match identically (when not |
575 | under a differing locale). This fixes a regression introduced in 5.14 | |
576 | in which the first expression could match characters outside of ASCII, | |
577 | such as the KELVIN SIGN. | |
578 | ||
579 | =item * | |
580 | ||
a7bff800 | 581 | Method calls whose arguments were all surrounded with C<my()> or C<our()> |
32e63b32 | 582 | (as in C<< $object->method(my($a,$b)) >>) used to force lvalue context on |
a7bff800 FC |
583 | the subroutine. This would prevent lvalue methods from returning certain |
584 | values. Due to lvalue fixes earlier in the 5.15.x series, it would also | |
585 | prevent non-lvalue methods from being called [perl #109264]. | |
586 | ||
587 | =for comment | |
588 | This bug I<did> affect earlier stable releases. It is just the last | |
589 | sentence that does not apply to 5.14. | |
590 | ||
0aae26c1 FC |
591 | =item * |
592 | ||
593 | The C<SvPVutf8> C function no longer tries to modify its argument, | |
594 | resulting in errors [perl #108994]. | |
595 | ||
596 | =item * | |
597 | ||
598 | C<SvPVutf8> now works properly with magical variables. | |
599 | ||
600 | =item * | |
601 | ||
602 | C<SvPVbyte> now works properly non-PVs. | |
603 | ||
07315176 KW |
604 | =item * |
605 | ||
67addccf KW |
606 | C</[[:ascii:]]/> and C</[[:blank:]]/> now use locale rules under |
607 | C<use locale> when the platform supports that. Previously, they used | |
07315176 KW |
608 | the platform's native character set. |
609 | ||
5d103fec KW |
610 | =item * |
611 | ||
612 | A regression introduced in 5.13.6 was fixed. This involved an inverted | |
613 | bracketed character class in a regular expression that consisted solely | |
614 | of a Unicode property, that property wasn't getting inverted outside the | |
615 | Latin1 range. | |
616 | ||
2e2b2571 KW |
617 | =item * |
618 | ||
619 | C<quotemeta> now quotes consistently the same non-ASCII characters under | |
620 | C<use feature 'unicode_strings'>, regardless of whether the string is | |
621 | encoded in UTF-8 or not, hence fixing the last vestiges (we hope) of the | |
622 | infamous L<perlunicode/The "Unicode Bug">. [perl #77654]. | |
623 | ||
624 | Which of these code points is quoted has changed, based on Unicode's | |
625 | recommendations. See L<perlfunc/quotemeta> for details. | |
626 | ||
ea88c40c FC |
627 | =back |
628 | ||
c1e74734 | 629 | =head1 Known Problems |
ea88c40c | 630 | |
c1e74734 | 631 | This is a list of some significant unfixed bugs, which are regressions |
32e63b32 | 632 | from either 5.14.0 or 5.15.7. |
ea88c40c | 633 | |
c1e74734 | 634 | =over 4 |
18af289e | 635 | |
811ac709 | 636 | =item * C<eval { 'fork()' }> is broken on Windows [perl #109718] |
18af289e | 637 | |
811ac709 | 638 | This is a known test failure to be fixed before 5.16.0. |
1ac442bc | 639 | |
c1e74734 | 640 | =back |
c0154fe2 | 641 | |
52deee2e | 642 | =head1 Acknowledgements |
8fe05716 | 643 | |
811ac709 MM |
644 | Perl 5.15.8 represents approximately 4 weeks of development since Perl 5.15.7 |
645 | and contains approximately 61,000 lines of changes across 480 files from 36 | |
646 | authors. | |
647 | ||
648 | Perl continues to flourish into its third decade thanks to a vibrant community | |
649 | of users and developers. The following people are known to have contributed the | |
650 | improvements that became Perl 5.15.8: | |
651 | ||
652 | Abhijit Menon-Sen, Alan Haggai Alavi, Alexandr Ciornii, Andy Dougherty, Brian | |
653 | Fraser, Chris 'BinGOs' Williams, Craig A. Berry, Darin McBride, Dave Rolsky, | |
654 | David Golden, David Leadbeater, David Mitchell, Dominic Hargreaves, Eric Brine, | |
655 | Father Chrysostomos, Florian Ragwitz, H.Merijn Brand, Juerd Waalboer, Karl | |
656 | Williamson, Leon Timmermans, Marc Green, Max Maischein, Nicholas Clark, Paul | |
657 | Evans, Rafael Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes, Robin | |
658 | Barker, Shlomi Fish, Steffen Müller, Todd Rinaldo, Tony Cook, Yves Orton, | |
659 | Zefram, Ævar Arnfjörð Bjarmason. | |
660 | ||
661 | The list above is almost certainly incomplete as it is automatically generated | |
662 | from version control history. In particular, it does not include the names of | |
663 | the (very much appreciated) contributors who reported issues to the Perl bug | |
664 | tracker. | |
665 | ||
666 | Many of the changes included in this version originated in the CPAN modules | |
667 | included in Perl's core. We're grateful to the entire CPAN community for | |
668 | helping Perl to flourish. | |
669 | ||
670 | For a more complete list of all of Perl's historical contributors, please see | |
671 | the F<AUTHORS> file in the Perl source distribution. | |
29cf780c | 672 | |
44691e6f AB |
673 | =head1 Reporting Bugs |
674 | ||
675 | If you find what you think is a bug, you might check the articles | |
52deee2e DR |
676 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
677 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
44691e6f AB |
678 | information at http://www.perl.org/ , the Perl Home Page. |
679 | ||
680 | If you believe you have an unreported bug, please run the L<perlbug> | |
52deee2e DR |
681 | program included with your release. Be sure to trim your bug down |
682 | to a tiny but sufficient test case. Your bug report, along with the | |
683 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
684 | analysed by the Perl porting team. | |
44691e6f AB |
685 | |
686 | If the bug you are reporting has security implications, which make it | |
52deee2e DR |
687 | inappropriate to send to a publicly archived mailing list, then please send |
688 | it to perl5-security-report@perl.org. This points to a closed subscription | |
689 | unarchived mailing list, which includes | |
690 | all the core committers, who will be able | |
691 | to help assess the impact of issues, figure out a resolution, and help | |
692 | co-ordinate the release of patches to mitigate or fix the problem across all | |
693 | platforms on which Perl is supported. Please only use this address for | |
694 | security issues in the Perl core, not for modules independently | |
695 | distributed on CPAN. | |
44691e6f AB |
696 | |
697 | =head1 SEE ALSO | |
698 | ||
52deee2e DR |
699 | The F<Changes> file for an explanation of how to view exhaustive details |
700 | on what changed. | |
44691e6f AB |
701 | |
702 | The F<INSTALL> file for how to build Perl. | |
703 | ||
704 | The F<README> file for general stuff. | |
705 | ||
706 | The F<Artistic> and F<Copying> files for copyright information. | |
707 | ||
708 | =cut |