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