This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document the TRIE changes in perldelta
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
204b72a4 5perldelta - what is new for perl v5.15.9
88c5c971 6
c1e74734 7=head1 DESCRIPTION
8f12b018 8
204b72a4
MM
9This document describes differences between the 5.15.8 release and
10the 5.15.9 release.
8f12b018 11
204b72a4
MM
12If you are upgrading from an earlier release such as 5.15.7, first read
13L<perl5158delta>, which describes differences between 5.15.7 and
145.15.8.
26afcec5 15
c1e74734 16=head1 Notice
8f12b018 17
d5dc7001 18This space intentionally left blank.
d7fbd56d 19
c1e74734 20=head1 Core Enhancements
d7fbd56d 21
d5dc7001
A
22=head2 C<< no feature; >> now means reset to default
23
24C<< no feature >> now resets to the default feature set. To disable all
25features (which is likely to be a pretty special-purpose request, since
26it presumably won't match any named set of semantics) you can now
27write C<< no feature ':all' >>.
28
c1e74734 29=head1 Security
711a3903 30
977c1d31
KW
31=head2 Malformed UTF-8 input could cause attempts to read beyond the end of the buffer
32
33Two new XS-accessible functions, C<utf8_to_uvchr_buf()> and
34C<utf8_to_uvuni_buf()> are now available to prevent this, and the Perl
35core has been converted to use them.
36See L</Internal Changes>.
27f00e3d 37
c1e74734 38=head1 Incompatible Changes
6ba817f3 39
8cfc9af6 40=head2 C<< no feature; >>
7620cb10 41
8cfc9af6 42C<no feature;> now means reset to default.
d7c042c9 43
204b72a4 44=head1 Deprecations
d7c042c9 45
d5dc7001 46=head2 Literal C<< "{" >> characters in regular expressions.
d7c042c9 47
d5dc7001
A
48It has been documented that the current plans include requiring a
49literal C<< "{" >> to be escaped: 5.18 will emit deprecation warnings,
50and it will be required in 5.20.
985213f2 51
977c1d31
KW
52=head2 XS functions C<utf8_to_uvchr()> and C<utf8_to_uvuni()>
53
54Use C<utf8_to_uvchr_buf()> and C<utf8_to_uvuni_buf()> instead.
55See L</Internal Changes>.
56
204b72a4 57=head1 Performance Enhancements
985213f2 58
204b72a4 59=over 4
985213f2 60
204b72a4 61=item *
2e2b2571 62
d5dc7001
A
63Fix a slowdown in freeing nested hashes. This may speedup the exit of
64certain programs.
2e2b2571 65
204b72a4 66=back
b240fc0f 67
204b72a4 68=head1 Modules and Pragmata
27f00e3d 69
c88a046d 70=head2 Updated Modules and Pragmata
27f00e3d 71
c88a046d 72=over 4
cadced9f 73
c88a046d 74=item *
cadced9f 75
c88a046d 76C<attributes> has been upgraded from version 0.17 to 0.18.
632c5d30
NC
77
78=item *
79
95ce428c
A
80C<charnames> has been upgraded from version 1.29 to 1.30.
81
82=item *
83
c88a046d 84C<feature> has been upgraded from version 1.26 to 1.27.
4e6e9b23 85
c88a046d
A
86C<no feature;> now means reset to default. The code has been refactored
87to reduce duplication.
4e6e9b23 88
c88a046d 89=item *
4e6e9b23 90
c88a046d 91C<B::Deparse> has been upgraded from version 1.12 to 1.13.
1887da8c
RS
92
93=item *
94
c88a046d 95C<B::Lint> has been upgraded from version 1.13 to 1.14.
58856662 96
c88a046d
A
97=item *
98
99C<CPAN::Meta> has been upgraded from version 2.120351 to 2.120630.
58856662
NC
100
101=item *
102
c88a046d 103C<CPANPLUS> has been upgraded from version 0.9118 to 0.9121.
d333a655 104
c88a046d 105=item *
589c1691 106
fae9e8f4
A
107C<Data::Dumper> has been upgraded from version 2.135_05 to 2.135_06.
108
109=item *
110
c88a046d 111C<Digest::SHA> has been upgraded from version 5.70 to 5.71.
58856662 112
c88a046d 113=item *
c11980ad 114
c88a046d 115C<ExtUtils::CBuilder> has been upgraded from version 0.280205 to 0.280206.
c11980ad 116
c88a046d
A
117=item *
118
119C<HTTP::Tiny> has been upgraded from version 0.016 to 0.017.
120
121=item *
122
123C<Module::CoreList> has been upgraded from version 2.60 to 2.63.
124
125=item *
126
127C<Pod::Html> has been upgraded from version 1.14 to 1.1501.
128
129=item *
130
131C<Pod::Perldoc> has been upgraded from version 3.15_15 to 3.17.
132
133=item *
134
135C<Pod::Simple> has been upgraded from version 3.19 to 3.20.
136
137=item *
138
139C<Socket> has been upgraded from version 1.98 to 2.000.
c11980ad
MM
140
141=item *
142
c88a046d
A
143C<Term::ReadLine> has been upgraded from version 1.08 to 1.09.
144
145=item *
146
147C<Unicode::Collate> has been upgraded from version 0.87 to 0.89.
148
149=item *
150
151C<Unicode::Normalize> has been upgraded from version 1.13 to 1.14.
152
153=item *
154
155C<Unicode::UCD> has been upgraded from version 0.41 to 0.42.
84ecb73f 156
fae9e8f4
A
157=item *
158
159C<XS::APItest> has been upgraded from version 0.36 to 0.37.
160
204b72a4 161=back
a3cc0403 162
c88a046d 163
204b72a4 164=head1 Documentation
a3cc0403 165
8cfc9af6
A
166There has been no significant change in the documentation between
1675.15.8 and 5.15.9.
75ff5956 168
204b72a4 169=head1 Diagnostics
75ff5956 170
204b72a4
MM
171The following additions or changes have been made to diagnostic output,
172including warnings and fatal error messages. For the complete list of
173diagnostic messages, see L<perldiag>.
c11980ad 174
204b72a4 175=head2 New Diagnostics
843331c7 176
204b72a4 177=head3 New Errors
c11980ad 178
d5dc7001 179Compared to 5.15.8, 5.15.9 does not introduce new errors.
2a7afa74 180
204b72a4 181=head3 New Warnings
ecd144ea 182
d5dc7001
A
183Compared to 5.15.8, 5.15.9 does not introduce new errors, but see
184L</Changes to Existing Diagnostics>
c11980ad 185
204b72a4 186=head2 Changes to Existing Diagnostics
c11980ad 187
204b72a4 188=over 4
ecd144ea
FC
189
190=item *
191
d5dc7001
A
192L<lvalue attribute %s already-defined subroutine|perldiag/"lvalue attribute %s already-defined subroutine">, which replaces
193C<< lvalue attribute cannot be removed after the subroutine has been defined >>.
9dea6244 194
204b72a4 195=back
9dea6244 196
204b72a4 197=head1 Utility Changes
c11980ad 198
d5dc7001 199No utilities changed between 5.15.8 and 5.15.9.
2a7afa74 200
204b72a4 201=head1 Configuration and Compilation
e9e4ee62 202
204b72a4 203=over 4
937a45d0 204
ef337e16
CBW
205=item *
206
6cd577fe 207C<< perlfunc.html >> is now being generated again. [perl #107870]
ef337e16 208
7f28d7ed 209=back
679b54e7 210
c1e74734 211=head1 Testing
39de7394 212
204b72a4 213=over 4
52272450 214
84ecb73f
SM
215=item *
216
d5dc7001
A
217F<< t/op/require_37033.t >> has been added, to test that C<require>
218always closes the file handle that it opens. Previously, it had been
219leaking the file handle if it happened to have file descriptor 0, which
220would happen if C<require> was called (explicitly or implicitly) when
221C<STDIN> had been closed.
84ecb73f 222
52deee2e 223=back
5dd80d85 224
c1e74734 225=head1 Platform Support
52272450 226
8cfc9af6
A
227There have been no changes to Perl's support of various platforms between
2285.15.8 and 5.15.9.
249950d7 229
204b72a4 230=head1 Internal Changes
a1d95121 231
977c1d31
KW
232=over 4
233
234=item *
235
236Two new functions C<utf8_to_uvchr_buf()> and C<utf8_to_uvuni_buf()> have
237been added. These are the same as C<utf8_to_uvchr> and
238C<utf8_to_uvuni> (which are now deprecated), but take an extra parameter
239that is used to guard against reading beyond the end of the input
240string.
241See L<perlapi/utf8_to_uvchr_buf> and L<perlapi/utf8_to_uvuni_buf>.
242
39ea6a4b
A
243=item *
244
245The regular expression engine now does TRIE case insensitive matches
246under Unicode. This may change the output of C<< use re 'debug'; >>,
247and will speed up various things.
248
977c1d31 249=back
ea317ccb 250
204b72a4 251=head1 Selected Bug Fixes
a7bff800 252
204b72a4 253=over 4
0aae26c1
FC
254
255=item *
256
8752e5a8
KW
257I<Takri> now matches two more characters under the C<Script_Extensions>
258property. This corrects a Unicode 6.1 omission.
d5dc7001
A
259
260=item *
261
6cd577fe 262C<< perlfunc.html >> is now being generated again. [perl #107870]
d5dc7001
A
263
264=item *
265
266C<< $$ >> is no longer tainted. Since this value comes directly from
267C<< getpid() >>, it is always safe.
268
269=item *
270
271Fix leaking a file handle. [perl #37033]
272
273=item *
274
275An off-by-one error caused C<< /[:upper:]/ >> and C<< /[:punct:]/ >> to
41c3b428 276unexpectedly match characters with code points above 255. This has been
d5dc7001
A
277rectified. [perl 111400].
278
279=item *
280
281C<< (?foo: ...) >> no longer loses passed in character set.
282
283=item *
284
285Allow attributes to set C<< :lvalue >> on a defined sub. [perl 107366].
286
287=item *
288
289C<< die; >> with a non-reference, non-string value in $@ now properly
41c3b428 290propagates that value [perl #111654].
0aae26c1 291
d5dc7001
A
292=item *
293
294C<< Term::ReadLine >> now uses AnyEvent instead of Tk for an event loop.
295
204b72a4 296=back
0aae26c1 297
204b72a4 298=head1 Known Problems
0aae26c1 299
204b72a4 300This is a list of some significant unfixed bugs, which are regressions
8cfc9af6 301from either 5.14.0 or 5.15.8.
5d103fec 302
204b72a4 303=over 4
5d103fec 304
8cfc9af6 305=item C<eval { 'fork()' }> is broken on Windows [perl #109718]
2e2b2571 306
8cfc9af6 307This is a known test failure to be fixed before 5.16.0.
2e2b2571 308
8cfc9af6 309=item C<< Pod-Html >> test failures on Windows.
ea88c40c 310
8cfc9af6
A
311A number of tests for C<< Pod::Html >> fail under Windows, due to an
312incorrect assumption by the test scripts about capitalization of the
313network drive.
18af289e 314
8cfc9af6 315=back
c0154fe2 316
52deee2e 317=head1 Acknowledgements
8fe05716 318
d5dc7001
A
319XXX Redo this on 2012-03-20
320
321Perl 5.15.9 represents approximately 4 weeks of development since Perl 5.15.8
322and contains approximately 74,000 lines of changes across 470 files from 23
323authors.
324
325Perl continues to flourish into its third decade thanks to a vibrant community
326of users and developers. The following people are known to have contributed the
327improvements that became Perl 5.15.9:
328
329Aaron Crane, Abigail, Chris 'BinGOs' Williams, Craig A. Berry, Dave Rolsky,
330David Cantrell, David Golden, David Mitchell, Eric Brine, Father Chrysostomos,
331Florian Ragwitz, James E Keenan, Jesse Vincent, Karl Williamson, Marc Green,
332Max Maischein, Nicholas Clark, Pau Amma, Reini Urban, Ricardo Signes, Tony
333Cook, Yves Orton, Zefram.
334
335The list above is almost certainly incomplete as it is automatically generated
336from version control history. In particular, it does not include the names of
337the (very much appreciated) contributors who reported issues to the Perl bug
338tracker.
339
340Many of the changes included in this version originated in the CPAN modules
341included in Perl's core. We're grateful to the entire CPAN community for
342helping Perl to flourish.
204b72a4 343
d5dc7001
A
344For a more complete list of all of Perl's historical contributors, please see
345the F<AUTHORS> file in the Perl source distribution.
29cf780c 346
44691e6f
AB
347=head1 Reporting Bugs
348
349If you find what you think is a bug, you might check the articles
52deee2e
DR
350recently posted to the comp.lang.perl.misc newsgroup and the perl
351bug database at http://rt.perl.org/perlbug/ . There may also be
44691e6f
AB
352information at http://www.perl.org/ , the Perl Home Page.
353
354If you believe you have an unreported bug, please run the L<perlbug>
52deee2e
DR
355program included with your release. Be sure to trim your bug down
356to a tiny but sufficient test case. Your bug report, along with the
357output of C<perl -V>, will be sent off to perlbug@perl.org to be
358analysed by the Perl porting team.
44691e6f
AB
359
360If the bug you are reporting has security implications, which make it
52deee2e
DR
361inappropriate to send to a publicly archived mailing list, then please send
362it to perl5-security-report@perl.org. This points to a closed subscription
363unarchived mailing list, which includes
364all the core committers, who will be able
365to help assess the impact of issues, figure out a resolution, and help
366co-ordinate the release of patches to mitigate or fix the problem across all
367platforms on which Perl is supported. Please only use this address for
368security issues in the Perl core, not for modules independently
369distributed on CPAN.
44691e6f
AB
370
371=head1 SEE ALSO
372
52deee2e
DR
373The F<Changes> file for an explanation of how to view exhaustive details
374on what changed.
44691e6f
AB
375
376The F<INSTALL> file for how to build Perl.
377
378The F<README> file for general stuff.
379
380The F<Artistic> and F<Copying> files for copyright information.
381
382=cut