Proxy Constant Subroutines are in, so are an enhancement to note, even
authorNicholas Clark <nick@ccl4.org>
Mon, 10 Nov 2008 16:41:40 +0000 (16:41 +0000)
committerNicholas Clark <nick@ccl4.org>
Mon, 10 Nov 2008 16:41:40 +0000 (16:41 +0000)
though they are disabled by default.
Clean up "new tests":
* add descriptions of all the new test files in t
  (and wonder why two that test things in lib/ are there)
* move information about tests in modules to the modules section
* move platform specific information about tests to that section
some style tidying.

p4raw-id: //depot/maint-5.8/perl@34794

pod/perl589delta.pod

index 2569c8f..e7ecdd8 100644 (file)
@@ -118,6 +118,26 @@ C<-Dv> display the process id as part of the trace output.
 Some pure-perl code that perl was using to retrieve Unicode properties and
 transliteration mappings has been reimplemented in XS.
 
+=head2 Constant subroutines
+
+The interpreter internals now support a far more memory efficient form of
+inlineable constants. Storing a reference to a constant value in a symbol
+table is equivalent to a full typeglob referencing a constant subroutine,
+but using about 400 bytes less memory. This proxy constant subroutine is
+automatically upgraded to a real typeglob with subroutine if necessary.
+The approach taken is analogous to the existing space optimisation for
+subroutine stub declarations, which are stored as plain scalars in place
+of the full typeglob.
+
+However, to aid backwards compatibility of existing code, which (wrongly)
+does not expect anything other than typeglobs in symbol tables, nothing in
+core uses this feature, other than the regression tests.
+
+Stubs for prototyped subroutines have been stored in symbol tables as plain
+strings, and stubs for unprototyped subroutines as the number -1, since 5.005,
+so code which assumes that the core only places typeglobs in symbol tables
+has been making incorrect assumptions for over 10 years.
+
 =head1 New Platforms
 
 Compile support added for:
@@ -301,6 +321,19 @@ C<B::Terse> upgraded to version 1.05
 
 C<base> upgraded to version 2.13
 
+=over 4
+
+=item *
+
+Loading a module via base.pm would mask a global C<$SIG{__DIE__}> in that
+module.
+
+=item *
+
+push all classes at once in C<@ISA>
+
+=back
+
 =item *
 
 C<Benchmark> upgraded to version 1.10
@@ -313,6 +346,8 @@ C<bignum> upgraded to 0.23
 
 C<Carp> upgraded to version 1.10
 
+Carp's argument backtrace code would show undef as "undef" - a string.
+
 =item *
 
 C<CGI> upgraded to version 3.42
@@ -920,7 +955,7 @@ C<XSLoader> upgraded to version 0.10
 =item *
 
 C<XS::APItest> and C<XS::Typemap> are for internal use only and hence
-no longer installed.
+no longer installed. Many more tests have been added to C<XS::APItest>.
 
 =back
 
@@ -1272,6 +1307,10 @@ been chosen.
 Passing a raw string of "NaN" to L<nawk> causes a core dump - so the string
 has been changed to "*NaN*"
 
+=item *
+
+F<t/op/stat.t> tests will now test hard links on VMS if they are supported.
+
 =back
 
 =head3 Windows
@@ -1308,6 +1347,10 @@ Add Win32 makefile option to link all extensions statically.
 
 The F<WinCE> directory has been merged into the F<Win32> directory.
 
+=item *
+
+C<setlocale> tests have been re-enabled for Windows XP onwards.
+
 =back
 
 =head1 Selected Bug Fixes
@@ -1492,7 +1535,7 @@ bracket) instead of just C<$10>.
 
 =item *
 
-Fix bug RT #45053, newCONSTSUB() is now thread safe.
+Fix bug RT #45053, C<Perl_newCONSTSUB> is now thread safe.
 
 =back
 
@@ -1601,7 +1644,7 @@ Aligned floating point build policies for F<cc> and F<gcc>.
 
 =item *
 
-Revisited a patch from 5.6.1 for RH7.2 for Intel's F<icc> (RT #7916), added an
+Revisited a patch from 5.6.1 for RH7.2 for Intel's F<icc> [RT #7916], added an
 aditional check for C<$Config{gccversion}>.
 
 =back
@@ -1626,8 +1669,7 @@ It is now possible to overload C<eq> when using C<nomethod>.
 
 =item *
 
-Various problems using L<overload> with 64-bit ints corrected (identified
-in new tests).
+Various problems using L<overload> with 64 bit integers corrected.
 
 =item *
 
@@ -1837,134 +1879,115 @@ particularly C<PL_na>, which is a small performance hit.
 
 =head1 New Tests
 
-=over 4
-
-=item * 
-
-Regression tests for sprintf with 64 bit semantics (30058).
+Many modules updated from CPAN incorporate new tests. Some core specific
+tests have been added:
 
-=item *
-
-Tests for L<overload> for 64-bit ints (32141).
-
-=item *
-
-Tests for tainting and C<open> with C<|-> as second argument (30048).
-
-=item *
+=over 4
 
-C<exit> can now be called in expressions that the optimizer constant-folds
-(29976).
+=item ext/DynaLoader/t/DynaLoader.t
 
-=item *
+Tests for the C<DynaLoader> module.
 
-Test smallbuf overflow in S_incline (30024)
+=item t/comp/fold.t
 
-=item *
+Tests for compile-time constant folding.
 
-Tests for mathematical functions in L<POSIX>
+=item t/io/pvbm.t
 
-=item *
+Tests incorporated from 5.10.0 which check that there is no unexpected
+interaction between the internal types C<PVBM> and C<PVGV>
 
-Verify POSIX::AUTOLOAD works (29592)
+=item t/lib/proxy_constant_subs.t
 
-=item *
+Tests for the new form of constant subroutines.
 
-Remove C<DynaLoader> from C<1_compile.t> as it's now part of C<libperl.so>
-(27549, 27566, 28226, 28227, 28228, 28274, 28308). Also skip failure test on
-these patforms: VMS, darwin, OpenBSD, and cygwin (28333, 28840, 29253, 29707).
+=item t/op/attrhand.t
 
-=item *
+Tests for C<Attribute::Handlers>
 
-Added bitflip hash tests (31914, 31915)
+=item t/op/dbm.t
 
-=item *
+Tests for C<dbmopen>
 
-Tests for C<hv_delete>, C<hv_exists>, C<hv_fetch>, C<hv_store> (31905, 31912)
+=item t/op/inccode-tie.t
 
-=item *
+Calls all tests in F<t/op/inccode.t> after first tying C<@INC>.
 
-Test disabling key conversion in hash lookups (31923)
+=item t/op/incfilter.t
 
-=back
+Tests for for source filters returned from code references in C<@INC>.
 
-=over 4
+=item t/op/kill0.t
 
-=item *
+Tests for RT #30970
 
-Significantly improved testing for C<$/> usage with C<PerlIO::Scalar> in-memory
-files.
+=item t/op/qrstack.t
 
-=item *
+Tests for RT #41484
 
-Test both C<MY_CXT> and C<MY_CXT_INTERP> in the CXT API.
+=item t/op/qr.t
 
-=item *
+Tests for the qr// construct
 
-Added test to run regex substitution C<s///> under taint mode (29618).
+=item t/op/regexp_qr_embed.t
 
-=item *
+Tests for the qr// construct within another regexp
 
-Tests for L<Thread>.
+=item t/op/regexp_qr.t
 
-=item *
+Tests for the qr// construct
 
-Regression tests for L<base> manipulation of C<@ISA> under certain
-inheritance conditions. (32469)
+=item t/op/rxcode.t
 
-=item *
+Tests for RT #32840
 
-Test that L<base> does not mask C<SIGDIE>. (32469)
+=item t/op/studytied.t
 
-=item *
+Tests for C<study> on tied scalars
 
-Test that L<base> does not confuse the version. (32469)
+=item t/op/substT.t
 
-=item *
+Tests for C<subst> run under C<-T> mode
 
-Test that inheriting from a base with protected fields generates a warning.
-(32469)
+=item t/op/symbolcache.t
 
-=item *
+Tests for C<undef> and C<delete> on stash entries that are bound to subroutines or methods.
 
-Test that L<base> can coexist with a L<consant> called C<FIELDS>. (31420)
+=item t/op/upgrade.t
 
-=item *
+Tests for C<Perl_sv_upgrade>
 
-Test that L<Carp::cluck> correctly reports undef values. (31858)
+=item t/pod/twice.t
 
-=item *
+Tests for calling C<Pod::Parser> twice
 
-Test that C<$@> is correctly localised in L<Locale::Maketext>. (25547)
+=item t/run/cloexec.t
 
-=item *
+Tests for inheriting file descriptors across C<exec> (close-on-exec)
 
-B<TODO> test for "C<goto()> from an if to an else doesn't undo local". (RT #43403)
+=item t/uni/cache.t
 
-=back
+Tests for the UTF-8 caching code.
 
-=head1 Changed Tests
+=item t/uni/chr.t
 
-=over 4
+Test that strange encodings do not upsets C<Perl_pp_chr>
 
-=item *
+=item t/uni/greek.t
 
-C<setlocale()> tests have been re-enabled for Windows XP onwards. (31491)
+Tests for RT #40641
 
-=item *
+=item t/uni/latin2.t
 
-C<commonsense.t> tests no longer require that C<DB_File> or C<*DBM_File> are
-included. (31528)
+Tests for RT #40641
 
-=item *
+=item t/uni/overload.t
 
-Printing to C<stdout> by C<TabsWrap> tests has been consolidated to avoid
-problems with VMS pipes. (31646)
+Tests for returning Unicode from overloaded values.
 
-=item *
+=item t/uni/tie.t
 
-C<t/op/stat.t> tests will now test hard links on VMS if they are supported.
-(31665, 31666)
+Tests for returning Unicode from tied variables.
 
 =back