This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: warnings on non-chars and surrogates
[perl5.git] / pod / perldelta.pod
CommitLineData
3a5c9134
CBW
1=encoding utf8
2
3=head1 NAME
4
9f7a72d0
Z
5[ this is a template for a new perldelta file. Any text flagged as
6XXX needs to be processed before release. ]
3a5c9134 7
9f7a72d0 8perldelta - what is new for perl v5.13.9
15e6cdd9 9
9f7a72d0 10=head1 DESCRIPTION
f6166f76 11
9f7a72d0
Z
12This document describes differences between the 5.13.8 release and
13the 5.13.9 release.
0d157ee2 14
9f7a72d0
Z
15If you are upgrading from an earlier release such as 5.13.7, first read
16L<perl5138delta>, which describes differences between 5.13.7 and
175.13.8.
0d157ee2 18
9f7a72d0 19=head1 Notice
0d157ee2 20
9f7a72d0 21XXX Any important notices here
0d157ee2 22
9f7a72d0 23=head1 Core Enhancements
0d157ee2 24
9f7a72d0
Z
25XXX New core language features go here. Summarise user-visible core language
26enhancements. Particularly prominent performance optimisations could go
27here, but most should go in the L</Performance Enhancements> section.
0d157ee2 28
086325d8
KW
29[ List each enhancement as a =head2 entry ]
30
cfaf538b
KW
31=head2 New regular expression modifier C</a>
32
33The C</a> regular expression modifier restricts C<\s> to match precisely
34the five characters C<[ \f\n\r\t]>, C<\d> to match precisely the 10
35characters C<[0-9]>, C<\w> to match precisely the 63 characters
36C<[A-Za-z0-9_]>, and the Posix (C<[[:posix:]]>) character classes to
37match only the appropriate ASCII characters. The complements, of
38course, match everything but; and C<\b> and C<\B> are correspondingly
39affected. Otherwise, C</a> behaves like the C</u> modifier, in that
40case-insensitive matching uses Unicode semantics; for example, "k" will
41match the Unicode C<\N{KELVIN SIGN}> under C</i> matching, and code
42points in the Latin1 range, above ASCII will have Unicode semantics when
43it comes to case-insensitive matching. Like its cousins (C</u>, C</l>,
44and C</d>), and in spite of the terminology, C</a> in 5.14 will not
45actually be able to be used as a suffix at the end of a regular
46expression (this restriction is planned to be lifted in 5.16). It must
47occur either as an infix modifier, such as C<(?a:...)> or (C<(?a)...>,
48or it can be turned on within the lexical scope of C<use re '/a'>.
49Turning on C</a> turns off the other "character set" modifiers.
50
086325d8
KW
51=head2 Any unsigned value can be encoded as a character
52
6d4f9cf2 53With this release, Perl is adopting a model that any unsigned value can
086325d8
KW
54be treated as a code point and encoded internally (as utf8) without
55warnings -- not just the code points that are legal in Unicode.
56However, unless utf8 warnings have been
6d4f9cf2
KW
57explicitly lexically turned off, outputting or performing a
58Unicode-defined operation (such as upper-casing) on such a code point
59will generate a warning. Attempting to input these using strict rules
60(such as with the C<:encoding('UTF-8')> layer) will continue to fail.
61Prior to this release the handling was very inconsistent, and incorrect
62in places. Also, the Unicode non-characters, some of which previously were
63erroneously considered illegal in places by Perl, contrary to the Unicode
64standard, are now always legal internally. But inputting or outputting
65them will work the same as for the non-legal Unicode code points, as the
66Unicode standard says they are illegal for "open interchange".
67
15555e2d
FC
68=head2 Regular expression debugging output improvement
69
70Regular expression debugging output (turned on by C<use re 'debug';>) now
71uses hexadecimal when escaping non-ASCII characters, instead of octal.
0d157ee2 72
9f7a72d0 73=head1 Security
0d157ee2 74
9f7a72d0
Z
75XXX Any security-related notices go here. In particular, any security
76vulnerabilities closed should be noted here rather than in the
77L</Selected Bug Fixes> section.
bd8e866d 78
9f7a72d0 79[ List each security issue as a =head2 entry ]
bd8e866d 80
3a5c9134
CBW
81=head1 Incompatible Changes
82
9f7a72d0 83XXX For a release on a stable branch, this section aspires to be:
3a5c9134 84
9f7a72d0
Z
85 There are no changes intentionally incompatible with 5.XXX.XXX. If any
86 exist, they are bugs and reports are welcome.
3a5c9134 87
9f7a72d0 88[ List each incompatible change as a =head2 entry ]
d66e82e8 89
d4560299
FC
90=head2 All objects are destroyed
91
92It used to be possible to prevent a destructor from being called during
93global destruction by artificially increasing the reference count of an
94object.
95
96Now such objects I<will> will be destroyed, as a result of a bug fix
97L<[perl #81230]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=81230>.
98
99This has the potential to break some XS modules. (In fact, it break some.
100See L</Known Problems>, below.)
101
3a5c9134
CBW
102=head1 Deprecations
103
9f7a72d0
Z
104XXX Any deprecated features, syntax, modules etc. should be listed here.
105In particular, deprecated modules should be listed here even if they are
106listed as an updated module in the L</Modules and Pragmata> section.
5609d5f9 107
9f7a72d0 108[ List each deprecation as a =head2 entry ]
5609d5f9 109
9f7a72d0 110=head1 Performance Enhancements
5609d5f9 111
9f7a72d0
Z
112XXX Changes which enhance performance without changing behaviour go here. There
113may well be none in a stable release.
5609d5f9 114
9f7a72d0 115[ List each enhancement as a =item entry ]
3a5c9134
CBW
116
117=over 4
118
119=item *
120
9f7a72d0 121XXX
e1165778 122
9f7a72d0 123=back
121e1895 124
9f7a72d0 125=head1 Modules and Pragmata
2638c0ff 126
9f7a72d0
Z
127XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
128go here. If Module::CoreList is updated, generate an initial draft of the
129following sections using F<Porting/corelist-perldelta.pl>, which prints stub
130entries to STDOUT. Results can be pasted in place of the '=head2' entries
131below. A paragraph summary for important changes should then be added by hand.
132In an ideal world, dual-life modules would have a F<Changes> file that could be
133cribbed.
2638c0ff 134
9f7a72d0 135[ Within each section, list entries as a =item entry ]
17096837 136
9f7a72d0 137=head2 New Modules and Pragmata
2638c0ff 138
9f7a72d0 139=over 4
17096837 140
e1165778
Z
141=item *
142
0b5d8c02 143L<CPAN::Meta::YAML> 0.003 has been added as a dual-life module. It supports a
e8a07a12
DG
144subset of YAML sufficient for reading and writing META.yml and MYMETA.yml files
145included with CPAN distributions or generated by the module installation
146toolchain. It should not be used for any other general YAML parsing or
147generation task.
17096837 148
935c8d19
DG
149=item *
150
435aa301 151L<HTTP::Tiny> 0.009 has been added as a dual-life module. It is a very
a3ab329f
DG
152small, simple HTTP/1.1 client designed for simple GET requests and file
153mirroring. It has has been added to enable CPAN.pm and CPANPLUS to
154"bootstrap" HTTP access to CPAN using pure Perl without relying on external
155binaries like F<curl> or F<wget>.
156
157=item *
158
6def3600
FC
159L<JSON::PP> 2.27103 has been added as a dual-life module, for the sake of
160reading F<META.json> files in CPAN distributions.
161
162=item *
163
6cf6332a 164L<Module::Metadata> 1.000003 has been added as a dual-life module. It gathers
e8b333e6
DG
165package and POD information from Perl module files. It is a standalone module
166based on Module::Build::ModuleInfo for use by other module installation
167toolchain components. Module::Build::ModuleInfo has been deprecated in
168favor of this module instead.
169
170=item *
171
935c8d19
DG
172L<Perl::OSType> 1.002 has been added as a dual-life module. It maps Perl
173operating system names (e.g. 'dragonfly' or 'MSWin32') to more generic types
174with standardized names (e.g. "Unix" or "Windows"). It has been refactored
175out of Module::Build and ExtUtils::CBuilder and consolidates such mappings into
176a single location for easier maintenance.
177
9f7a72d0 178=back
e1165778 179
9f7a72d0 180=head2 Updated Modules and Pragmata
f295f417 181
9f7a72d0 182=over 4
17096837 183
f295f417
FC
184=item *
185
6447e912
CBW
186C<Archive::Extract> has been upgraded from version 0.46 to 0.48
187
188=item *
189
89ae55b4
CBW
190C<Archive::Tar> has been upgraded from version 1.74 to 1.76
191
192=item *
193
2a1594f6
CBW
194C<CGI> has been upgraded from version 3.50 to 3.51
195
79e1bedb
FC
196Further improvements have been made to guard against newline injections
197in headers.
198
2a1594f6 199=item *
5ebf8416
CBW
200
201C<Compress::Raw::Bzip2> has been upgraded from version 2.031 to 2.033
202
203=item *
e2f1db54
CBW
204
205C<Compress::Raw::Zlib> has been upgraded from version 2.030 to 2.033
206
207=item *
2a1594f6 208
a52237f3
DG
209C<CPAN> has been upgraded from version 1.94_62 to 1.94_63
210
211=item *
212
f1aaabf8
CBW
213C<CPANPLUS> has been upgraded from version 0.9010 to 0.9011
214
215=item *
216
ae0f8eee
CBW
217C<CPANPLUS::Dist::Build> has been upgraded from version 0.50 to 0.52
218
219=item *
220
221C<DB_File> has been upgraded from version 1.820 to 1.821
deb99cce
CBW
222
223=item *
224
6d4f9cf2
KW
225C<Encode> has been upgraded from version 2.40 to 2.42.
226Now, all 66 Unicode non-characters are treated the same way U+FFFF has
227always been treated; if it was disallowed, all 66 are disallowed; if it
228warned, all 66 warn.
50afc8f8
CBW
229
230=item *
231
eee47ba6 232C<File::Fetch> has been upgraded from version 0.28 to 0.32
f37ee46a
CBW
233
234=item *
235
cd0c0e65
CBW
236C<IO::Compress> has been upgraded from version 2.030 to 2.033
237
238=item *
239
f37ee46a
CBW
240C<IPC::Cmd> has been upgraded from version 0.66 to 0.68
241
ac066c2a
CBW
242=item *
243
b5ce1198
CBW
244C<Log::Message> has been upgraded from version 0.02 to 0.04
245
246=item *
247
c0395286
CBW
248C<Log::Message::Simple> has been upgraded from version 0.06 to 0.08
249
250=item *
251
ae0f8eee 252C<Module::Load::Conditional> has been upgraded from version 0.38 to 0.40
4fc94532
CBW
253
254=item *
255
ae0f8eee 256C<Object::Accessor> has been upgraded from version 0.36 to 0.38
0019012a
CBW
257
258=item *
259
ae0f8eee 260C<Params::Check> has been upgraded from version 0.26 to 0.28
8cb3aa53
CBW
261
262=item *
263
9c88a88b
CBW
264C<Pod::LaTeX> has been upgraded from version 0.58 to 0.59
265
266=item *
267
6df88f97 268C<Term::UI> has been upgraded from version 0.20 to 0.24
8e1e0801
CBW
269
270=item *
271
4df1dffa
FC
272C<Thread::Queue> has been upgraded from version 2.11 to 2.12.
273
274=item *
275
276C<Thread::Semaphore> has been upgraded from version 2.11 to 2.12.
277
278=item *
279
f5d41534
CBW
280C<threads> has been upgraded from version 1.81_03 to 1.82
281
282=item *
283
284C<threads::shared> has been upgraded from version 1.35 to 1.36
285
286=item *
287
23046b7e 288C<Time::Local> has been upgraded from version 1.1901_01 to 1.2000.
17096837 289
788ba0f4
CBW
290=item *
291
292C<Unicode::Normalize> has been upgraded from version 1.07 to 1.10
293
98d645a7
FC
294=item *
295
296C<version> has been upgraded from 0.86 to 0.88.
297
9f7a72d0 298=back
e1165778 299
9f7a72d0 300=head2 Removed Modules and Pragmata
b373eab8 301
9f7a72d0 302=over 4
b373eab8
FC
303
304=item *
305
9f7a72d0 306XXX
b6ae81ab 307
9f7a72d0 308=back
ca88a729 309
9f7a72d0 310=head1 Documentation
17096837 311
9f7a72d0
Z
312XXX Changes to files in F<pod/> go here. Consider grouping entries by
313file and be sure to link to the appropriate page, e.g. L<perlfunc>.
b6ae81ab 314
9f7a72d0 315=head2 New Documentation
e1165778 316
9f7a72d0 317XXX Changes which create B<new> files in F<pod/> go here.
17096837 318
9f7a72d0 319=head3 L<XXX>
e1165778 320
9f7a72d0 321XXX Description of the purpose of the new file here
e1165778 322
9f7a72d0 323=head2 Changes to Existing Documentation
17096837 324
9f7a72d0
Z
325XXX Changes which significantly change existing files in F<pod/> go here.
326However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
327section.
e1165778 328
0d7fe741 329=head3 L<perlfunc>
d4238815 330
9f7a72d0 331=over 4
17096837 332
d4238815
FC
333=item *
334
0d7fe741 335It has now been documented that C<ord> returns 0 for an empty string.
e1165778 336
9f7a72d0 337=back
17096837 338
9f7a72d0 339=head1 Diagnostics
17096837 340
9f7a72d0
Z
341The following additions or changes have been made to diagnostic output,
342including warnings and fatal error messages. For the complete list of
343diagnostic messages, see L<perldiag>.
e1165778 344
9f7a72d0
Z
345XXX New or changed warnings emitted by the core's C<C> code go here. Also
346include any changes in L<perldiag> that reconcile it to the C<C> code.
68adb2b0 347
9f7a72d0 348[ Within each section, list entries as a =item entry ]
17096837 349
9f7a72d0 350=head2 New Diagnostics
3a5c9134 351
9f7a72d0 352XXX Newly added diagnostic messages go here
17096837 353
9f7a72d0 354=over 4
17096837 355
c2e0289e
FC
356=item *
357
26b3f088
FC
358Performing an operation requiring Unicode semantics (such as case-folding)
359on a Unicode surrogate or a non-Unicode character now triggers a warning:
360'Operation "%s" returns its argument for ...'.
17096837 361
9f7a72d0 362=back
e6f1cc4d 363
9f7a72d0 364=head2 Changes to Existing Diagnostics
e1165778 365
9f7a72d0 366XXX Changes (i.e. rewording) of diagnostic messages go here
17096837 367
9f7a72d0 368=over 4
17096837 369
e1165778
Z
370=item *
371
9f7a72d0 372XXX
17096837 373
3a5c9134
CBW
374=back
375
9f7a72d0 376=head1 Utility Changes
e1165778 377
9f7a72d0
Z
378XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go
379here. Most of these are built within the directories F<utils> and F<x2p>.
e1165778 380
9f7a72d0
Z
381[ List utility changes as a =head3 entry for each utility and =item
382entries for each change
383Use L<XXX> with program names to get proper documentation linking. ]
e1165778 384
fcc3a61f 385=head3 L<perlbug>
e1165778 386
9f7a72d0 387=over 4
e1165778
Z
388
389=item *
390
fcc3a61f
FC
391C<perlbug> did not previously generate a From: header, potentially
392resulting in dropped mail. Now it does include that header.
e1165778 393
9f7a72d0 394=back
e1165778 395
9f7a72d0 396=head1 Configuration and Compilation
e1165778 397
9f7a72d0
Z
398XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
399go here. Any other changes to the Perl build process should be listed here.
400However, any platform-specific changes should be listed in the
401L</Platform Support> section, instead.
e1165778 402
9f7a72d0 403[ List changes as a =item entry ].
e1165778 404
9f7a72d0 405=over 4
3a5c9134
CBW
406
407=item *
408
9f7a72d0 409XXX
3a5c9134
CBW
410
411=back
412
9f7a72d0 413=head1 Testing
3a5c9134 414
9f7a72d0
Z
415XXX Any significant changes to the testing of a freshly built perl should be
416listed here. Changes which create B<new> files in F<t/> go here as do any
417large changes to the testing harness (e.g. when parallel testing was added).
418Changes to existing files in F<t/> aren't worth summarising, although the bugs
419that they represent may be covered elsewhere.
3a5c9134 420
9f7a72d0 421[ List each test improvement as a =item entry ]
3a5c9134 422
3a5c9134
CBW
423=over 4
424
425=item *
426
4d1face8
FC
427A new test script, C<t/porting/filenames.t>, makes sure that filenames and
428paths are reasonably portable.
3a5c9134
CBW
429
430=back
431
9f7a72d0 432=head1 Platform Support
3a5c9134 433
9f7a72d0 434XXX Any changes to platform support should be listed in the sections below.
3a5c9134 435
9f7a72d0
Z
436[ Within the sections, list each platform as a =item entry with specific
437changes as paragraphs below it. ]
3a5c9134 438
9f7a72d0 439=head2 New Platforms
3a5c9134 440
9f7a72d0
Z
441XXX List any platforms that this version of perl compiles on, that previous
442versions did not. These will either be enabled by new files in the F<hints/>
443directories, or new subdirectories and F<README> files at the top level of the
444source tree.
3a5c9134 445
3a5c9134
CBW
446=over 4
447
9f7a72d0 448=item XXX-some-platform
3a5c9134 449
9f7a72d0 450XXX
51bed910 451
3a5c9134
CBW
452=back
453
9f7a72d0
Z
454=head2 Discontinued Platforms
455
456XXX List any platforms that this version of perl no longer compiles on.
3a5c9134 457
3a5c9134
CBW
458=over 4
459
7c53e0a1 460=item Apollo DomainOS
3a5c9134 461
7c53e0a1
FC
462The last vestiges of support for this platform have been excised from the
463Perl distribution. It was officially discontinued in version 5.12.0. It had
464not worked for years before that.
3a5c9134
CBW
465
466=back
467
3a5c9134
CBW
468=head2 Platform-Specific Notes
469
9f7a72d0
Z
470XXX List any changes for specific platforms. This could include configuration
471and compilation changes or changes in portability/compatibility. However,
472changes within modules for platforms should generally be listed in the
473L</Modules and Pragmata> section.
3a5c9134 474
9f7a72d0 475=over 4
3a5c9134 476
1c90c725 477=item Solaris
fb3a2d89 478
1c90c725
FC
479DTrace is now supported on Solaris. There used to be build failures, but
480these have been fixed
481L<[perl #73630]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=73630>.
fb3a2d89 482
3a5c9134
CBW
483=back
484
485=head1 Internal Changes
486
9f7a72d0
Z
487XXX Changes which affect the interface available to C<XS> code go here.
488Other significant internal changes for future core maintainers should
489be noted as well.
3a5c9134 490
9f7a72d0 491[ List each test improvement as a =item entry ]
3a5c9134 492
9f7a72d0 493=over 4
3a5c9134 494
c61b6d0f
FC
495=item *
496
0a0e3cc5
NC
497The opcode bodies for C<chop> and C<chomp> and for C<schop> and C<schomp> have
498been merged. The implementation functions C<Perl_do_chop()> and
499C<Perl_do_chomp()>, never part of the public API, have been merged and moved to
500a static function in F<pp.c>. This shrinks the perl binary slightly, and should
501not affect any code outside the core (unless it is relying on the order of side
502effects when C<chomp> is passed a I<list> of values).
c61b6d0f 503
6d4f9cf2
KW
504=item *
505
506Some of the flags parameters to the uvuni_to_utf8_flags() and
507utf8n_to_uvuni() have changed. This is a result of Perl now allowing
508internal storage and manipulation of code points that are problematic
509in some situations. Hence, the default actions for these functions has
510been complemented to allow these code points. The new flags are
511documented in L<perlapi>. Code that requires the problematic code
512points to be rejected needs to change to use these flags. Some flag
513names are retained for backward source compatibility, though they do
514nothing, as they are now the default. However the flags
515C<UNICODE_ALLOW_FDD0>, C<UNICODE_ALLOW_FFFF>, C<UNICODE_ILLEGAL>, and
516C<UNICODE_IS_ILLEGAL> have been removed, as they stem from a
517fundamentally broken model of how the Unicode non-character code points
518should be handled, which is now described in
519L<perlunicode/Non-character code points>. See also L</Selected Bug Fixes>.
520
a62b1201
KW
521=item *
522
523Certain shared flags in the C<pmop.op_pmflags> and C<regexp.extflags>
524structures have been removed. These are: C<Rxf_Pmf_LOCALE>,
525C<Rxf_Pmf_UNICODE>, and C<PMf_LOCALE>. Instead there are encodes and
526three static in-line functions for accessing the information:
527C<get_regex_charset()>, C<set_regex_charset()>, and C<get_regex_charset_name()>,
528which are defined in the places where the orginal flags were.
529
b030240b
FC
530=item *
531
532A new option has been added to C<pv_escape> to dump all characters above
533ASCII in hexadecimal. Before, one could get all characters as hexadecimal
534or the Latin1 non-ASCII as octal
535
3a5c9134
CBW
536=back
537
538=head1 Selected Bug Fixes
539
9f7a72d0
Z
540XXX Important bug fixes in the core language are summarised here.
541Bug fixes in files in F<ext/> and F<lib/> are best summarised in
542L</Modules and Pragmata>.
b373eab8 543
9f7a72d0 544[ List each fix as a =item entry ]
b373eab8 545
9f7a72d0 546=over 4
4c9d53d5 547
0c7420e7
FC
548=item *
549
6d4f9cf2
KW
550The handling of Unicode non-characters has changed.
551Previously they were mostly considered illegal, except that only one of
552the 66 of them was known about in places. The Unicode standard
553considers them legal, but forbids the "open interchange" of them.
554This is part of the change to allow the internal use of any code point
555(see L</Core Enhancements>). Together, these changes resolve
556L<# 38722|https://rt.perl.org/rt3/Ticket/Display.html?id=38722>,
557L<# 51918|http://rt.perl.org/rt3/Ticket/Display.html?id=51918>,
558L<# 51936|http://rt.perl.org/rt3/Ticket/Display.html?id=51936>,
559L<# 63446|http://rt.perl.org/rt3/Ticket/Display.html?id=63446>
0c7420e7 560
f3fe4ed7
FC
561=item *
562
563Sometimes magic (ties, tainted, etc.) attached to variables could cause an
564object to last longer than it should, or cause a crash if a tied variable
565were freed from within a tie method. These have been fixed
566L<[perl #81230]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=81230>.
567
712ef7ca
FC
568=item *
569
570Most I/O functions were not warning for unopened handles unless the
571'closed' and 'unopened' warnings categories were both enabled. Now only
572C<use warnings 'unopened'> is necessary to trigger these warnings (as was
573always meant to be the case.
574
ecede56a
FC
575=item *
576
577C<< <expr> >> always respects overloading now if the expression is
578overloaded.
579
580Due to the way that '<> as glob' was parsed differently from
581'<> as filehandle' from 5.6 onwards, something like C<< <$foo[0]> >> did
582not handle overloading, even if C<$foo[0]> was an overloaded object. This
583was contrary to the documentation for overload, and meant that C<< <> >>
584could not be used as a general overloaded iterator operator.
585
d4560299
FC
586=item *
587
588Destructors on objects were not called during global destruction on objects
589that were not referenced by any scalars. This could happen if an array
590element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
591blessed variable (C<bless \my @a; sub foo { @a }>).
592
593Now there is an extra pass during global destruction to fire destructors on
594any objects that might be left after the usual passes that check for
595objects referenced by scalars
596L<[perl #36347]|http://rt.perl.org/rt3/Public/Bug/Display.html?id=36347>.
597
9f7a72d0 598=back
460c4bfb 599
9f7a72d0 600=head1 Known Problems
460c4bfb 601
9f7a72d0
Z
602XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
603tests that had to be C<TODO>ed for the release would be noted here, unless
604they were specific to a particular platform (see below).
26de4ac8 605
9f7a72d0
Z
606This is a list of some significant unfixed bugs, which are regressions
607from either 5.XXX.XXX or 5.XXX.XXX.
26de4ac8 608
9f7a72d0 609[ List each fix as a =item entry ]
ab7fb400 610
9f7a72d0 611=over 4
ab7fb400 612
836d5805
Z
613=item *
614
d4560299
FC
615The fix for [perl #81230] causes test failures for C<Tk> version 804.029.
616This is still being investigated.
836d5805 617
3a5c9134
CBW
618=back
619
9f7a72d0 620=head1 Obituary
3a5c9134 621
9f7a72d0
Z
622XXX If any significant core contributor has died, we've added a short obituary
623here.
b0c3724f 624
9f7a72d0 625=head1 Acknowledgements
b0c3724f 626
9f7a72d0 627XXX The list of people to thank goes here.
3a5c9134
CBW
628
629=head1 Reporting Bugs
630
631If you find what you think is a bug, you might check the articles
632recently posted to the comp.lang.perl.misc newsgroup and the perl
633bug database at http://rt.perl.org/perlbug/ . There may also be
634information at http://www.perl.org/ , the Perl Home Page.
635
636If you believe you have an unreported bug, please run the L<perlbug>
637program included with your release. Be sure to trim your bug down
638to a tiny but sufficient test case. Your bug report, along with the
639output of C<perl -V>, will be sent off to perlbug@perl.org to be
640analysed by the Perl porting team.
641
642If the bug you are reporting has security implications, which make it
643inappropriate to send to a publicly archived mailing list, then please send
644it to perl5-security-report@perl.org. This points to a closed subscription
645unarchived mailing list, which includes all the core committers, who be able
646to help assess the impact of issues, figure out a resolution, and help
647co-ordinate the release of patches to mitigate or fix the problem across all
648platforms on which Perl is supported. Please only use this address for
649security issues in the Perl core, not for modules independently
650distributed on CPAN.
651
652=head1 SEE ALSO
653
654The F<Changes> file for an explanation of how to view exhaustive details
655on what changed.
656
657The F<INSTALL> file for how to build Perl.
658
659The F<README> file for general stuff.
660
661The F<Artistic> and F<Copying> files for copyright information.
662
663=cut
e0b8b6f1
JV
664
665=for later
666
667Below, you'll find a cut-down version of the git log from 5.13.8 to 1b9043bb.
668Jesse went through and took a first pass at cutting out non-changelog items. He may have been over-(or under-)zealous.
669
670It hasn't yet been deduped with the entries that _are_ in the perldelta.
671
672
673 Major spell-checking pass throughout the core
674
675 Remove references to compat3.sym and interp.sym, deleted over 10 years ago.
676
677 Remove Mac OS classic code from numerous places throughout the core
678
e0b8b6f1
JV
679commit 7fe50b8b8a4dc38fc341e3b403545aaca937f50e
680Author: Leon Timmermans <fawaka@gmail.com>
681Date: Tue Jan 18 16:40:07 2011 +0100
682
683 Also unblock signal handlers throwing an exception
684
685 Also handle and test the edge case of a signal handler throwing an
686 exception
687
688
689
690
691Numberous POD warnings fixed
692
693
694
695 Update Unicode-Collate to CPAN version 0.71
696
697
698internals
699
700
701 regexec.c: Remove break statements from macros
702
703 This is so future coders won't be tempted to rely on them.
704
705 regexec.c: Don't rely on break stmts in macros
706
707 It is safer and clearer to have the break statement in each case statement at
708 the source level
709
710commit b57e41186b2ceb48bef4f0588dcd19e105cc8a38
711Author: Karl Williamson <public@khwilliamson.com>
712Date: Tue Jan 18 15:03:41 2011 -0700
713
714 regcomp: Disallow multi-char folds in lookbehind
715
716 The addition of the ANYOFV regnode to treat multi-char folds in a bracketed
717 character class has exposed a bug, in which those classes have long been able
718 to be varying length (due to the multi-char fold), but the compiler wasn't
719 aware of it. Now it is, and hence won't allow those which have multi-char
720 folds to be part of a lookbehind pattern, which requires a constant length.
721
722 This patch disallows multi-char folds in a lookbehind bracketed character
723 class.
724
725Author: Nicholas Clark <nick@ccl4.org>
726Date: Tue Jan 18 16:14:43 2011 +0000
727
728 Remove Mac OS classic code from scripts in utils/
729
730
731 Convert DosGlob.t to Test::More.
732
733commit d6dc8a6dc95226ddff7719cd1e0bd053c4e5725e
734Author: Nicholas Clark <nick@ccl4.org>
735Date: Tue Jan 18 13:08:11 2011 +0000
736
737 Remove Mac OS Classic docs from DirHandle and File::{Copy,DosGlob,Find}
738
739 The documentation for the different behaviour on Mac OS Classic was not
740 removed when the relevant code was removed in 862f843bac3434c2. That commit
741 also remove all callers to several Mac OS classic support functions, but not
742 the functions themselves. Rectify this.
743
744commit 8254cbf193c939338449097a80163197fc755150
745Author: Nicholas Clark <nick@ccl4.org>
746Date: Tue Jan 18 11:10:41 2011 +0000
747
748 Build perltoc.pod with pragmata sorted by name.
749
750 Previously they were actually sorted by full pathname, which isn't logical.
751 I presume that this is an artefact of all pragmata being in lib/ when
752 pod/buildtoc was originally written.
753
754commit 1d45ec279e4e105512a2803e3d0bd974a151a0f6
755Author: Father Chrysostomos <sprout@cpan.org>
756Date: Mon Jan 17 22:32:52 2011 -0800
757
758 perlcall: Fixes for various grammatical errors
759
760commit faaf68361923e4bb95d1eb919bc724a0dcc5a4ce
761Author: Leon Timmermans <fawaka@gmail.com>
762Date: Mon Jan 17 17:59:33 2011 +0100
763
764 Clarify limitation in safe signals.
765
766commit 0c1bf4c7d433bb0ad80bfe5511b1301db32b7b95
767Author: Leon Timmermans <fawaka@gmail.com>
768Date: Mon Jan 17 16:29:11 2011 +0100
769
770 Added tests for conditional unblocking
771
772commit 555344425f04e96a72e4d29eab96b34bff8f96ae
773Author: Leon Timmermans <fawaka@gmail.com>
774Date: Thu Jan 13 18:30:29 2011 +0100
775
776 Conditionally unblock after signal handler[#82040]
777
778 Only unblock signal after a safe-signal handler is executed if that signal was
779 also unblocked before the handler.
780commit 435aa301127ed481169903cb35187bde1ea44928
781Author: David Golden <dagolden@cpan.org>
782Date: Mon Jan 17 20:39:14 2011 -0500
783
784 Update HTTP::Tiny to CPAN version 0.009
785
786commit 78cd53afbb1923bf0a68f361040ad8fe93a7d0d5
787Author: David Mitchell <davem@iabyn.com>
788Date: Tue Jan 18 00:46:30 2011 +0000
789
790 vastly speed up t/porting/diag.t
791
792 This used to take about 3 minutes of CPU. Reduce this to around
793 6 seconds (!!) by coalescing and pre-compiling various patterns
794 that get applied to nearly every line of every source file.
795
796commit cfaf538b6276c6a8ef80ff6c66e106c6a4f1caaa
797Author: Karl Williamson <public@khwilliamson.com>
798Date: Mon Jan 17 08:58:53 2011 -0700
799
800 Add /a regex modifier
801
802 This restricts certain constructs, like \w, to matching in the ASCII range only.
803
804commit 56ae17b45d2513d65903d13468e8f6a16b20f916
805Author: Karl Williamson <public@khwilliamson.com>
806Date: Sun Jan 16 17:41:30 2011 -0700
807
808 regcomp.c: Convert \d \D to a switch{}
809
e0b8b6f1
JV
810commit e66820012d29519f903709f005e56a2c334ae183
811Author: Tony Cook <tony@develop-help.com>
812Date: Mon Jan 17 19:22:08 2011 +1100
813
814 test_prep now depends on the pods needed for porting/buildtoc.t
815
816 In the other makefiles test_prep (or test-prep) depends on all, so
817 they shouldn't need updating.
818
819
820commit a52237f3a547cdefddd4c4be6224bfdf67c84263
821Author: David Golden <dagolden@cpan.org>
822Date: Sun Jan 16 21:32:21 2011 -0500
823
824 Update CPAN to CPAN version 1.94_63
825
826commit 63ac0dadb1aafcf0c171d3c1422c1923b611b2fc
827Author: Karl Williamson <public@khwilliamson.com>
828Date: Tue Dec 28 16:13:49 2010 -0700
829
830 regex: Use BOUNDU regnodes
831
832 This refactors one area in regexec.c to use BOUNDU, NBOUNDU for
833 efficiciency, and easier adding of the future BOUNDA.
834
835commit 980866de2cf8ecdb4bb72b7f9294763057008f50
836Author: Karl Williamson <public@khwilliamson.com>
837Date: Mon Dec 27 12:04:58 2010 -0700
838
839 regex: Separate nodes for Unicode semantics \s \w
840
841 This patch converts the \s, \w and complements Unicode semantics to
842 instead of using the flags field of their nodes to instead use separate
843 nodes. This gains some efficiency, especially useful in tight loops and
844 backtracking of regexec.c, and prepares the way for easily adding other
845 semantic variations, such as /a.
846
847 It refactors the CCC_TRY... macros. I tried to break this piece up into
848 smaller chunks, but found it much easier to get to this in one step.
849 Further patches will do some more refactoring of these.
850
851 As part of the CCC_TRY macro refactoring, the lines that include the
852 test if (! nextchr) are changed to just look for the end-of-string by
853 position instead of it being NUL. In locales, it could be (however
854 unlikely), that NUL is a real alphabetic, digit, or space character.
855commit 50e911483ad5c29e25c54c9f81f92df974dd2cc0
856Author: Karl Williamson <public@khwilliamson.com>
857Date: Sun Dec 26 10:35:58 2010 -0700
858
859 Change name of /d to DEPENDS
860
861 I much prefer David Golden's name for /d whose meaning 'depends' on
862 circumstances, instead of 'dual' meaning it could be one or another.
863 Change it before this gets out in a stable release, and we're stuck with
864 the old name.
865
866commit 73134a2eb4055c76fe5b154da95e09118f716fd8
867Author: Karl Williamson <public@khwilliamson.com>
868Date: Sun Dec 26 10:35:20 2010 -0700
869
870 CH] Change usage of regex/op common to common names
871
872 This patch changes the core functions to use the common names for the
873 fields that are shared between op.c and regcomp.c, just for consistency
874 of using one name throughout the core for the same thing.
875
876 A grep of cpan shows that both names are used in various modules; so
877 both names must be retained.
878
879commit a3ab329f3fc9494e700f51c38cef42021c130b6e
880Author: David Golden <dagolden@cpan.org>
881Date: Sun Jan 16 20:57:02 2011 -0500
882
883 Add HTTP::Tiny as a dual-life core module
884
885 HTTP::Tiny has been added as a dual-life module. It is a very
886 small, simple HTTP/1.1 client designed for simple GET requests and file
887 mirroring. It has has been added to enable CPAN.pm and CPANPLUS to
888 "bootstrap" HTTP access to CPAN using pure Perl without relying on external
889 binaries like F<curl> or F<wget>.
890
891commit 211cc5012284f4bd900fcaa630adbcac69ca6112
892Author: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
893Date: Sun Jan 16 23:23:03 2011 +0000
894
895 Update Unicode-Collate to CPAN version 0.70 and enable XS version
896
897commit a62b1201c068dc7b099bcb7182e188c4d2fbf34c
898Author: Karl Williamson <public@khwilliamson.com>
899Date: Sun Dec 26 10:31:16 2010 -0700
900
901 Use multi-bit field for regex character set
902
903 The /d, /l, and /u regex modifiers are mutually exclusive. This patch
904 changes the field that stores the character set to use more than one bit
905 with an enum determining which one. This data structure more
906 closely follows the semantics of their being mutually exclusive, and
907 conserves bits as well, and is better expandable.
908
909 A small API is added to set and query the bit field.
910
911 This patch is not .xs source backwards compatible. A handful of cpan
912 programs are affected.
913
914
915tools
916
917 Significant updates to buildtoc
918
919 Update Unicode-Normalize to CPAN version 1.10
920
921commit 11454c594f22abc5945e69a46fc965363dbf326e
922Author: Karl Williamson <public@khwilliamson.com>
923Date: Sat Jan 15 13:42:58 2011 -0700
924
925 Fix \xa0 matching both [\s] [\S], et.al.
926
927 This bug stemmed from Latin1 characters not matching any (non-complemented)
928 character class in /d semantics when the target string is no utf8; but having
929 unicode semantics when it isn't. The solution here is to add a special flag.
930
931 There were several tests that relied on the broken behavior, specifically they
932 tested that \xff isn't a printable word character even in utf8. I changed the
933 deparse test to instead use a non-printable code point, and I changed the ones
934 in re_tests to be TODOs, and will change them back using /a when that is
935 shortly added.
936
937
938SECURITY
939
940 restrict \p{IsUserDefined} to In\w+ and In\w+
941
942 In L<perlunicode/"User-Defined Character Properties">, it says you can
943 create custom properties by defining subroutines whose names begin with
944 "In" or "Is". However, perl doesn't actually enforce that naming
945 restriction, so \p{foo::bar} will call foo::Bar() if it exists.
946
947 This commit finally enforces this convention. Note that this broke a
948 number of existing tests for properties, since they didn't always use an
949 Is/In prefix.
950
951TESTING
952
953 test that perl.pod, pod.lst, MANIFEST and the file system are consistent
954
955commit f56b6394f7cf57733135f56e4e4ac49abe9ac9cc
956Author: Karl Williamson <public@khwilliamson.com>
957Date: Thu Jan 13 22:36:36 2011 -0700
958
959 regex: Use ANYOFV
960
961 This patch restructures the regex ANYOF code to generate ANYOFV nodes instead
962 when there is a possibility that it could match more than one character. Note
963 that this doesn't affect the optimizer, as it essentially ignores things that
964 fit into this category. (But it means that the optimizer will no longer reject
965 these when it shouldn't have.)
966
967 The handling of the LATIN SHARP s is modified to correspond with this new node
968 type.
969
970 The initial handling of ANYOFV is placed in regexec.c. More analysis will come
971 on that. But there was significant change to the part that handles matching
972 multi-char strings. This has long been buggy, with it previously comparing a
973 folded-version on one side with a non-folded version on the other.
974
975 This patch fixes about 60% of the problems that my undelivered test suite gives
976 for multi-char folds. But there are still 17K test failures left, so I'm still
977 not delivering that. The TODOs that this fixes will be cleaned up in a later commit
978
979
980 Update Pod-LaTeX to CPAN version 0.59
981
982commit 680818c0361b180bb6f09d4bb11c4d5cd467fe62
983Author: Nicholas Clark <nick@ccl4.org>
984Date: Thu Jan 13 16:24:52 2011 +0000
985
986 ithread_create() was relying on the stack not moving. Fix this.
987
988 4cf5eae5e58faebb changed S_ithread_create() to avoid creating an AV, by
989 passing the thread creation arguments as pointers to a block of memory
990 holding SVs. Unfortunately, this inadvertently introduced a subtle bug,
991 because the block of memory is on the Perl stack, which can move as a side
992 effect of being reallocated to extend it. Hence pass in the offset on the
993 stack instead, read the current value of the relevant interpreter's stack
994 at the point of access, and copy all the SVs away before making any further
995 calls which might cause reallocation.
996
997 Update to Win32-0.44 from CPAN
e0b8b6f1
JV
998 Update IO-Compress to CPAN version 2.033
999 Update Compress-Raw-Zlib to CPAN version 2.033
1000 Update Compress-Raw-Bzip2 to CPAN version 2.033
1001 Update DB_File to CPAN version 1.821
1002
1003DIAGNOSTICS
1004 Correct the "unimplemented" message for get{host,net,proto,serv}ent aliases.
1005
1006 Previously, if all of gethost{byaddr,byname,ent} were unimplemented on a
1007 platform, they would all return 'Unsupported socket function "gethostent"
1008 called', with the analogous results for getnet{byaddr,byname,ent},
1009 getproto{byname,bynumber,ent} and getserv{byname,byport,ent}. This bug was
1010 introduced by change af51a00e97d5c559 - prior to this, all 12 functions would
1011 report their own name when unimplemented.
1012
e0b8b6f1
JV
1013
1014commit 7627e6d0fe772ac90fce9e03fea273109521e261
1015Author: Nicholas Clark <nick@ccl4.org>
1016Date: Sat Jan 8 15:56:22 2011 +0000
1017
1018 Generate "Unsupported socket function" stubs using PL_ppaddr.
1019
1020 Instead of having each socket op conditionally compile as either the
1021 implementation or a DIE() depending on #HAS_SOCKET
1022
1023 1: remove the conditional code from the ops themselves
1024 2: only compile the ops if HAS_SOCKET is defined
1025 3: general conditional code for the intialisation of PL_ppaddr - as appropriate
1026 either the ops, or Perl_unimplemented_op
1027 4: Amend Perl_unimplemented_op to generate the appropriate DIE() for socket
1028 ops (ie not the "panic"... message)
1029
1030 Whilst this complicates the support code in regen/opcode.pl, it's already a
1031 net saving of 5 lines in the C code.
1032
1033commit 897d398936dd2fc088a265fba2a7b62fa97ed458
1034Author: Nicholas Clark <nick@ccl4.org>
1035Date: Sun Jan 9 10:54:58 2011 +0000
1036
1037 Generate pp_* prototypes in pp_proto.h, and remove pp.sym
1038
1039 Eliminate the #define pp_foo Perl_pp_foo(pTHX) macros, and update the 13
1040 locations that relied on them.
1041
1042 regen/opcode.pl now generates prototypes for the PP functions directly, into
1043 pp_proto.h. It no longer writes pp.sym, and regen/embed.pl no longer reads
1044 this, removing the only ordering dependency in the regen scripts. opcode.pl
1045 is now responsible for prototypes for pp_* functions. (embed.pl remains
1046 responsible for ck_* functions, reading from regen/opcodes)
1047
e0b8b6f1
JV
1048commit a4a4c9e2c086dd5f7b7b05789161614dbbe8385b
1049Author: Karl Williamson <public@khwilliamson.com>
1050Date: Sat Jan 8 14:44:05 2011 -0700
1051
1052 perldiag.pod: Add missing message severities
1053
e0b8b6f1
JV
1054
1055TESTING
1056 add test for split without a pattern
1057
1058 Add some while tests, about the context of the last statement in a block and about reinitializaiton of lexical variables.
1059
1060 modernise t/cmd/while.t
1061
1062 Add t/base/while.t testing the basic of a while loop with minimal dependencies. Change t/cmd/while.t into a non-base test using "test.pl".
1063
e0b8b6f1
JV
1064commit b86b68b4eefa1069dabc8ea0401d712b24a67857
1065Author: Jesse Vincent <jesse@bestpractical.com>
1066Date: Sat Jan 8 00:14:29 2011 +0800
1067
1068 Update the policy on doc patches to maint
1069
1070
e0b8b6f1
JV
1071commit 0b5e625bc99f5cb78697faf03b297b6cacadf60b
1072Author: Reini Urban <rurban@x-ray.at>
1073Date: Tue Sep 14 18:04:22 2010 +0200
1074
1075 build man pages on cygwin too
1076
1077commit 172830635ea7813c85e51e4ae2b4bed56ddbab83
1078Author: Reini Urban <rurban@x-ray.at>
1079Date: Tue Sep 14 17:54:15 2010 +0200
1080
1081 Improve cygwin rebase behaviour
1082
1083 If a dll is updated on cygwin reuse the old imagebase address.
1084 This solves most rebase errors, esp when updating on core dll's.
1085 See http://www.tishler.net/jason/software/rebase/rebase-2.4.2.README
1086
1087
e0b8b6f1
JV
1088Platforms
1089
e0b8b6f1
JV
1090commit cc7e77fd5a0ee9f1498e54dddf566117da62754b
1091Author: Reini Urban <rurban@x-ray.at>
1092Date: Tue Sep 14 17:48:32 2010 +0200
1093
1094 CYG14 Dynaloader without USEIMPORTLIB, and search cyg prefix
1095
1096 part1: Support the standard cyg dll prefix, which is e.g. needed for FFI's.
1097 Ctypes and C::DynaLib use DynaLoader to find dlls.
1098
1099 part2: With -DUSEIMPORTLIB DynaLoader symbols link against the prefixed
1100 symbol names for the .dll.a importlib, but we need to link against the
1101 symbols directly. We don't link Dynaloader against libperl.dll.a.
1102
1103 Otherwise:
1104 $ g++-4 -o cygperl5_13_4.dll --shared perlsrc.o cygwin.o DynaLoader.o -ldl -lcrypt
1105 Creating library file: libperl.dll.a
1106 DynaLoader.o: In function `XS_DynaLoader_dl_undef_symbols':
1107 ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_sp'
1108 ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_markstack_ptr'
1109 ext/DynaLoader/DynaLoader.c:346: undefined reference to `__imp__PL_stack_base'
1110
1111commit c0a149a90b8b6e1c18de7294ca974265fb559cf5
1112Author: Reini Urban <rurban@x-ray.at>
1113Date: Tue Sep 14 18:06:38 2010 +0200
1114
1115 Update cygwin hints
1116 do not use usemymalloc (double size + slow)
1117 remove deprecated libcygipc info
1118 remove overlarge stack size
1119
e0b8b6f1
JV
1120commit 2831a86cee065b53b74fd19ddcc6a4257484646d
1121Author: Zsb√°n Ambrus <ambrus@math.bme.hu>
1122Date: Sun Jan 2 20:25:55 2011 -0800
1123
1124 [perl #81032] Overhaul Porting/epigraphs.pod
1125
1126 This patch makes multiple changes to Porting/epigraphs.pod and
1127 pod/perlhist.pod.
1128
1129 For those that don't know, Porting/epigraphs.pod is a new document that
1130 collects the quotes (chosen by Pumpkins) in perl release announcements.
1131
1132 The changes are the following.
1133
1134 1. Add a link pointing to each release announcement in the mailing
1135 list archives. These are from ysth's list, the source from which
1136 Porting/epigraphs.pod was originally compiled, but they weren't in
1137 Porting/epigraphs.pod so far.
1138 2. Reorder Porting/epigraphs.pod chronologically, because I believe
1139 that makes more sense -- pod/perlhist.pod is still sorted by version numbers.
1140 3. Incidentally, some missing releases are added to pod/perlhist.pod too.
1141 4. Fix a mistake where Porting/epigraphs.pod gives the wrong version number.
1142 5. Add some epigraphs that appear in ysth's list but not in
1143 Porting/epigraphs.pod.
1144 6. I did some research in perl history before the part that ysth's list
1145 covers, and added older perl announcements I found. This work is not
1146 complete: I stopped somewhere in 2000.
1147
1148commit eccda089fc3dcaafc1ae0aac6b428f799231b824
1149Author: Paul "LeoNerd" Evans <leonerd@leonerd.org.uk>
1150Date: Mon Dec 13 17:50:06 2010 +0000
1151
1152 Implement Socket::getaddrinfo() and Socket::getnameinfo(), with related constants
1153
e0b8b6f1
JV
1154commit edcf105d70e5423fd928c776e086fe31a4a543f4
1155Author: Jesse Vincent <jesse@bestpractical.com>
1156Date: Sat Jan 1 18:46:20 2011 +0800
1157
1158 Document 'test_porting' and start a section on how committing to blead
1159
e0b8b6f1
JV
1160commit cce04bebd8af026c2a6731940ddb895d3c1fc3e4
1161Author: David Golden <dagolden@cpan.org>
1162Date: Mon Dec 13 17:36:33 2010 -0500
1163
1164 Reorganize perlhack.pod
1165
1166 Following on an IRC conversation, I've attempted to reorganize
1167 perlhack for greater clarity. I have only cut and paste blocks
1168 of text and amended section titles and levels. (I have not addressed
1169 any of the numerous factual issues which remain.)
1170
1171 The resulting guide should be clearer for those trying to skim the
1172 table of contents to understand what is covered in perlhack and
1173 whether it is worth an in-depth read.
1174
1175 I see this change as the first step towards future improvements.
1176
e0b8b6f1 1177=cut