Commit | Line | Data |
---|---|---|
d4438f94 LB |
1 | =encoding utf8 |
2 | ||
3 | =head1 NAME | |
4 | ||
f83c51e5 | 5 | perl5131delta - what is new for perl v5.13.1 |
d4438f94 LB |
6 | |
7 | =head1 DESCRIPTION | |
8 | ||
9 | This document describes differences between the 5.13.0 release and | |
10 | the 5.13.1 release. | |
11 | ||
12 | If you are upgrading from an earlier release such as 5.10, first read | |
13 | L<perl5120delta>, which describes differences between 5.10 and | |
14 | 5.12. | |
15 | ||
d4438f94 LB |
16 | =head1 Incompatible Changes |
17 | ||
df5278db | 18 | =head2 "C<\cI<X>>" |
d4438f94 | 19 | |
df5278db KW |
20 | The backslash-c construct was designed as a way of specifying |
21 | non-printable characters, but there were no restrictions (on ASCII | |
22 | platforms) on what the character following the C<c> could be. Now, that | |
23 | character must be one of the ASCII characters. | |
d4438f94 | 24 | |
72ecaef9 DM |
25 | =head2 localised tied hashes, arrays and scalars are no longed tied |
26 | ||
27 | In the following: | |
28 | ||
29 | tie @a, ...; | |
30 | { | |
31 | local @a; | |
32 | # here, @a is a now a new, untied array | |
33 | } | |
34 | # here, @a refers again to the old, tied array | |
35 | ||
36 | The new local array used to be made tied too, which was fairly pointless, | |
37 | and has now been fixed. This fix could however potentially cause a change | |
38 | in behaviour of some code. | |
39 | ||
06b608b9 VP |
40 | =head2 C<given> return values |
41 | ||
42 | Starting from this release, C<given> blocks returns the last evaluated | |
43 | expression, or an empty list if the block was exited by C<break>. Thus you | |
44 | can now write: | |
45 | ||
46 | my $type = do { | |
47 | given ($num) { | |
48 | break when undef; | |
49 | 'integer' when /^[+-]?[0-9]+$/; | |
50 | 'float' when /^[+-]?[0-9]+(?:\.[0-9]+)?$/; | |
51 | 'unknown'; | |
52 | } | |
53 | }; | |
54 | ||
55 | See L<perlsyn/Return value> for details. | |
56 | ||
d4438f94 LB |
57 | =head1 Core Enhancements |
58 | ||
9d5401ce Z |
59 | =head2 Exception Handling Reliability |
60 | ||
61 | Several changes have been made to the way C<die>, C<warn>, and C<$@> | |
62 | behave, in order to make them more reliable and consistent. | |
63 | ||
64 | When an exception is thrown inside an C<eval>, the exception is no | |
65 | longer at risk of being clobbered by code running during unwinding | |
66 | (e.g., destructors). Previously, the exception was written into C<$@> | |
67 | early in the throwing process, and would be overwritten if C<eval> was | |
68 | used internally in the destructor for an object that had to be freed | |
69 | while exiting from the outer C<eval>. Now the exception is written | |
70 | into C<$@> last thing before exiting the outer C<eval>, so the code | |
71 | running immediately thereafter can rely on the value in C<$@> correctly | |
72 | corresponding to that C<eval>. | |
73 | ||
74 | Likewise, a C<local $@> inside an C<eval> will no longer clobber any | |
75 | exception thrown in its scope. Previously, the restoration of C<$@> upon | |
76 | unwinding would overwrite any exception being thrown. Now the exception | |
77 | gets to the C<eval> anyway. So C<local $@> is safe inside an C<eval>, | |
78 | albeit of rather limited use. | |
79 | ||
80 | Exceptions thrown from object destructors no longer modify the C<$@> | |
81 | of the surrounding context. (If the surrounding context was exception | |
82 | unwinding, this used to be another way to clobber the exception being | |
83 | thrown. Due to the above change it no longer has that significance, | |
84 | but there are other situations where C<$@> is significant.) Previously | |
85 | such an exception was sometimes emitted as a warning, and then either | |
86 | string-appended to the surrounding C<$@> or completely replaced the | |
87 | surrounding C<$@>, depending on whether that exception and the surrounding | |
88 | C<$@> were strings or objects. Now, an exception in this situation is | |
89 | always emitted as a warning, leaving the surrounding C<$@> untouched. | |
90 | In addition to object destructors, this also affects any function call | |
91 | performed by XS code using the C<G_KEEPERR> flag. | |
92 | ||
93 | C<$@> is also no longer used as an internal temporary variable when | |
94 | preparing to C<die>. Previously it was internally necessary to put | |
95 | any exception object (any non-string exception) into C<$@> first, | |
96 | before it could be used as an exception. (The C API still offers the | |
97 | old option, so an XS module might still clobber C<$@> in the old way.) | |
98 | This change together with the foregoing means that, in various places, | |
99 | C<$@> may be observed to contain its previously-assigned value, rather | |
100 | than having been overwritten by recent exception-related activity. | |
101 | ||
102 | Warnings for C<warn> can now be objects, in the same way as exceptions | |
103 | for C<die>. If an object-based warning gets the default handling, | |
104 | of writing to standard error, it will of course still be stringified | |
105 | along the way. But a C<$SIG{__WARN__}> handler will now receive an | |
106 | object-based warning as an object, where previously it was passed the | |
107 | result of stringifying the object. | |
108 | ||
d4438f94 LB |
109 | =head1 Modules and Pragmata |
110 | ||
fcc05cd0 | 111 | =head2 Updated Modules |
d4438f94 | 112 | |
d41251f5 NC |
113 | =over |
114 | ||
115 | =item C<Errno> | |
116 | ||
117 | The implementation of C<Errno> has been refactored to use about 55% less memory. | |
118 | There should be no user-visible changes. | |
119 | ||
f8a182a2 Z |
120 | =item Perl 4 C<.pl> libraries |
121 | ||
122 | These historical libraries have been minimally modified to avoid using | |
123 | C<$[>. This is to prepare them for the deprecation of C<$[>. | |
124 | ||
d6445baf Z |
125 | =item C<B::Deparse> |
126 | ||
127 | A bug has been fixed when deparsing a nextstate op that has both a | |
128 | change of package (relative to the previous nextstate), or a change of | |
129 | C<%^H> or other state, and a label. Previously the label was emitted | |
130 | first, leading to syntactically invalid output because a label is not | |
131 | permitted immediately before a package declaration, B<BEGIN> block, | |
132 | or some other things. Now the label is emitted last. | |
133 | ||
134 | =back | |
135 | ||
d4438f94 LB |
136 | =head2 Removed Modules and Pragmata |
137 | ||
d41251f5 NC |
138 | The following modules have been removed from the core distribution, and if |
139 | needed should be installed from CPAN instead. | |
140 | ||
141 | =over | |
142 | ||
143 | =item C<Class::ISA> | |
144 | ||
145 | =item C<Pod::Plainer> | |
146 | ||
147 | =item C<Switch> | |
148 | ||
149 | =back | |
150 | ||
151 | The removal of C<Shell> has been deferred until after 5.14, as the | |
152 | implementation of C<Shell> shipped with 5.12.0 did not correctly issue the | |
153 | warning that it was to be removed from core. | |
154 | ||
d4438f94 LB |
155 | =head1 New Documentation |
156 | ||
d4438f94 LB |
157 | =over 4 |
158 | ||
fcc05cd0 | 159 | =item perlgpl |
d4438f94 | 160 | |
fcc05cd0 RS |
161 | L<perlgpl> has been updated to contain GPL version 1, as is included in the |
162 | F<README> distributed with perl. | |
d4438f94 LB |
163 | |
164 | =back | |
165 | ||
166 | =head1 Selected Bug Fixes | |
167 | ||
d4438f94 LB |
168 | =over 4 |
169 | ||
170 | =item * | |
171 | ||
fcc05cd0 | 172 | Naming a deprecated character in \N{...} will not leak memory. |
d4438f94 | 173 | |
fcc05cd0 | 174 | =item * |
d4438f94 | 175 | |
fcc05cd0 | 176 | FETCH is no longer called needlessly on some tied variables. |
d4438f94 | 177 | |
fcc05cd0 | 178 | =item * |
d4438f94 | 179 | |
fcc05cd0 RS |
180 | The trie runtime code should no longer allocate massive amounts of memory, |
181 | fixing #74484. | |
d4438f94 LB |
182 | |
183 | =back | |
184 | ||
185 | =head1 Changed Internals | |
186 | ||
d4438f94 LB |
187 | =over 4 |
188 | ||
189 | =item * | |
190 | ||
5149cfce Z |
191 | The protocol for unwinding the C stack at the last stage of a C<die> |
192 | has changed how it identifies the target stack frame. This now uses | |
193 | a separate variable C<PL_restartjmpenv>, where previously it relied on | |
194 | the C<blk_eval.cur_top_env> pointer in the C<eval> context frame that | |
195 | has nominally just been discarded. This change means that code running | |
196 | during various stages of Perl-level unwinding no longer needs to take | |
197 | care to avoid destroying the ghost frame. | |
198 | ||
199 | =item * | |
200 | ||
d41251f5 NC |
201 | The format of entries on the scope stack has been changed, resulting in a |
202 | reduction of memory usage of about 10%. In particular, the memory used by | |
203 | the scope stack to record each active lexical variable has been halved. | |
204 | ||
205 | =item * | |
206 | ||
207 | Memory allocation for pointer tables has been changed. Previously | |
208 | C<Perl_ptr_table_store> allocated memory from the same arena system as C<SV> | |
209 | bodies and C<HE>s, with freed memory remaining bound to those arenas until | |
210 | interpreter exit. Now it allocates memory from arenas private to the specific | |
211 | pointer table, and that memory is returned to the system when | |
212 | C<Perl_ptr_table_free> is called. Additionally, allocation and release are both | |
213 | less CPU intensive. | |
214 | ||
215 | =item * | |
216 | ||
fcc05cd0 RS |
217 | A new function, Perl_magic_methcall has been added that wraps the setup needed |
218 | to call a magic method like FETCH (the existing S_magic_methcall function has | |
219 | been renamed S_magic_methcall1). | |
d4438f94 LB |
220 | |
221 | =back | |
222 | ||
223 | =head1 Deprecations | |
224 | ||
d4438f94 LB |
225 | The following items are now deprecated. |
226 | ||
227 | =over 4 | |
228 | ||
d41251f5 NC |
229 | =item C<Perl_ptr_table_clear> |
230 | ||
231 | C<Perl_ptr_table_clear> is no longer part of Perl's public API. Calling it now | |
232 | generates a deprecation warning, and it will be removed in a future | |
233 | release. | |
234 | ||
d4438f94 LB |
235 | =back |
236 | ||
d4438f94 LB |
237 | =head1 Acknowledgements |
238 | ||
fcc05cd0 RS |
239 | Perl 5.13.1 represents thirty days of development since Perl 5.13.0 and |
240 | contains 15390 lines of changes across 289 files from 34 authors and | |
241 | committers. | |
242 | ||
243 | Thank you to the following for contributing to this release: | |
d4438f94 | 244 | |
fcc05cd0 RS |
245 | Ævar Arnfjörð Bjarmason, Arkturuz, Chris 'BinGOs' Williams, Craig A. Berry, |
246 | Curtis Jewell, Dan Dascalescu, David Golden, David Mitchell, Father | |
247 | Chrysostomos, Gene Sullivan, gfx, Gisle Aas, H.Merijn Brand, James E Keenan, | |
248 | James Mastros, Jan Dubois, Jesse Vincent, Karl Williamson, Leon Brocard, | |
249 | Lubomir Rintel (GoodData), Nicholas Clark, Philippe Bruhat (BooK), Rafael | |
250 | Garcia-Suarez, Rainer Tammer, Ricardo Signes, Richard Soderberg, Robin Barker, | |
251 | Ruslan Zakirov, Steffen Mueller, Todd Rinaldo, Tony Cook, Vincent Pit, Zefram | |
d4438f94 LB |
252 | |
253 | =head1 Reporting Bugs | |
254 | ||
255 | If you find what you think is a bug, you might check the articles | |
256 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
257 | bug database at http://rt.perl.org/perlbug/ . There may also be | |
258 | information at http://www.perl.org/ , the Perl Home Page. | |
259 | ||
260 | If you believe you have an unreported bug, please run the B<perlbug> | |
261 | program included with your release. Be sure to trim your bug down | |
262 | to a tiny but sufficient test case. Your bug report, along with the | |
263 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
264 | analysed by the Perl porting team. | |
265 | ||
266 | If the bug you are reporting has security implications, which make it | |
267 | inappropriate to send to a publicly archived mailing list, then please send | |
268 | it to perl5-security-report@perl.org. This points to a closed subscription | |
269 | unarchived mailing list, which includes all the core committers, who be able | |
270 | to help assess the impact of issues, figure out a resolution, and help | |
271 | co-ordinate the release of patches to mitigate or fix the problem across all | |
272 | platforms on which Perl is supported. Please only use this address for | |
273 | security issues in the Perl core, not for modules independently | |
274 | distributed on CPAN. | |
275 | ||
276 | =head1 SEE ALSO | |
277 | ||
278 | The F<Changes> file for an explanation of how to view exhaustive details | |
279 | on what changed. | |
280 | ||
281 | The F<INSTALL> file for how to build Perl. | |
282 | ||
283 | The F<README> file for general stuff. | |
284 | ||
285 | The F<Artistic> and F<Copying> files for copyright information. | |
286 | ||
287 | =cut |