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