This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
A few more details in perldelta
[perl5.git] / pod / perl595delta.pod
index 98044d8..47710a8 100644 (file)
@@ -14,7 +14,12 @@ between 5.8.0 and 5.9.4.
 =head2 Tainting and printf
 
 When perl is run under taint mode, C<printf()> and C<sprintf()> will now
-reject any tainted format argument.
+reject any tainted format argument. (Rafael Garcia-Suarez)
+
+=head2 undef and signal handlers
+
+Undefining or deleting a signal handler via C<undef $SIG{FOO}> is now
+equivalent to setting it to C<'DEFAULT'>.
 
 =head2 Removal of the bytecode compiler and of perlcc
 
@@ -102,18 +107,40 @@ would expect. This is considered a feature. :-) (Yves Orton)
 
 =item Possessive Quantifiers
 
-Perl now supports the "possessive quantifier" syntax of the "atomic match" 
+Perl now supports the "possessive quantifier" syntax of the "atomic match"
 pattern. Basically a possessive quantifier matches as much as it can and never
-gives any back. Thus it can be used to control backtracking. The syntax is 
+gives any back. Thus it can be used to control backtracking. The syntax is
 similar to non-greedy matching, except instead of using a '?' as the modifier
 the '+' is used. Thus C<?+>, C<*+>, C<++>, C<{min,max}+> are now legal
 quantifiers. (Yves Orton)
 
 =item Backtracking control verbs
 
-The regex engine now supports a number of special purpose backtrack
-control verbs: (*COMMIT), (*MARK), (*CUT), (*ERROR), (*FAIL) and
-(*ACCEPT). See L<perlre> for their descriptions.
+The regex engine now supports a number of special-purpose backtrack
+control verbs: (*THEN), (*PRUNE), (*MARK), (*SKIP), (*COMMIT), (*FAIL)
+and (*ACCEPT). See L<perlre> for their descriptions. (Yves Orton)
+
+=item Relative backreferences
+
+A new syntax C<\g{N}> or C<\gN> where "N" is a decimal integer allows a
+safer form of back-reference notation as well as allowing relative
+backreferences. This should make it easier to generate and embed patterns
+that contain backreferences. See L<perlre/"Capture buffers">. (Yves Orton)
+
+=item Regexp::Keep internalized
+
+The functionality of Jeff Pinyan's module Regexp::Keep has been added to
+the core. You can now use in regular expressions the special escape C<\K>
+as a way to do something like floating length positive lookbehind. It is
+also useful in substitutions like:
+
+  s/(foo)bar/$1/g
+
+that can now be converted to
+
+  s/foo\Kbar//g
+
+which is much more efficient.
 
 =back
 
@@ -128,6 +155,24 @@ This has a small incompatible consequence: the prototype() function has
 been adjusted to return C<_> for some built-ins in appropriate cases (for
 example, C<prototype('CORE::rmdir')>). (Rafael Garcia-Suarez)
 
+=head2 UNITCHECK blocks
+
+C<UNITCHECK>, a new special code block has been introduced, in addition to
+C<BEGIN>, C<CHECK>, C<INIT> and C<END>.
+
+C<CHECK> and C<INIT> blocks, while useful for some specialized purposes,
+are always executed at the transition between the compilation and the
+execution of the main program, and thus are useless whenever code is
+loaded at runtime. On the other hand, C<UNITCHECK> blocks are executed
+just after the unit which defined them has been compiled. See L<perlmod>
+for more information. (Alex Gough)
+
+=head2 readpipe() is now overridable
+
+The built-in function readpipe() is now overridable. Overriding it permits
+also to override its operator counterpart, C<qx//> (a.k.a. C<``>). (Rafael
+Garcia-Suarez)
+
 =head2 UCD 5.0.0
 
 The copy of the Unicode Character Database included in Perl 5.9 has
@@ -151,6 +196,14 @@ gracefully degrades when the later isn't present.
 C<Params::Check> implements a generic input parsing/checking mechanism. It
 is used by CPANPLUS.
 
+=item *
+
+C<Term::UI> simplifies the task to ask questions at a terminal prompt.
+
+=item *
+
+C<Object::Accessor> provides an interface to create per-object accessors.
+
 =back
 
 =head2 Module changes
@@ -172,6 +225,11 @@ anymore, and will require parentheses to be added after the function name:
     require Carp;
     Carp::confess "argh";
 
+=item C<Attribute::Handlers>
+
+C<Attribute::Handlers> can now report the caller's file and line number.
+(David Feldman)
+
 =back
 
 =head1 Utility Changes
@@ -188,17 +246,34 @@ Efforts have been made to make perl and the core XS modules compilable
 with various C++ compilers (although the situation is not perfect with
 some of the compilers on some of the platforms tested.)
 
+=head2 Static build on Win32
+
+It's now possible to build a C<perl-static.exe> that doesn't depend
+on C<perl59.dll> on Win32. See the Win32 makefiles for details.
+(Steve Hay)
+
 =head2 Ports
 
 Perl has been reported to work on MidnightBSD.
 
 =head1 Selected Bug Fixes
 
-PerlIO::scalar will now prevent writing to read-only scalars.
+PerlIO::scalar will now prevent writing to read-only scalars. Moreover,
+seek() is now supported with PerlIO::scalar-based filehandles, the
+underlying string being zero-filled as needed.
 
 study() never worked for UTF-8 strings, but could lead to false results.
 It's now a no-op on UTF-8 data. (Yves Orton)
 
+The signals SIGILL, SIGBUS and SIGSEGV are now always delivered in an
+"unsafe" manner (contrary to other signals, that are deferred until the
+perl interpreter reaches a reasonably stable state; see
+L<perlipc/"Deferred Signals (Safe Signals)">).
+
+When a module or a file is loaded through an @INC-hook, and when this hook
+has set a filename entry in %INC, __FILE__ is now set for this module
+accordingly to the contents of that %INC entry.
+
 =head1 New or Changed Diagnostics
 
 =head1 Changed Internals