This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add the 5.17.8 epigraph to epigraphs.pod
[perl5.git] / pod / perldelta.pod
CommitLineData
44691e6f
AB
1=encoding utf8
2
3=head1 NAME
4
6253ee75 5perldelta - what is new for perl v5.17.8
e128ab2c 6
4eabcf70 7=head1 DESCRIPTION
6db9054f 8
6253ee75 9This document describes differences between the 5.17.7 release and the 5.17.8
e08634c5 10release.
6db9054f 11
6253ee75
DR
12If you are upgrading from an earlier release such as 5.17.6, first read
13L<perl5177delta>, which describes differences between 5.17.6 and 5.17.7.
bde9e88d 14
6253ee75 15=head1 Core Enhancements
dd271d7a 16
9d1a5160
KW
17=head2 Regular Expression Set Operations
18
19This is an experimental feature to allow matching against the the union,
20intersection, etc., of sets of code points, similar to
21L<Unicode::Regex::Set>. It can also be used to extend C</x> processing
22to [bracketed] character classes, and as a replacement of user-defined
23properties, allowing more complex expressions than they do. See
24L<perlre/(?[ ])>.
25
0e55f0d7 26=head1 Deprecations
3ef6ec90 27
0e55f0d7 28=head2 Deprecated modules
3ef6ec90 29
0e55f0d7
AC
30The Pod::LaTeX module is now deprecated, and due to be moved out of the Perl
31core in 5.20. Until then, using the core-installed version will produce a
32warning. You can suppress the warning by installing the module from CPAN.
4d7cd482 33
0e55f0d7 34=head2 User-defined charnames with surprising whitespace
b7c7d786 35
0e55f0d7
AC
36A user-defined character name with trailing or multiple spaces in a row is
37likely a typo. This now generates a warning when defined, on the assumption
38that uses of it will be unlikely to include the excess whitespace.
b7c7d786 39
143aeb96
KW
40=head2 Various XS-callable functions are now deprecated
41
42All the functions used to classify characters will be removed from a
43future version of Perl, and should not be used. With participating C
44compilers (e.g., gcc), compiling any file that uses any of these will
45generate a warning. These were not intended for public use; there are
46equivalent, faster, macros for most of them.
47See L<perlapi/Character classes>. The complete list (including some
48that were deprecated in 5.17.7) is:
49C<is_uni_alnum>, C<is_uni_alnumc>, C<is_uni_alnumc_lc>,
50C<is_uni_alnum_lc>, C<is_uni_alpha>, C<is_uni_alpha_lc>,
51C<is_uni_ascii>, C<is_uni_ascii_lc>, C<is_uni_blank>,
52C<is_uni_blank_lc>, C<is_uni_cntrl>, C<is_uni_cntrl_lc>,
53C<is_uni_digit>, C<is_uni_digit_lc>, C<is_uni_graph>,
54C<is_uni_graph_lc>, C<is_uni_idfirst>, C<is_uni_idfirst_lc>,
55C<is_uni_lower>, C<is_uni_lower_lc>, C<is_uni_print>,
56C<is_uni_print_lc>, C<is_uni_punct>, C<is_uni_punct_lc>,
57C<is_uni_space>, C<is_uni_space_lc>, C<is_uni_upper>,
58C<is_uni_upper_lc>, C<is_uni_xdigit>, C<is_uni_xdigit_lc>,
59C<is_utf8_alnum>, C<is_utf8_alnumc>, C<is_utf8_alpha>,
60C<is_utf8_ascii>, C<is_utf8_blank>, C<is_utf8_char>,
61C<is_utf8_cntrl>, C<is_utf8_digit>, C<is_utf8_graph>,
62C<is_utf8_idcont>, C<is_utf8_idfirst>, C<is_utf8_lower>,
63C<is_utf8_mark>, C<is_utf8_perl_space>, C<is_utf8_perl_word>,
64C<is_utf8_posix_digit>, C<is_utf8_print>, C<is_utf8_punct>,
65C<is_utf8_space>, C<is_utf8_upper>, C<is_utf8_xdigit>,
66C<is_utf8_xidcont>, C<is_utf8_xidfirst>.
67
68In addition these three functions that have never worked properly are
69deprecated:
70C<to_uni_lower_lc>, C<to_uni_title_lc>, and C<to_uni_upper_lc>.
71
4d68ffa0
KW
72=head2 Certain rare uses of backslashes within regexes are now deprectated
73
74There are three pairs of characters that Perl recognizes as
75metacharacters in regular expression patterns: C<{}>, C<[]>, and C<()>.
76These can be used as well to delimit patterns, as in:
77
78 m{foo}
79 s(foo)(bar)
80
81Since they are metacharacters, they have special meaning to regular
82expression patterns, and it turns out that you can't turn off that
83special meaning by the normal means of preceding them with a backslash,
84if you use them, paired, within a pattern delimitted by them. For
85example, in
86
87 m{foo\{1,3\}}
88
89the backslashes do not change the behavior, and this matches
90S<C<"f o">> followed by one to three more occurrences of C<"o">.
91
92Usages like this, where they are interpreted as metacharacters, are
93exceedingly rare; we think there are none, for example, in all of CPAN.
94Hence, this deprecation should affect very little code. It does give
95notice, however, that any such code needs to change, which will in turn
96allow us to change the behavior in future Perl versions so that the
97backslashes do have an effect, and without fear that we are silently
98breaking any existing code.
99
0e55f0d7 100=head1 Modules and Pragmata
751611d4 101
0e55f0d7 102=head2 Selected Updates to Modules and Pragmata
751611d4 103
6253ee75 104=over 4
751611d4
FC
105
106=item *
107
0e55f0d7
AC
108Several modules have had their version number changed to one with no
109underscore, since such version numbers are usually interpreted to mean
110"development-only version". No other changes have been made in these cases.
111The affected modules are:
751611d4 112
6253ee75 113=over 4
751611d4
FC
114
115=item *
116
0e55f0d7 117L<I18N::Langinfo> was 0.08_02 and is now 0.09
751611d4 118
0e55f0d7 119=item *
86148eee 120
0e55f0d7 121L<I18N::LangTags::List> was 0.35_01 and is now 0.39
7a7a10c7 122
e14ac59b 123=item *
7a7a10c7 124
0e55f0d7 125L<IO> was 1.25_08 and is now 1.26
7a7a10c7 126
0e55f0d7 127=item *
c387386a 128
0e55f0d7 129L<Safe> was 2.33_01 and is now 2.34
32209f41 130
e14ac59b 131=item *
5faa50e9 132
0e55f0d7 133L<Test> was 1.25_02 and is now 1.26.
b7c7d786 134
6253ee75 135=back
b7c7d786 136
0e55f0d7 137=item *
11e375e0 138
0e55f0d7
AC
139L<Digest::SHA> has been upgraded from version 5.80 to 5.81. This fixes a
140double-free bug, which might have caused vulnerabilities in some cases.
e498bd59
RS
141
142=item *
143
dd4b1c75
AC
144L<Module::CoreList> has been upgraded from 2.79 to 2.80.
145
146=item *
147
0e55f0d7
AC
148L<Socket> has been upgraded from 2.006_001 to 2.009. This fixes an
149uninitialized memory read.
cb077ed2 150
5d8c8c8a 151=back
5f877a7f 152
e14ac59b
RS
153=head1 Diagnostics
154
155The following additions or changes have been made to diagnostic output,
156including warnings and fatal error messages. For the complete list of
157diagnostic messages, see L<perldiag>.
1ea91bbe 158
6253ee75
DR
159=head2 New Diagnostics
160
6253ee75 161=head3 New Warnings
11e375e0 162
e14ac59b 163=over 4
11e375e0
FC
164
165=item *
166
5e0a247b
KW
167L<'%s' resolved to '\o{%s}%d'|perldiag/"'%s' resolved to '\o{%s}%d'">
168
169=item *
170
0e55f0d7 171L<'Trailing white-space in a charnames alias definition is deprecated'|perldiag/"Trailing white-space in a charnames alias definition is deprecated">
e14ac59b 172
6253ee75 173=item *
8b877d20 174
0e55f0d7 175L<'A sequence of multiple spaces in a charnames alias definition is deprecated'|perldiag/"A sequence of multiple spaces in a charnames alias definition is deprecated">
e078d89d
FC
176
177=item *
178
0e55f0d7 179L<'Passing malformed UTF-8 to "%s" is deprecated'|perldiag/"Passing malformed UTF-8 to "%s" is deprecated">
e078d89d 180
6253ee75 181=back
e078d89d 182
0e55f0d7 183=head1 Testing
e078d89d 184
6253ee75 185=over 4
e078d89d 186
b7c7d786
FC
187=item *
188
0e55f0d7 189Many more of the core's tests now have descriptions.
e14ac59b 190
fdea6f98
FC
191=item *
192
0e55f0d7
AC
193Thread stress-tests now adapt to the speed of the machine running the tests,
194thus reducing the incidence of false failures.
fdea6f98 195
6253ee75 196=back
7cf3104f 197
6253ee75 198=head1 Platform Support
7cf3104f 199
6253ee75 200=head2 Discontinued Platforms
a0e45bac 201
6253ee75 202=over 4
139353f8 203
7eb35c03 204=item Rhapsody
139353f8 205
7eb35c03 206Support for Rhapsody has been removed.
ba535ffe 207
6253ee75 208=back
ba535ffe 209
6253ee75 210=head2 Platform-Specific Notes
52c09c59 211
6253ee75 212=over 4
12b847a2 213
5398666e 214=item Windows
12b847a2 215
5398666e
SH
216Perl can now be built using Microsoft's Visual C++ 2012 compiler by specifying
217CCTYPE=MSVC110 (or MSVC110FREE if you are using the free Express edition for
218Windows Desktop) in F<win32/Makefile>.
6e50262c 219
0e55f0d7 220=item Haiku
6e50262c 221
0e55f0d7 222Perl should now work out of the box on Haiku R1 Alpha 4.
785fb813 223
0e55f0d7 224=back
785fb813 225
0e55f0d7 226=head1 Internal Changes
f5778209 227
6253ee75 228=over 4
f5778209 229
216cf7fc
DR
230=item *
231
36baafc9
KW
232A synonym for the misleadingly named C<av_len()> has been created:
233C<av_top()>. Both of these return the number of the highest index in
234the array, not the number of elements it contains.
216cf7fc 235
6253ee75 236=back
216cf7fc 237
6253ee75 238=head1 Selected Bug Fixes
216cf7fc 239
6253ee75 240=over 4
216cf7fc 241
6253ee75 242=item *
216cf7fc 243
e2beedf4
DD
244A bug in the core typemap caused any C types that map to the T_BOOL core
245typemap entry to not be set, updated, or modified when the T_BOOL variable was
246used in an OUTPUT: section with an exception for RETVAL. T_BOOL in an INPUT:
247section was not affected. Using a T_BOOL return type for an XSUB (RETVAL)
248was not affected. A side effect of fixing this bug is, if a T_BOOL is specified
249in the OUTPUT: section (which previous did nothing to the SV), and a read only
250SV (literal) is passed to the XSUB, croaks like "Modification of a read-only
251value attempted" will happen. [perl #115796]
216cf7fc 252
d76c0f4b
RS
253=item *
254
255On many platforms, providing a directory name as the script name caused perl
256to do nothing and report success. It should now universally report an error
257and exit nonzero. [perl #61362]
258
6253ee75 259=back
6c042f06 260
6253ee75 261=head1 Known Problems
6c042f06 262
6253ee75 263=over 4
3cf48cac 264
6253ee75 265=item *
3cf48cac 266
0e55f0d7
AC
267Perl 5.17.7 introduced a new internal copy-on-write mechanism, in the
268interests of speed. An flaw in the implementation means that some regexp
269matches which previously completed very fast, without invoking the full
270regexp engine, now run much slower than before. We expect this performance
271problem to be resolved before 5.18.0 is released.
05bee12a 272
100e3bc8
AC
273=item *
274
275The C<POSIX> module may yield test failures when building on a ZFS
276filesystem under FreeBSD.
277
6253ee75 278=back
f5b73711 279
0e55f0d7
AC
280=head1 Acknowledgements
281
282Perl 5.17.8 represents approximately 5 weeks of development since Perl 5.17.7
283and contains approximately 18,000 lines of changes across 280 files from 24
284authors.
f5b73711 285
0e55f0d7
AC
286Perl continues to flourish into its third decade thanks to a vibrant community
287of users and developers. The following people are known to have contributed the
288improvements that became Perl 5.17.8:
f5b73711 289
0e55f0d7
AC
290Aaron Crane, Andy Dougherty, Augustina Blair, Chris 'BinGOs' Williams, Craig
291A. Berry, Daniel Dragan, Dave Rolsky, David Mitchell, Eric Brine, Father
292Chrysostomos, H.Merijn Brand, James E Keenan, Jerry D. Hedden, Jesse Luehrs,
293Karl Williamson, Matthew Horsfall, Nicholas Clark, Renee Baecker, Ricardo
294Signes, Shlomi Fish, Steffen Müller, Steve Hay, Steven Schubiger, Tony Cook.
295
296The list above is almost certainly incomplete as it is automatically generated
297from version control history. In particular, it does not include the names of
298the (very much appreciated) contributors who reported issues to the Perl bug
299tracker.
f5b73711 300
0e55f0d7
AC
301Many of the changes included in this version originated in the CPAN modules
302included in Perl's core. We're grateful to the entire CPAN community for
303helping Perl to flourish.
f5b73711 304
0e55f0d7
AC
305For a more complete list of all of Perl's historical contributors, please see
306the F<AUTHORS> file in the Perl source distribution.
f5b73711 307
44691e6f
AB
308=head1 Reporting Bugs
309
e08634c5
SH
310If you find what you think is a bug, you might check the articles recently
311posted to the comp.lang.perl.misc newsgroup and the perl bug database at
312http://rt.perl.org/perlbug/ . There may also be information at
313http://www.perl.org/ , the Perl Home Page.
44691e6f 314
e08634c5
SH
315If you believe you have an unreported bug, please run the L<perlbug> program
316included with your release. Be sure to trim your bug down to a tiny but
317sufficient test case. Your bug report, along with the output of C<perl -V>,
318will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
319
320If the bug you are reporting has security implications, which make it
e08634c5
SH
321inappropriate to send to a publicly archived mailing list, then please send it
322to perl5-security-report@perl.org. This points to a closed subscription
323unarchived mailing list, which includes all the core committers, who will be
324able to help assess the impact of issues, figure out a resolution, and help
f9001595 325co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
326platforms on which Perl is supported. Please only use this address for
327security issues in the Perl core, not for modules independently distributed on
328CPAN.
44691e6f
AB
329
330=head1 SEE ALSO
331
e08634c5
SH
332The F<Changes> file for an explanation of how to view exhaustive details on
333what changed.
44691e6f
AB
334
335The F<INSTALL> file for how to build Perl.
336
337The F<README> file for general stuff.
338
339The F<Artistic> and F<Copying> files for copyright information.
340
341=cut