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