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 db10827..47710a8 100644 (file)
@@ -11,6 +11,33 @@ between 5.8.0 and 5.9.4.
 
 =head1 Incompatible Changes
 
+=head2 Tainting and printf
+
+When perl is run under taint mode, C<printf()> and C<sprintf()> will now
+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
+
+C<perlcc>, the byteloader and the supporting modules (B::C, B::CC,
+B::Bytecode, etc.) are no longer distributed with the perl sources. Those
+experimental tools have never worked reliably, and, due to the lack of
+volunteers to keep them in line with the perl interpreter developments, it
+was decided to remove them instead of shipping a broken version of those.
+The last version of those modules can be found with perl 5.9.4.
+
+However the B compiler framework stays supported in the perl core, as with
+the more useful modules it has permitted (among others, B::Deparse and
+B::Concise).
+
+=head2 Removal of the JPL
+
+The JPL (Java-Perl Linguo) has been removed from the perl sources tarball.
+
 =head1 Core Enhancements
 
 =head2 Regular expressions
@@ -47,7 +74,7 @@ nested balanced angle brackets:
 Note, users experienced with PCRE will find that the Perl implementation
 of this feature differs from the PCRE one in that it is possible to
 backtrack into a recursed pattern, whereas in PCRE the recursion is
-atomic or "possessive" in nature.
+atomic or "possessive" in nature. (Yves Orton)
 
 =item Named Capture Buffers
 
@@ -76,16 +103,44 @@ is sequential, and not "unnamed first, then named". Thus in the pattern
 
 $1 will be 'A', $2 will be 'B', $3 will be 'C' and $4 will be 'D' and not
 $1 is 'A', $2 is 'C' and $3 is 'B' and $4 is 'D' that a .NET programmer
-would expect. This is considered a feature. :-)
+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.
+quantifiers. (Yves Orton)
+
+=item Backtracking control verbs
+
+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
 
@@ -96,10 +151,61 @@ denotes a scalar), but defaults to C<$_> if the corresponding argument
 isn't supplied. Due to the optional nature of the argument, you can only
 use it at the end of a prototype, or before a semicolon.
 
+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
+been updated to version 5.0.0.
+
 =head1 Modules and Pragmas
 
 =head2 New Core Modules
 
+=over 4
+
+=item *
+
+C<Locale::Maketext::Simple>, needed by CPANPLUS, is a simple wrapper around
+C<Locale::Maketext::Lexicon>. Note that C<Locale::Maketext::Lexicon> isn't
+included in the perl core; the behaviour of C<Locale::Maketext::Simple>
+gracefully degrades when the later isn't present.
+
+=item *
+
+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
 
 =over 4
@@ -108,6 +214,22 @@ use it at the end of a prototype, or before a semicolon.
 
 The C<base> pragma now warns if a class tries to inherit from itself.
 
+=item C<warnings>
+
+The C<warnings> pragma doesn't load C<Carp> anymore. That means that code
+that used C<Carp> routines without having loaded it at compile time might
+need to be adjusted; typically, the following (faulty) code won't work
+anymore, and will require parentheses to be added after the function name:
+
+    use warnings;
+    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
@@ -118,12 +240,48 @@ The C<base> pragma now warns if a class tries to inherit from itself.
 
 =head1 Installation and Configuration Improvements
 
+=head2 C++ compatibility
+
+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. 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
 
+The anonymous hash and array constructors now take 1 op in the optree
+instead of 3, now that pp_anonhash and pp_anonlist return a reference to
+an hash/array when the op is flagged with OPf_SPECIAL (Nicholas Clark).
+
 =head1 Known Problems
 
 =head2 Platform Specific Problems