This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document the ExtUtils::ParseXS changes in perldelta
[perl5.git] / pod / perldelta.pod
index 6ee5362..69677bb 100644 (file)
@@ -48,6 +48,19 @@ The restriction that you can only have one C<study> active at a time has been
 removed. You can now usefully C<study> as many strings as you want (until you
 exhaust memory).
 
+=head2 The Unicode C<Script_Extensions> property is now supported.
+
+New in Unicode 6.0, this is an improved C<Script> property.  Details
+are in L<perlunicode/Scripts>.
+
+=head2 DTrace probes for interpreter phase change
+
+The C<phase-change> probes will fire when the interpreter's phase
+changes, which tracks the C<${^GLOBAL_PHASE}> variable. C<arg0> is
+the new phase name; C<arg1> is the old one. This is useful mostly
+for limiting your instrumentation to one or more of: compile time,
+run time, destruct time.
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -84,7 +97,7 @@ may well be none in a stable release.
 
 =item *
 
-The implementation of C<s///r> makes one fewer copy of the scalar's value.
+The implementation of C<s///r> makes one less copy of the scalar's value.
 
 =item *
 
@@ -97,6 +110,11 @@ C<study> now uses considerably less memory for shorter strings. Strings shorter
 than 65535 characters use roughly half the memory than previously, strings
 shorter than 255 characters use roughly one quarter of the memory.
 
+=item *
+
+Recursive calls to lvalue subroutines in lvalue scalar context use less
+memory.
+
 =back
 
 =head1 Modules and Pragmata
@@ -127,6 +145,54 @@ XXX
 
 =item *
 
+L<ExtUtils::ParseXS> has been upgraded from version XXX to version XXX.
+
+Much of L<ExtUtils::ParseXS>, the module behind the XS compiler C<xsubpp>,
+was rewritten and cleaned up. It has been made somewhat more extensible
+and now finally uses strictures.
+
+The logic for parsing, merging, and dumping XS typemaps was extracted
+from C<ExtUtils::ParseXS> into a module of its own, L<ExtUtils::Typemaps>.
+C<ExtUtils::Typemaps> offers an interface to typemap handling outside of
+the scope of the XS compiler itself.
+
+As a first use case of the improved API an extensibility, typemaps can now
+be included inline into XS code with a HEREDOC-like syntax:
+
+  TYPEMAP: <<END_TYPEMAP
+  MyType       T_IV
+  END_TYPEMAP
+
+=item *
+
+L<CGI> has been upgraded from version 3.54 to version 3.55
+
+[THINGS THAT MAY BREAK YOUR CODE]
+
+C<url()> was fixed to return C<PATH_INFO> when it is explicitly requested
+with either the path=>1 or path_info=>1 flag.
+
+If your code is running under mod_rewrite (or compatible) and you are calling C<self_url()> or
+you are calling C<url()> and passing path_info=>1, These methods will actually be
+returning C<PATH_INFO> now, as you have explicitly requested, or has C<self_url()>
+has requested on your behalf.
+
+The C<PATH_INFO> has been omitted in such URLs since the issue was introduced
+in the 3.12 release in December, 2005.
+
+This bug is so old your application may have come to depend on it or
+workaround it. Check for application before upgrading to this release.
+
+Examples of affected method calls:
+
+  $q->url(-absolute => 1, -query => 1, -path_info => 1 )
+  $q->url(-path=>1)
+  $q->url(-full=>1,-path=>1)
+  $q->url(-rewrite=>1,-path=>1)
+  $q->self_url();
+
+=item *
+
 L<Compress::Raw::Bzip2> has been upgraded from version 2.035 to version 2.037
 
 =item *
@@ -146,7 +212,7 @@ IO::Compress::Zip when the content size was exactly 0xFFFFFFFF.
 
 =item *
 
-L<CPANPLUS> has been upgraded from version 0.9105 to version 0.9106
+L<CPANPLUS> has been upgraded from version 0.9105 to version 0.9107
 
 =item *
 
@@ -194,6 +260,10 @@ performance under ithreads.
 
 =item *
 
+L<Pod::Simple> has been upgraded from version 3.16 to version 3.17
+
+=item *
+
 L<Unicode::Collate> has been upgraded from version 0.76 to version 0.77
 
 Applied [perl #93470] silencing compiler warnings with -Wwrite-strings
@@ -236,9 +306,10 @@ file and be sure to link to the appropriate page, e.g. L<perlfunc>.
 
 XXX Changes which create B<new> files in F<pod/> go here.
 
-=head3 L<XXX>
+=head3 L<perldtrace>
 
-XXX Description of the purpose of the new file here
+L<perldtrace> describes Perl's DTrace support, listing the provided probes
+and gives examples of their use.
 
 =head2 Changes to Existing Documentation
 
@@ -254,6 +325,10 @@ section.
 
 XXX Description of the change here
 
+=item *
+
+L<perlxs> was extended with documentation on inline typemaps.
+
 =back
 
 =head1 Diagnostics
@@ -359,7 +434,11 @@ that they represent may be covered elsewhere.
 
 =item *
 
-XXX
+F<t/run/dtrace.t> was added to test Perl's DTrace support. This
+test will only be run if your Perl was built with C<-Dusedtrace>
+and if calling C<dtrace> actually lets you instrument code. This
+generally requires being run as root, so this test file is primarily
+intended for use by the dtrace subcommittee of p5p.
 
 =back
 
@@ -487,6 +566,20 @@ A minor memory leak, introduced in 5.15.0, has been fixed.  It would occur
 when a hash is freed that has had its current iterator deleted
 [perl #93454].
 
+=item *
+
+The C<prototype> function now returns a prototype (the empty string) for
+the C<__FILE__>, C<__LINE__> and C<__PACKAGE__> directives, instead of
+dying, as they are indistinguishable syntactically from nullary functions
+like C<time>.
+
+=item *
+
+A bug affecting lvalue context propagation through nested lvalue subroutine
+calls has been fixed.  Previously, returning a value in nested rvalue
+context would be treated as lvalue context by the inner subroutine call,
+resulting in some values (such as read-only values) being rejected.
+
 =back
 
 =head1 Known Problems