This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Merge Storable improvements (XS tidying, test failures on older perls).
authorNicholas Clark <nick@ccl4.org>
Wed, 14 Sep 2011 10:55:11 +0000 (12:55 +0200)
committerNicholas Clark <nick@ccl4.org>
Wed, 14 Sep 2011 10:55:11 +0000 (12:55 +0200)
dist/Storable/Makefile.PL
dist/Storable/Storable.pm
dist/Storable/Storable.xs
dist/Storable/t/code.t
pod/perldelta.pod

index e40f5c5..bcfd9e0 100644 (file)
@@ -13,11 +13,14 @@ WriteMakefile(
     DISTNAME            => "Storable",
 # We now ship this in t/
 #    PREREQ_PM           => { 'Test::More' => '0.41' },
+    PREREQ_PM           => { XSLoader => 0 },
     INSTALLDIRS                => $] >= 5.007 ? 'perl' : 'site',
     VERSION_FROM        => 'Storable.pm',
-    META_MERGE          => { resources =>
+    ($ExtUtils::MakeMaker::VERSION > 6.45 ?
+     (META_MERGE        => { resources =>
                                { bugtracker => 'http://rt.perl.org/perlbug/' }
                            },
+    ) : ()),
     dist                => { SUFFIX => 'gz', COMPRESS => 'gzip -f' },
 );
 
index 95fe93c..3e995c3 100644 (file)
@@ -21,7 +21,7 @@ package Storable; @ISA = qw(Exporter);
 
 use vars qw($canonical $forgive_me $VERSION);
 
-$VERSION = '2.31';
+$VERSION = '2.32';
 
 BEGIN {
     if (eval { local $SIG{__DIE__}; require Log::Agent; 1 }) {
@@ -69,7 +69,7 @@ sub CLONE {
 $Storable::downgrade_restricted = 1;
 $Storable::accept_future_minor = 1;
 
-XSLoader::load 'Storable', $Storable::VERSION;
+XSLoader::load('Storable', $Storable::VERSION);
 
 #
 # Determine whether locking is possible, but only when needed.
index 8ce0bec..38e266d 100644 (file)
@@ -22,6 +22,7 @@
 #define NEED_vload_module
 #define NEED_newCONSTSUB
 #define NEED_newSVpvn_flags
+#define NEED_newRV_noinc
 #include "ppport.h"             /* handle old perls */
 #endif
 
  * Earlier versions of perl might be used, we can't assume they have the latest!
  */
 
-#ifndef PERL_VERSION           /* For perls < 5.6 */
-#define PERL_VERSION PATCHLEVEL
-#ifndef newRV_noinc
-#define newRV_noinc(sv)                ((Sv = newRV(sv)), --SvREFCNT(SvRV(Sv)), Sv)
-#endif
-#if (PATCHLEVEL <= 4)          /* Older perls (<= 5.004) lack PL_ namespace */
-#define PL_sv_yes      sv_yes
-#define PL_sv_no       sv_no
-#define PL_sv_undef    sv_undef
-#if (SUBVERSION <= 4)          /* 5.004_04 has been reported to lack newSVpvn */
-#define newSVpvn newSVpv
-#endif
-#endif                                         /* PATCHLEVEL <= 4 */
 #ifndef HvSHAREKEYS_off
 #define HvSHAREKEYS_off(hv)    /* Ignore */
 #endif
-#ifndef AvFILLp                                /* Older perls (<=5.003) lack AvFILLp */
-#define AvFILLp AvFILL
-#endif
-typedef double NV;                     /* Older perls lack the NV type */
-#define        IVdf            "ld"    /* Various printf formats for Perl types */
-#define        UVuf            "lu"
-#define        UVof            "lo"
-#define        UVxf            "lx"
-#define INT2PTR(t,v) (t)(IV)(v)
-#define PTR2UV(v)    (unsigned long)(v)
-#endif                                         /* PERL_VERSION -- perls < 5.6 */
-
-#ifndef NVef                           /* The following were not part of perl 5.6 */
-#if defined(USE_LONG_DOUBLE) && \
-       defined(HAS_LONG_DOUBLE) && defined(PERL_PRIfldbl)
-#define NVef           PERL_PRIeldbl
-#define NVff           PERL_PRIfldbl
-#define NVgf           PERL_PRIgldbl
-#else
-#define        NVef            "e"
-#define        NVff            "f"
-#define        NVgf            "g"
-#endif
-#endif
 
 /* perl <= 5.8.2 needs this */
 #ifndef SvIsCOW
 # define SvIsCOW(sv) 0
 #endif
 
-#ifndef SvRV_set
-#define SvRV_set(sv, val) \
-    STMT_START { \
-        assert(SvTYPE(sv) >=  SVt_RV); \
-        (((XRV*)SvANY(sv))->xrv_rv = (val)); \
-    } STMT_END
-#endif
-
-#ifndef PERL_UNUSED_DECL
-#  ifdef HASATTRIBUTE
-#    if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER)
-#      define PERL_UNUSED_DECL
-#    else
-#      define PERL_UNUSED_DECL __attribute__((unused))
-#    endif
-#  else
-#    define PERL_UNUSED_DECL
-#  endif
-#endif
-
-#ifndef dNOOP
-#define dNOOP extern int Perl___notused PERL_UNUSED_DECL
-#endif
-
-#ifndef dVAR
-#define dVAR dNOOP
-#endif
-
 #ifndef HvRITER_set
 #  define HvRITER_set(hv,r)    (HvRITER(hv) = r)
 #endif
@@ -137,14 +73,14 @@ typedef double NV;                 /* Older perls lack the NV type */
 #  define HvEITER_get HvEITER
 #endif
 
-#ifndef HvNAME_get
-#define HvNAME_get HvNAME
-#endif
-
 #ifndef HvPLACEHOLDERS_get
 #  define HvPLACEHOLDERS_get HvPLACEHOLDERS
 #endif
 
+#ifndef HvTOTALKEYS
+#  define HvTOTALKEYS(hv)      HvKEYS(hv)
+#endif
+
 #ifdef DEBUGME
 
 #ifndef DASSERT
@@ -2290,12 +2226,7 @@ sortcmp(const void *a, const void *b)
 static int store_hash(pTHX_ stcxt_t *cxt, HV *hv)
 {
        dVAR;
-       I32 len = 
-#ifdef HAS_RESTRICTED_HASHES
-            HvTOTALKEYS(hv);
-#else
-            HvKEYS(hv); /* Not HvUSEDKEYS, as 5.6 lacketh it */
-#endif
+       I32 len = HvTOTALKEYS(hv);
        I32 i;
        int ret = 0;
        I32 riter;
@@ -6458,23 +6389,20 @@ SV *    sv
  OUTPUT:
   RETVAL
 
-bool
+void
 last_op_in_netorder()
- CODE:
-  RETVAL = !!last_op_in_netorder(aTHX);
- OUTPUT:
-  RETVAL
-
-bool
-is_storing()
  ALIAS:
  is_storing = ST_STORE
  is_retrieving = ST_RETRIEVE
- CODE:
- {
-  dSTCXT;
-
-  RETVAL = cxt->entry && (cxt->optype & ix) ? TRUE : FALSE;
- }
- OUTPUT:
-  RETVAL
+ PREINIT:
+  bool result;
+ PPCODE:
+  if (ix) {
+   dSTCXT;
+
+   result = cxt->entry && (cxt->optype & ix) ? TRUE : FALSE;
+  } else {
+   result = !!last_op_in_netorder(aTHX);
+  }
+  ST(0) = boolSV(result);
+  XSRETURN(1);
index 687a6d1..c383142 100644 (file)
@@ -60,7 +60,7 @@ local *FOO;
       \&Another::Package::foo,  # code in another package
       sub ($$;$) { 0 },         # prototypes
       sub { print "test\n" },
-      \&Test::More::ok,               # large scalar
+      \&Storable::_store,       # large scalar
      ],
 
      {"a" => sub { "srt" }, "b" => \&code},
index 015c828..b312390 100644 (file)
@@ -294,6 +294,14 @@ instead of 0. On most platforms C<TCSANOW> is defined as 0, but on some
 
 =item *
 
+L<Storable> has been upgraded from version 2.31 to version 2.32.
+
+XS code which duplicates functionality of F<ppport.h> has been removed.
+Tests should now pass on older versions of L<Test::More>. Storable now
+builds and passes tests back to perl 5.004.
+
+=item *
+
 L<XSLoader> has been upgraded from version 0.15 to version 0.16.
 
 =back