This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
More perldelta nits found by my reviewers
[perl5.git] / pod / perl594delta.pod
1 =head1 NAME
2
3 perldelta - what is new for perl v5.9.4
4
5 =head1 DESCRIPTION
6
7 This document describes differences between the 5.9.3 and the 5.9.4
8 development releases. See L<perl590delta>, L<perl591delta>, L<perl592delta>
9 and L<perl593delta> for the differences between 5.8.0 and 5.9.3.
10
11 =head1 Incompatible Changes
12
13 =head2 chdir FOO
14
15 A bareword argument to chdir() is now recognized as a file handle.
16 Earlier releases interpreted the bareword as a directory name.
17 (Gisle Aas)
18
19 =head2 Handling of pmc files
20
21 An old feature of perl was that before C<require> or C<use> look for a
22 file with a F<.pm> extension, they will first look for a similar filename
23 with a F<.pmc> extension. If this file is found, it will be loaded in
24 place of any potentially existing file ending in a F<.pm> extension.
25
26 Previously, F<.pmc> files were loaded only if more recent than the
27 matching F<.pm> file. Starting with 5.9.4, they'll be always loaded if
28 they exist. (This trick is used by Pugs.)
29
30 =head2 @- and @+ in patterns
31
32 The special arrays C<@-> and C<@+> are no longer interpolated in regular
33 expressions. (Sadahiro Tomoyuki)
34
35 =head2 $AUTOLOAD can now be tainted
36
37 If you call a subroutine by a tainted name, and if it defers to an
38 AUTOLOAD function, then $AUTOLOAD will be (correctly) tainted.
39 (Rick Delaney)
40
41 =head1 Core Enhancements
42
43 =head2 state() variables
44
45 A new class of variables has been introduced. State variables are similar
46 to C<my> variables, but are declared with the C<state> keyword in place of
47 C<my>. They're visible only in their lexical scope, but their value is
48 persistent: unlike C<my> variables, they're not undefined at scope entry,
49 but retain their previous value. (Rafael Garcia-Suarez)
50
51 To use state variables, one needs to enable them by using
52
53     use feature "state";
54
55 or by using the C<-E> command-line switch in one-liners.
56
57 See L<perlsub/"Persistent variables via state()">.
58
59 =head2 UNIVERSAL::DOES()
60
61 The C<UNIVERSAL> class has a new method, C<DOES()>. It has been added to
62 solve semantic problems with the C<isa()> method. C<isa()> checks for
63 inheritance, while C<DOES()> has been designed to be overridden when
64 module authors use other types of relations between classes (in addition
65 to inheritance). (chromatic)
66
67 See L<< UNIVERSAL/"$obj->DOES( ROLE )" >>.
68
69 =head2 Exceptions in constant folding
70
71 The constant folding routine is now wrapped in an exception handler, and
72 if folding throws an exception (such as attempting to evaluate 0/0), perl
73 now retains the current optree, rather than aborting the whole program.
74 (Nicholas Clark, Dave Mitchell)
75
76 =head2 Source filters in @INC
77
78 It's possible to enhance the mechanism of subroutine hooks in @INC by
79 adding a source filter on top of the filehandle opened and returned by the
80 hook. This feature was planned a long time ago, but wasn't quite working
81 until now. See L<perlfunc/require> for details. (Nicholas Clark)
82
83 =head2 MAD
84
85 MAD, which stands for I<Misc Attribute Decoration>, is a
86 still-in-development work leading to a Perl 5 to Perl 6 converter. To
87 enable it, it's necessary to pass the argument C<-Dmad> to Configure. The
88 obtained perl isn't binary compatible with a regular perl 5.9.4, and has
89 space and speed penalties; moreover not all regression tests still pass
90 with it. (Larry Wall, Nicholas Clark)
91
92 =head1 Modules and Pragmas
93
94 =over 4
95
96 =item *
97
98 C<encoding::warnings> is now a lexical pragma. (Although on older perls,
99 which don't have support for lexical pragmas, it keeps its global
100 behaviour.) (Audrey Tang)
101
102 =item *
103
104 C<threads> is now a dual-life module, also available on CPAN. It has been
105 expanded in many ways. A kill() method is available for thread signalling.
106 One can get thread status, or the list of running or joinable threads.
107
108 A new C<< threads->exit() >> method is used to exit from the application
109 (this is the default for the main thread) or from the current thread only
110 (this is the default for all other threads). On the other hand, the exit()
111 built-in now always causes the whole application to terminate. (Jerry
112 D. Hedden)
113
114 =back
115
116 =head2 New Core Modules
117
118 =over 4
119
120 =item *
121
122 C<Hash::Util::FieldHash>, by Anno Siegel, has been added. This module
123 provides support for I<field hashes>: hashes that maintain an association
124 of a reference with a value, in a thread-safe garbage-collected way.
125
126 =item *
127
128 C<Module::Build>, by Ken Williams, has been added. It's an alternative to
129 C<ExtUtils::MakeMaker> to build and install perl modules.
130
131 =item *
132
133 C<Module::Load>, by Jos Boumans, has been added. It provides a single
134 interface to load Perl modules and F<.pl> files.
135
136 =item *
137
138 C<Module::Loaded>, by Jos Boumans, has been added. It's used to mark
139 modules as loaded or unloaded.
140
141 =item *
142
143 C<Package::Constants>, by Jos Boumans, has been added. It's a simple
144 helper to list all constants declared in a given package.
145
146 =item *
147
148 C<Win32API::File>, by Tye McQueen, has been added (for Windows builds).
149 This module provides low-level access to Win32 system API calls for
150 files/dirs.
151
152 =back
153
154 =head1 Utility Changes
155
156 =head2 config_data
157
158 C<config_data> is a new utility that comes with C<Module::Build>. It
159 provides a command-line interface to the configuration of Perl modules
160 that use Module::Build's framework of configurability (that is,
161 C<*::ConfigData> modules that contain local configuration information for
162 their parent modules.)
163
164 =head1 Documentation
165
166 =head2 New manpage, perlpragma
167
168 The L<perlpragma> manpage documents how to write one's own lexical
169 pragmas in pure Perl (something that is possible starting with 5.9.4).
170
171 =head2 New manpage, perlreguts
172
173 The L<perlreguts> manpage, courtesy of Yves Orton, describes internals of the
174 Perl regular expression engine.
175
176 =head2 New manpage, perlunitut
177
178 The L<perlunitut> manpage is an tutorial for programming with Unicode and
179 string encodings in Perl, courtesy of Juerd Waalboer.
180
181 =head1 Performance Enhancements
182
183 =head2 Memory optimisations
184
185 Several internal data structures (typeglobs, GVs, CVs, formats) have been
186 restructured to use less memory. (Nicholas Clark)
187
188 =head2 UTF-8 cache optimisation
189
190 The UTF-8 caching code is now more efficient, and used more often.
191 (Nicholas Clark)
192
193 =head2 Regular expressions
194
195 =over 4
196
197 =item Engine de-recursivised
198
199 The regular expression engine is no longer recursive, meaning that
200 patterns that used to overflow the stack will either die with useful
201 explanations, or run to completion, which, since they were able to blow
202 the stack before, will likely take a very long time to happen. If you were
203 experiencing the occasional stack overflow (or segfault) and upgrade to
204 discover that now perl apparently hangs instead, look for a degenerate
205 regex. (Dave Mitchell)
206
207 =item Single char char-classes treated as literals
208
209 Classes of a single character are now treated the same as if the character
210 had been used as a literal, meaning that code that uses char-classes as an
211 escaping mechanism will see a speedup. (Yves Orton)
212
213 =item Trie optimisation of literal string alternations
214
215 Alternations, where possible, are optimised into more efficient matching
216 structures. String literal alternations are merged into a trie and are
217 matched simultaneously.  This means that instead of O(N) time for matching
218 N alternations at a given point the new code performs in O(1) time. (Yves
219 Orton)
220
221 B<Note:> Much code exists that works around perl's historic poor
222 performance on alternations. Often the tricks used to do so will disable
223 the new optimisations. Hopefully the utility modules used for this purpose
224 will be educated about these new optimisations by the time 5.10 is
225 released.
226
227 =item Aho-Corasick start-point optimisation
228
229 When a pattern starts with a trie-able alternation and there aren't
230 better optimisations available the regex engine will use Aho-Corasick
231 matching to find the start point. (Yves Orton)
232
233 =back
234
235 =head1 Installation and Configuration Improvements
236
237 =head2 Relocatable installations
238
239 There is now Configure support for creating a relocatable perl tree. If
240 you Configure with C<-Duserelocatableinc>, then the paths in @INC (and
241 everything else in %Config) can be optionally located via the path of the
242 perl executable.
243
244 That means that, if the string C<".../"> is found at the start of any
245 path, it's substituted with the directory of $^X. So, the relocation can
246 be configured on a per-directory basis, although the default with
247 C<-Duserelocatableinc> is that everything is relocated. The initial
248 install is done to the original configured prefix.
249
250 =head2 Ports
251
252 Many improvements have been made towards making Perl work correctly on
253 z/OS.
254
255 Perl has been reported to work on DragonFlyBSD.
256
257 =head2 Compilation improvements
258
259 All F<ppport.h> files in the XS modules bundled with perl are now
260 autogenerated at build time. (Marcus Holland-Moritz)
261
262 =head2 New probes
263
264 The configuration process now detects whether strlcat() and strlcpy() are
265 available.  When they are not available, perl's own version is used (from
266 Russ Allbery's public domain implementation).  Various places in the perl
267 interpreter now use them. (Steve Peters)
268
269 =head1 Selected Bug Fixes
270
271 =head2 PERL5SHELL and tainting
272
273 On Windows, the PERL5SHELL environment variable is now checked for
274 taintedness. (Rafael Garcia-Suarez)
275
276 =head2 Using *FILE{IO}
277
278 C<stat()> and C<-X> filetests now treat *FILE{IO} filehandles like *FILE
279 filehandles. (Steve Peters)
280
281 =head2 Overloading and reblessing
282
283 Overloading now works when references are reblessed into another class.
284 Internally, this has been implemented by moving the flag for "overloading"
285 from the reference to the referent, which logically is where it should
286 always have been. (Nicholas Clark)
287
288 =head2 Overloading and UTF-8
289
290 A few bugs related to UTF-8 handling with objects that have
291 stringification overloaded have been fixed. (Nicholas Clark)
292
293 =head2 eval memory leaks fixed
294
295 Traditionally, C<eval 'syntax error'> has leaked badly. Many (but not all)
296 of these leaks have now been eliminated or reduced. (Dave Mitchell)
297
298 =head1 New or Changed Diagnostics
299
300 =over 4
301
302 =item State variable %s will be reinitialized
303
304 One can assign initial values to state variables, but not when they're
305 declared as a sub-part of a list assignment. See L<perldiag>.
306
307 =back
308
309 =head1 Changed Internals
310
311 A new file, F<mathoms.c>, contains functions that aren't used anymore in
312 the perl core, but remain around because modules out there might
313 still use them. They come from a factorization effort: for example, many
314 PP functions are now shared for several ops.
315
316 The implementation of the special variables $^H and %^H has changed, to
317 allow implementing lexical pragmas in pure perl.
318
319 =head1 Known Problems
320
321 One warning test (number 263 in F<lib/warnings.t>) fails under UTF-8
322 locales.
323
324 Bytecode tests fail under several platforms. We are considering removing
325 support for byteloader and compiler before the 5.10.0 release.
326
327 On threaded perls, the construct C<eval("syntax error")> might lead, under
328 some circumstances, to a segmentation fault. This is due to the flaw in
329 the bug fix implmented by change #28319.
330
331 =head2 Platform-specific Problems
332
333 The test F<ext/Socket/t/socketpair.t> crashes after completing all tests
334 successfully when built with USE_ITHREADS and PERL_IMPLICIT_SYS on Win32.
335
336 =head1 Reporting Bugs
337
338 If you find what you think is a bug, you might check the articles
339 recently posted to the comp.lang.perl.misc newsgroup and the perl
340 bug database at http://rt.perl.org/rt3/ .  There may also be
341 information at http://www.perl.org/ , the Perl Home Page.
342
343 If you believe you have an unreported bug, please run the B<perlbug>
344 program included with your release.  Be sure to trim your bug down
345 to a tiny but sufficient test case.  Your bug report, along with the
346 output of C<perl -V>, will be sent off to perlbug@perl.org to be
347 analysed by the Perl porting team.
348
349 =head1 SEE ALSO
350
351 The F<Changes> file for exhaustive details on what changed.
352
353 The F<INSTALL> file for how to build Perl.
354
355 The F<README> file for general stuff.
356
357 The F<Artistic> and F<Copying> files for copyright information.
358
359 =cut