Commit | Line | Data |
---|---|---|
3a5c9134 CBW |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
9f7a72d0 | 5 | perldelta - what is new for perl v5.13.9 |
15e6cdd9 | 6 | |
9f7a72d0 | 7 | =head1 DESCRIPTION |
f6166f76 | 8 | |
9f7a72d0 Z |
9 | This document describes differences between the 5.13.8 release and |
10 | the 5.13.9 release. | |
0d157ee2 | 11 | |
9f7a72d0 Z |
12 | If you are upgrading from an earlier release such as 5.13.7, first read |
13 | L<perl5138delta>, which describes differences between 5.13.7 and | |
14 | 5.13.8. | |
0d157ee2 | 15 | |
9f7a72d0 | 16 | =head1 Notice |
0d157ee2 | 17 | |
9f7a72d0 | 18 | XXX Any important notices here |
0d157ee2 | 19 | |
9f7a72d0 | 20 | =head1 Core Enhancements |
0d157ee2 | 21 | |
cfaf538b KW |
22 | =head2 New regular expression modifier C</a> |
23 | ||
24 | The C</a> regular expression modifier restricts C<\s> to match precisely | |
25 | the five characters C<[ \f\n\r\t]>, C<\d> to match precisely the 10 | |
26 | characters C<[0-9]>, C<\w> to match precisely the 63 characters | |
27 | C<[A-Za-z0-9_]>, and the Posix (C<[[:posix:]]>) character classes to | |
28 | match only the appropriate ASCII characters. The complements, of | |
29 | course, match everything but; and C<\b> and C<\B> are correspondingly | |
30 | affected. Otherwise, C</a> behaves like the C</u> modifier, in that | |
31 | case-insensitive matching uses Unicode semantics; for example, "k" will | |
32 | match the Unicode C<\N{KELVIN SIGN}> under C</i> matching, and code | |
33 | points in the Latin1 range, above ASCII will have Unicode semantics when | |
34 | it comes to case-insensitive matching. Like its cousins (C</u>, C</l>, | |
35 | and C</d>), and in spite of the terminology, C</a> in 5.14 will not | |
36 | actually be able to be used as a suffix at the end of a regular | |
37 | expression (this restriction is planned to be lifted in 5.16). It must | |
38 | occur either as an infix modifier, such as C<(?a:...)> or (C<(?a)...>, | |
39 | or it can be turned on within the lexical scope of C<use re '/a'>. | |
40 | Turning on C</a> turns off the other "character set" modifiers. | |
41 | ||
086325d8 KW |
42 | =head2 Any unsigned value can be encoded as a character |
43 | ||
6d4f9cf2 | 44 | With this release, Perl is adopting a model that any unsigned value can |
086325d8 KW |
45 | be treated as a code point and encoded internally (as utf8) without |
46 | warnings -- not just the code points that are legal in Unicode. | |
47 | However, unless utf8 warnings have been | |
6d4f9cf2 KW |
48 | explicitly lexically turned off, outputting or performing a |
49 | Unicode-defined operation (such as upper-casing) on such a code point | |
50 | will generate a warning. Attempting to input these using strict rules | |
51 | (such as with the C<:encoding('UTF-8')> layer) will continue to fail. | |
52 | Prior to this release the handling was very inconsistent, and incorrect | |
53 | in places. Also, the Unicode non-characters, some of which previously were | |
54 | erroneously considered illegal in places by Perl, contrary to the Unicode | |
55 | standard, are now always legal internally. But inputting or outputting | |
56 | them will work the same as for the non-legal Unicode code points, as the | |
57 | Unicode standard says they are illegal for "open interchange". | |
58 | ||
15555e2d FC |
59 | =head2 Regular expression debugging output improvement |
60 | ||
61 | Regular expression debugging output (turned on by C<use re 'debug';>) now | |
62 | uses hexadecimal when escaping non-ASCII characters, instead of octal. | |
0d157ee2 | 63 | |
9f7a72d0 | 64 | =head1 Security |
0d157ee2 | 65 | |
b16cfc56 JV |
66 | =head2 Restrict \p{IsUserDefined} to In\w+ and In\w+ |
67 | ||
4dc93f40 JV |
68 | In L<perlunicode/"User-Defined Character Properties">, it says you can |
69 | create custom properties by defining subroutines whose names begin with | |
70 | "In" or "Is". However, perl doesn't actually enforce that naming | |
71 | restriction, so \p{foo::bar} will call foo::Bar() if it exists. | |
b16cfc56 | 72 | |
4dc93f40 JV |
73 | This commit finally enforces this convention. Note that this broke a |
74 | number of existing tests for properties, since they didn't always use an | |
75 | Is/In prefix. | |
b16cfc56 | 76 | |
3a5c9134 CBW |
77 | =head1 Incompatible Changes |
78 | ||
d4560299 FC |
79 | =head2 All objects are destroyed |
80 | ||
81 | It used to be possible to prevent a destructor from being called during | |
82 | global destruction by artificially increasing the reference count of an | |
83 | object. | |
84 | ||
85 | Now such objects I<will> will be destroyed, as a result of a bug fix | |
86 | L<[perl #81230]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=81230>. | |
87 | ||
88 | This has the potential to break some XS modules. (In fact, it break some. | |
89 | See L</Known Problems>, below.) | |
90 | ||
9f7a72d0 | 91 | =head1 Modules and Pragmata |
2638c0ff | 92 | |
9f7a72d0 | 93 | =head2 New Modules and Pragmata |
2638c0ff | 94 | |
9f7a72d0 | 95 | =over 4 |
17096837 | 96 | |
e1165778 Z |
97 | =item * |
98 | ||
0b5d8c02 | 99 | L<CPAN::Meta::YAML> 0.003 has been added as a dual-life module. It supports a |
e8a07a12 DG |
100 | subset of YAML sufficient for reading and writing META.yml and MYMETA.yml files |
101 | included with CPAN distributions or generated by the module installation | |
102 | toolchain. It should not be used for any other general YAML parsing or | |
103 | generation task. | |
17096837 | 104 | |
935c8d19 DG |
105 | =item * |
106 | ||
435aa301 | 107 | L<HTTP::Tiny> 0.009 has been added as a dual-life module. It is a very |
a3ab329f DG |
108 | small, simple HTTP/1.1 client designed for simple GET requests and file |
109 | mirroring. It has has been added to enable CPAN.pm and CPANPLUS to | |
110 | "bootstrap" HTTP access to CPAN using pure Perl without relying on external | |
111 | binaries like F<curl> or F<wget>. | |
112 | ||
113 | =item * | |
114 | ||
6def3600 FC |
115 | L<JSON::PP> 2.27103 has been added as a dual-life module, for the sake of |
116 | reading F<META.json> files in CPAN distributions. | |
117 | ||
118 | =item * | |
119 | ||
6cf6332a | 120 | L<Module::Metadata> 1.000003 has been added as a dual-life module. It gathers |
e8b333e6 DG |
121 | package and POD information from Perl module files. It is a standalone module |
122 | based on Module::Build::ModuleInfo for use by other module installation | |
123 | toolchain components. Module::Build::ModuleInfo has been deprecated in | |
124 | favor of this module instead. | |
125 | ||
126 | =item * | |
127 | ||
935c8d19 DG |
128 | L<Perl::OSType> 1.002 has been added as a dual-life module. It maps Perl |
129 | operating system names (e.g. 'dragonfly' or 'MSWin32') to more generic types | |
130 | with standardized names (e.g. "Unix" or "Windows"). It has been refactored | |
131 | out of Module::Build and ExtUtils::CBuilder and consolidates such mappings into | |
132 | a single location for easier maintenance. | |
133 | ||
9f7a72d0 | 134 | =back |
e1165778 | 135 | |
9f7a72d0 | 136 | =head2 Updated Modules and Pragmata |
f295f417 | 137 | |
9f7a72d0 | 138 | =over 4 |
17096837 | 139 | |
f295f417 FC |
140 | =item * |
141 | ||
6447e912 CBW |
142 | C<Archive::Extract> has been upgraded from version 0.46 to 0.48 |
143 | ||
144 | =item * | |
145 | ||
89ae55b4 CBW |
146 | C<Archive::Tar> has been upgraded from version 1.74 to 1.76 |
147 | ||
148 | =item * | |
149 | ||
2a1594f6 CBW |
150 | C<CGI> has been upgraded from version 3.50 to 3.51 |
151 | ||
79e1bedb FC |
152 | Further improvements have been made to guard against newline injections |
153 | in headers. | |
154 | ||
2a1594f6 | 155 | =item * |
5ebf8416 CBW |
156 | |
157 | C<Compress::Raw::Bzip2> has been upgraded from version 2.031 to 2.033 | |
158 | ||
159 | =item * | |
e2f1db54 CBW |
160 | |
161 | C<Compress::Raw::Zlib> has been upgraded from version 2.030 to 2.033 | |
162 | ||
163 | =item * | |
2a1594f6 | 164 | |
a52237f3 DG |
165 | C<CPAN> has been upgraded from version 1.94_62 to 1.94_63 |
166 | ||
167 | =item * | |
168 | ||
f1aaabf8 CBW |
169 | C<CPANPLUS> has been upgraded from version 0.9010 to 0.9011 |
170 | ||
171 | =item * | |
172 | ||
ae0f8eee CBW |
173 | C<CPANPLUS::Dist::Build> has been upgraded from version 0.50 to 0.52 |
174 | ||
175 | =item * | |
176 | ||
177 | C<DB_File> has been upgraded from version 1.820 to 1.821 | |
deb99cce CBW |
178 | |
179 | =item * | |
180 | ||
6d4f9cf2 KW |
181 | C<Encode> has been upgraded from version 2.40 to 2.42. |
182 | Now, all 66 Unicode non-characters are treated the same way U+FFFF has | |
183 | always been treated; if it was disallowed, all 66 are disallowed; if it | |
184 | warned, all 66 warn. | |
50afc8f8 CBW |
185 | |
186 | =item * | |
187 | ||
eee47ba6 | 188 | C<File::Fetch> has been upgraded from version 0.28 to 0.32 |
f37ee46a CBW |
189 | |
190 | =item * | |
191 | ||
cd0c0e65 CBW |
192 | C<IO::Compress> has been upgraded from version 2.030 to 2.033 |
193 | ||
194 | =item * | |
195 | ||
f37ee46a CBW |
196 | C<IPC::Cmd> has been upgraded from version 0.66 to 0.68 |
197 | ||
ac066c2a CBW |
198 | =item * |
199 | ||
b5ce1198 CBW |
200 | C<Log::Message> has been upgraded from version 0.02 to 0.04 |
201 | ||
202 | =item * | |
203 | ||
c0395286 CBW |
204 | C<Log::Message::Simple> has been upgraded from version 0.06 to 0.08 |
205 | ||
206 | =item * | |
207 | ||
ae0f8eee | 208 | C<Module::Load::Conditional> has been upgraded from version 0.38 to 0.40 |
4fc94532 CBW |
209 | |
210 | =item * | |
211 | ||
ae0f8eee | 212 | C<Object::Accessor> has been upgraded from version 0.36 to 0.38 |
0019012a CBW |
213 | |
214 | =item * | |
215 | ||
ae0f8eee | 216 | C<Params::Check> has been upgraded from version 0.26 to 0.28 |
8cb3aa53 CBW |
217 | |
218 | =item * | |
219 | ||
9c88a88b CBW |
220 | C<Pod::LaTeX> has been upgraded from version 0.58 to 0.59 |
221 | ||
222 | =item * | |
223 | ||
b16cfc56 JV |
224 | C<Socket> has been updated with new affordances for IPv6, |
225 | including implementations of the C<Socket::getaddrinfo()> and | |
226 | C<Socket::getnameinfo()> functions, along with related constants. | |
227 | ||
228 | =item * | |
229 | ||
6df88f97 | 230 | C<Term::UI> has been upgraded from version 0.20 to 0.24 |
8e1e0801 CBW |
231 | |
232 | =item * | |
233 | ||
4df1dffa FC |
234 | C<Thread::Queue> has been upgraded from version 2.11 to 2.12. |
235 | ||
236 | =item * | |
237 | ||
238 | C<Thread::Semaphore> has been upgraded from version 2.11 to 2.12. | |
239 | ||
240 | =item * | |
241 | ||
f5d41534 CBW |
242 | C<threads> has been upgraded from version 1.81_03 to 1.82 |
243 | ||
244 | =item * | |
245 | ||
246 | C<threads::shared> has been upgraded from version 1.35 to 1.36 | |
247 | ||
248 | =item * | |
249 | ||
23046b7e | 250 | C<Time::Local> has been upgraded from version 1.1901_01 to 1.2000. |
17096837 | 251 | |
788ba0f4 CBW |
252 | =item * |
253 | ||
254 | C<Unicode::Normalize> has been upgraded from version 1.07 to 1.10 | |
255 | ||
98d645a7 FC |
256 | =item * |
257 | ||
258 | C<version> has been upgraded from 0.86 to 0.88. | |
259 | ||
7abec982 FC |
260 | =item * |
261 | ||
262 | C<Win32> has been upgraded from version 0.41 to 0.44. | |
263 | ||
9f7a72d0 | 264 | =back |
e1165778 | 265 | |
9f7a72d0 | 266 | =head1 Documentation |
17096837 | 267 | |
9f7a72d0 | 268 | =head2 Changes to Existing Documentation |
17096837 | 269 | |
81e743f9 | 270 | =head3 All documentation |
b16cfc56 JV |
271 | |
272 | =over | |
273 | ||
274 | =item * | |
275 | ||
276 | Numerous POD warnings were fixed. | |
277 | ||
278 | =item * | |
279 | ||
280 | Many, many spelling errors and typographical mistakes were corrected throughout Perl's core. | |
281 | ||
282 | =back | |
283 | ||
284 | =head3 L<Porting/epigraphs.pod> and L<pod/perlhist.pod> | |
285 | ||
4dc93f40 | 286 | This patch makes multiple changes to Porting/epigraphs.pod and pod/perlhist.pod. |
b16cfc56 JV |
287 | |
288 | =head3 L<perlhack> | |
289 | ||
290 | =over 4 | |
291 | ||
292 | =item * | |
293 | ||
294 | L<perlhack> was extensively reorganized. | |
295 | ||
296 | =back | |
297 | ||
0d7fe741 | 298 | =head3 L<perlfunc> |
d4238815 | 299 | |
9f7a72d0 | 300 | =over 4 |
17096837 | 301 | |
d4238815 FC |
302 | =item * |
303 | ||
0d7fe741 | 304 | It has now been documented that C<ord> returns 0 for an empty string. |
e1165778 | 305 | |
9f7a72d0 | 306 | =back |
17096837 | 307 | |
9f7a72d0 | 308 | =head1 Diagnostics |
17096837 | 309 | |
9f7a72d0 Z |
310 | The following additions or changes have been made to diagnostic output, |
311 | including warnings and fatal error messages. For the complete list of | |
312 | diagnostic messages, see L<perldiag>. | |
e1165778 | 313 | |
9f7a72d0 | 314 | =head2 New Diagnostics |
3a5c9134 | 315 | |
9f7a72d0 | 316 | =over 4 |
17096837 | 317 | |
c2e0289e FC |
318 | =item * |
319 | ||
26b3f088 FC |
320 | Performing an operation requiring Unicode semantics (such as case-folding) |
321 | on a Unicode surrogate or a non-Unicode character now triggers a warning: | |
322 | 'Operation "%s" returns its argument for ...'. | |
17096837 | 323 | |
9f7a72d0 | 324 | =back |
e6f1cc4d | 325 | |
9f7a72d0 | 326 | =head2 Changes to Existing Diagnostics |
e1165778 | 327 | |
9f7a72d0 | 328 | =over 4 |
17096837 | 329 | |
e1165778 Z |
330 | =item * |
331 | ||
e329d483 FC |
332 | Previously, if none of the C<gethostbyaddr>, C<gethostbyname> and |
333 | C<gethostent> functions were implemented on a given platform, they would | |
334 | all die with the message 'Unsupported socket function "gethostent" called', | |
335 | with analogous messages for C<getnet*> and C<getserv*>. This has been | |
336 | corrected. | |
17096837 | 337 | |
3a5c9134 CBW |
338 | =back |
339 | ||
9f7a72d0 | 340 | =head1 Utility Changes |
e1165778 | 341 | |
fcc3a61f | 342 | =head3 L<perlbug> |
e1165778 | 343 | |
9f7a72d0 | 344 | =over 4 |
e1165778 Z |
345 | |
346 | =item * | |
347 | ||
fcc3a61f FC |
348 | C<perlbug> did not previously generate a From: header, potentially |
349 | resulting in dropped mail. Now it does include that header. | |
e1165778 | 350 | |
9f7a72d0 | 351 | =back |
e1165778 | 352 | |
b16cfc56 JV |
353 | =head3 L<buildtoc> |
354 | ||
355 | =over 4 | |
356 | ||
357 | =item * | |
358 | ||
359 | F<pod/buildtoc> has been modernized and can now be used to test the | |
360 | well-formedness of F<pod/perltoc.pod> automatically. | |
361 | ||
362 | =back | |
363 | ||
9f7a72d0 | 364 | =head1 Testing |
3a5c9134 | 365 | |
3a5c9134 CBW |
366 | =over 4 |
367 | ||
368 | =item * | |
369 | ||
4dc93f40 | 370 | C<lib/File/DosGlob.t> has been modernized and now uses L<Test::More>. |
b16cfc56 JV |
371 | |
372 | =item * | |
373 | ||
4d1face8 FC |
374 | A new test script, C<t/porting/filenames.t>, makes sure that filenames and |
375 | paths are reasonably portable. | |
3a5c9134 | 376 | |
b16cfc56 JV |
377 | =item * |
378 | ||
379 | C<t/porting/diag.t> is now several orders of magnitude faster. | |
380 | ||
381 | =item * | |
382 | ||
383 | C<t/porting/buildtoc.t> now tests that the documentation TOC file is current and well-formed. | |
384 | ||
385 | =item * | |
386 | ||
387 | C<t/base/while.t> now tests the basics of a while loop with minimal dependencies. | |
388 | ||
389 | =item * | |
390 | ||
391 | C<t/cmd/while.t> now uses F<test.pl> for better maintainability. | |
392 | ||
393 | =item * | |
394 | ||
395 | C<t/op/split.t> now tests calls to C<split> without any pattern specified. | |
396 | ||
3a5c9134 CBW |
397 | =back |
398 | ||
b16cfc56 JV |
399 | |
400 | ||
9f7a72d0 | 401 | =head1 Platform Support |
3a5c9134 | 402 | |
9f7a72d0 Z |
403 | =head2 Discontinued Platforms |
404 | ||
3a5c9134 CBW |
405 | =over 4 |
406 | ||
7c53e0a1 | 407 | =item Apollo DomainOS |
3a5c9134 | 408 | |
7c53e0a1 FC |
409 | The last vestiges of support for this platform have been excised from the |
410 | Perl distribution. It was officially discontinued in version 5.12.0. It had | |
411 | not worked for years before that. | |
3a5c9134 | 412 | |
b16cfc56 JV |
413 | =item MacOS Classic |
414 | ||
415 | The last vestiges of support for this platform have been excised from the | |
416 | Perl distribution. It was officially discontinued in an earlier version. | |
417 | ||
3a5c9134 CBW |
418 | =back |
419 | ||
3a5c9134 CBW |
420 | =head2 Platform-Specific Notes |
421 | ||
9f7a72d0 | 422 | =over 4 |
3a5c9134 | 423 | |
b16cfc56 JV |
424 | |
425 | =item Cygwin | |
426 | ||
427 | =over | |
428 | ||
429 | =item Update MakeMaker to build man pages on cygwin. | |
430 | ||
431 | =item Improve rebase behaviour | |
432 | ||
433 | If a dll is updated on cygwin reuse the old imagebase address. | |
434 | This solves most rebase errors, esp when updating on core dll's. | |
435 | See L<http://www.tishler.net/jason/software/rebase/rebase-2.4.2.README> for more information. | |
436 | ||
437 | =item CYG14 Dynaloader without USEIMPORTLIB, and search cyg prefix | |
438 | ||
439 | Support the standard cyg dll prefix, which is e.g. needed for FFI's. | |
440 | Ctypes and C::DynaLib use DynaLoader to find dlls. | |
441 | ||
442 | With -DUSEIMPORTLIB DynaLoader symbols link against the prefixed | |
443 | symbol names for the .dll.a importlib, but we need to link against the | |
444 | symbols directly. We don't link Dynaloader against libperl.dll.a. | |
445 | ||
446 | =item Updated build hints file | |
447 | ||
448 | =back | |
449 | ||
450 | ||
1c90c725 | 451 | =item Solaris |
fb3a2d89 | 452 | |
1c90c725 FC |
453 | DTrace is now supported on Solaris. There used to be build failures, but |
454 | these have been fixed | |
455 | L<[perl #73630]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=73630>. | |
fb3a2d89 | 456 | |
3a5c9134 CBW |
457 | =back |
458 | ||
459 | =head1 Internal Changes | |
460 | ||
9f7a72d0 | 461 | =over 4 |
3a5c9134 | 462 | |
c61b6d0f FC |
463 | =item * |
464 | ||
0a0e3cc5 NC |
465 | The opcode bodies for C<chop> and C<chomp> and for C<schop> and C<schomp> have |
466 | been merged. The implementation functions C<Perl_do_chop()> and | |
467 | C<Perl_do_chomp()>, never part of the public API, have been merged and moved to | |
468 | a static function in F<pp.c>. This shrinks the perl binary slightly, and should | |
469 | not affect any code outside the core (unless it is relying on the order of side | |
470 | effects when C<chomp> is passed a I<list> of values). | |
c61b6d0f | 471 | |
6d4f9cf2 KW |
472 | =item * |
473 | ||
474 | Some of the flags parameters to the uvuni_to_utf8_flags() and | |
475 | utf8n_to_uvuni() have changed. This is a result of Perl now allowing | |
476 | internal storage and manipulation of code points that are problematic | |
477 | in some situations. Hence, the default actions for these functions has | |
478 | been complemented to allow these code points. The new flags are | |
479 | documented in L<perlapi>. Code that requires the problematic code | |
480 | points to be rejected needs to change to use these flags. Some flag | |
481 | names are retained for backward source compatibility, though they do | |
482 | nothing, as they are now the default. However the flags | |
483 | C<UNICODE_ALLOW_FDD0>, C<UNICODE_ALLOW_FFFF>, C<UNICODE_ILLEGAL>, and | |
484 | C<UNICODE_IS_ILLEGAL> have been removed, as they stem from a | |
485 | fundamentally broken model of how the Unicode non-character code points | |
486 | should be handled, which is now described in | |
487 | L<perlunicode/Non-character code points>. See also L</Selected Bug Fixes>. | |
488 | ||
a62b1201 KW |
489 | =item * |
490 | ||
491 | Certain shared flags in the C<pmop.op_pmflags> and C<regexp.extflags> | |
492 | structures have been removed. These are: C<Rxf_Pmf_LOCALE>, | |
493 | C<Rxf_Pmf_UNICODE>, and C<PMf_LOCALE>. Instead there are encodes and | |
494 | three static in-line functions for accessing the information: | |
495 | C<get_regex_charset()>, C<set_regex_charset()>, and C<get_regex_charset_name()>, | |
496 | which are defined in the places where the orginal flags were. | |
497 | ||
b030240b FC |
498 | =item * |
499 | ||
500 | A new option has been added to C<pv_escape> to dump all characters above | |
501 | ASCII in hexadecimal. Before, one could get all characters as hexadecimal | |
502 | or the Latin1 non-ASCII as octal | |
503 | ||
b16cfc56 | 504 | |
4dc93f40 JV |
505 | =item * |
506 | ||
507 | Generate pp_* prototypes in pp_proto.h, and remove pp.sym | |
b16cfc56 JV |
508 | |
509 | Eliminate the #define pp_foo Perl_pp_foo(pTHX) macros, and update the 13 | |
510 | locations that relied on them. | |
511 | ||
512 | regen/opcode.pl now generates prototypes for the PP functions directly, into | |
513 | pp_proto.h. It no longer writes pp.sym, and regen/embed.pl no longer reads | |
514 | this, removing the only ordering dependency in the regen scripts. opcode.pl | |
515 | is now responsible for prototypes for pp_* functions. (embed.pl remains | |
516 | responsible for ck_* functions, reading from regen/opcodes) | |
517 | ||
3a5c9134 CBW |
518 | =back |
519 | ||
520 | =head1 Selected Bug Fixes | |
521 | ||
9f7a72d0 | 522 | =over 4 |
4c9d53d5 | 523 | |
0c7420e7 FC |
524 | =item * |
525 | ||
6d4f9cf2 KW |
526 | The handling of Unicode non-characters has changed. |
527 | Previously they were mostly considered illegal, except that only one of | |
528 | the 66 of them was known about in places. The Unicode standard | |
529 | considers them legal, but forbids the "open interchange" of them. | |
530 | This is part of the change to allow the internal use of any code point | |
531 | (see L</Core Enhancements>). Together, these changes resolve | |
532 | L<# 38722|https://rt.perl.org/rt3/Ticket/Display.html?id=38722>, | |
533 | L<# 51918|http://rt.perl.org/rt3/Ticket/Display.html?id=51918>, | |
534 | L<# 51936|http://rt.perl.org/rt3/Ticket/Display.html?id=51936>, | |
535 | L<# 63446|http://rt.perl.org/rt3/Ticket/Display.html?id=63446> | |
0c7420e7 | 536 | |
f3fe4ed7 FC |
537 | =item * |
538 | ||
539 | Sometimes magic (ties, tainted, etc.) attached to variables could cause an | |
540 | object to last longer than it should, or cause a crash if a tied variable | |
541 | were freed from within a tie method. These have been fixed | |
542 | L<[perl #81230]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=81230>. | |
543 | ||
712ef7ca FC |
544 | =item * |
545 | ||
546 | Most I/O functions were not warning for unopened handles unless the | |
547 | 'closed' and 'unopened' warnings categories were both enabled. Now only | |
548 | C<use warnings 'unopened'> is necessary to trigger these warnings (as was | |
549 | always meant to be the case. | |
550 | ||
ecede56a FC |
551 | =item * |
552 | ||
553 | C<< <expr> >> always respects overloading now if the expression is | |
554 | overloaded. | |
555 | ||
556 | Due to the way that '<> as glob' was parsed differently from | |
557 | '<> as filehandle' from 5.6 onwards, something like C<< <$foo[0]> >> did | |
558 | not handle overloading, even if C<$foo[0]> was an overloaded object. This | |
559 | was contrary to the documentation for overload, and meant that C<< <> >> | |
560 | could not be used as a general overloaded iterator operator. | |
561 | ||
d4560299 FC |
562 | =item * |
563 | ||
564 | Destructors on objects were not called during global destruction on objects | |
565 | that were not referenced by any scalars. This could happen if an array | |
566 | element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a | |
567 | blessed variable (C<bless \my @a; sub foo { @a }>). | |
568 | ||
569 | Now there is an extra pass during global destruction to fire destructors on | |
570 | any objects that might be left after the usual passes that check for | |
571 | objects referenced by scalars | |
572 | L<[perl #36347]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=36347>. | |
573 | ||
7db1267d KW |
574 | =item * |
575 | ||
576 | A long standing bug has now been fully fixed (partial fixes came in | |
577 | earlier releases), in which some Latin-1 non-ASCII characters on | |
578 | ASCII-platforms would match both a character class and its complement, | |
579 | such as U+00E2 being both in C<\w> and C<\W>, depending on the | |
580 | UTF-8-ness of the regular expression pattern and target string. | |
581 | Fixing this did expose some bugs in various modules and tests that | |
582 | relied on the previous behavior of C<[[:alpha:]]> not ever matching | |
583 | U+00FF, "LATIN SMALL LETTER Y WITH DIAERESIS", even when it should, in | |
584 | Unicode mode; now it does match when appropriate. | |
585 | L<[perl #60156]|http://rt.perl.org/rt3/Ticket/Display.html?id=60156>. | |
586 | ||
9f7a72d0 | 587 | =back |
460c4bfb | 588 | |
9f7a72d0 | 589 | =head1 Known Problems |
460c4bfb | 590 | |
9f7a72d0 | 591 | =over 4 |
ab7fb400 | 592 | |
836d5805 Z |
593 | =item * |
594 | ||
d4560299 FC |
595 | The fix for [perl #81230] causes test failures for C<Tk> version 804.029. |
596 | This is still being investigated. | |
836d5805 | 597 | |
3a5c9134 CBW |
598 | =back |
599 | ||
9f7a72d0 | 600 | =head1 Acknowledgements |
b0c3724f | 601 | |
a682409c JV |
602 | Perl 5.13.8 represents approximately one month of development since Perl 5.13.7 |
603 | and contains approximately 48000 lines of changes across 809 files from 35 authors and committers: | |
604 | ||
605 | Abigail, Ævar Arnfjörð Bjarmason, brian d foy, Chris 'BinGOs' Williams, | |
606 | Craig A. Berry, David Golden, David Leadbeater, David Mitchell, Father | |
607 | Chrysostomos, Florian Ragwitz, Gerard Goossen, H.Merijn Brand, Jan | |
608 | Dubois, Jerry D. Hedden, Jesse Vincent, John Peacock, Karl Williamson, | |
609 | Leon Timmermans, Michael Parker, Michael Stevens, Nicholas Clark, | |
610 | Nuno Carvalho, Paul "LeoNerd" Evans, Peter J. Acklam, Peter Martini, | |
611 | Rainer Tammer, Reini Urban, Renee Baecker, Ricardo Signes, Robin Barker, | |
612 | Tony Cook, Vadim Konovalov, Vincent Pit, Zefram, and Zsbán Ambrus. | |
613 | ||
614 | Many of the changes included in this version originated in the CPAN | |
615 | modules included in Perl's core. We're grateful to the entire CPAN | |
616 | community for helping Perl to flourish. | |
3a5c9134 CBW |
617 | |
618 | =head1 Reporting Bugs | |
a682409c | 619 | =head1 Reporting Bugs |
3a5c9134 CBW |
620 | |
621 | If you find what you think is a bug, you might check the articles | |
622 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
623 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
624 | information at http://www.perl.org/ , the Perl Home Page. | |
625 | ||
626 | If you believe you have an unreported bug, please run the L<perlbug> | |
627 | program included with your release. Be sure to trim your bug down | |
628 | to a tiny but sufficient test case. Your bug report, along with the | |
629 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
630 | analysed by the Perl porting team. | |
631 | ||
632 | If the bug you are reporting has security implications, which make it | |
633 | inappropriate to send to a publicly archived mailing list, then please send | |
634 | it to perl5-security-report@perl.org. This points to a closed subscription | |
635 | unarchived mailing list, which includes all the core committers, who be able | |
636 | to help assess the impact of issues, figure out a resolution, and help | |
637 | co-ordinate the release of patches to mitigate or fix the problem across all | |
638 | platforms on which Perl is supported. Please only use this address for | |
639 | security issues in the Perl core, not for modules independently | |
640 | distributed on CPAN. | |
641 | ||
642 | =head1 SEE ALSO | |
643 | ||
644 | The F<Changes> file for an explanation of how to view exhaustive details | |
645 | on what changed. | |
646 | ||
647 | The F<INSTALL> file for how to build Perl. | |
648 | ||
649 | The F<README> file for general stuff. | |
650 | ||
651 | The F<Artistic> and F<Copying> files for copyright information. | |
652 | ||
653 | =cut | |
e0b8b6f1 JV |
654 | |
655 | =for later | |
656 | ||
657 | Below, you'll find a cut-down version of the git log from 5.13.8 to 1b9043bb. | |
e0b8b6f1 | 658 | |
e0b8b6f1 | 659 | =cut |