Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-Sereal-Decoder for
openSUSE:Factory checked in at 2022-09-09 18:27:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Sereal-Decoder (Old)
and /work/SRC/openSUSE:Factory/.perl-Sereal-Decoder.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Sereal-Decoder"
Fri Sep 9 18:27:49 2022 rev:12 rq:1002182 version:5.001
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Sereal-Decoder/perl-Sereal-Decoder.changes
2022-08-16 17:08:32.720021931 +0200
+++
/work/SRC/openSUSE:Factory/.perl-Sereal-Decoder.new.2083/perl-Sereal-Decoder.changes
2022-09-09 18:29:22.229243157 +0200
@@ -1,0 +2,6 @@
+Sun Sep 4 03:12:20 UTC 2022 - Tina M??ller <[email protected]>
+
+- updated to 5.001
+ see /usr/share/doc/packages/perl-Sereal-Decoder/Changes
+
+-------------------------------------------------------------------
Old:
----
Sereal-Decoder-4.025.tar.gz
New:
----
Sereal-Decoder-5.001.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Sereal-Decoder.spec ++++++
--- /var/tmp/diff_new_pack.bcD0QQ/_old 2022-09-09 18:29:22.645244252 +0200
+++ /var/tmp/diff_new_pack.bcD0QQ/_new 2022-09-09 18:29:22.649244263 +0200
@@ -18,7 +18,7 @@
%define cpan_name Sereal-Decoder
Name: perl-Sereal-Decoder
-Version: 4.025
+Version: 5.001
Release: 0
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Binary serialization module for Perl (decoder part)
++++++ Sereal-Decoder-4.025.tar.gz -> Sereal-Decoder-5.001.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/Changes
new/Sereal-Decoder-5.001/Changes
--- old/Sereal-Decoder-4.025/Changes 2022-07-28 13:57:13.000000000 +0200
+++ new/Sereal-Decoder-5.001/Changes 2022-09-03 15:37:06.000000000 +0200
@@ -1,10 +1,32 @@
Revision history for Perl extension Sereal-Decoder
****************************************************************
-* Warning: For a seamless upgrade, upgrade to version 4 *
-* of the decoder before upgrading to version 4 of the *
+* Warning: For a seamless upgrade, upgrade to version 5 *
+* of the decoder before upgrading to version 5 of the *
* encoder! *
****************************************************************
+5.001
+ * First official release of protocol 5. Better support for non
+ standard NV types. Support for the new Perl 5.36 bools.
+ Upgrade *Sereal::Decoder* FIRST.
+
+5.000_002
+ * Prerelease CPAN testing. Build fixes for quadmath and
+ longdouble perls. Certain tests were failing with the old
+ versions which were subtly broken on quadmath or longdouble
+ machines. These tests are now skipped on these builds. You
+ will not be able to fully test this platform until you install
+ the Decoder, and then install the Encoder.
+
+5.000_001
+ * Prerelease CPAN testing for 5.000_000.
+
+5.000_000 Tue Aug 30, 2022
+ * Support quadmath builds with FLOAT_128 tag type.
+ * Support YES/NO tags for booleans. Requires perl 5.36.
+
+---
+
4.025 Thr Jul 28, 2022
* Release with build fixes for threaded perls and MANIFEST
update. Oops.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/MANIFEST
new/Sereal-Decoder-5.001/MANIFEST
--- old/Sereal-Decoder-4.025/MANIFEST 2022-07-28 14:05:36.000000000 +0200
+++ new/Sereal-Decoder-5.001/MANIFEST 2022-09-03 15:40:34.000000000 +0200
@@ -111,6 +111,23 @@
t/700_roundtrip/v4/zlib_force.t
t/700_roundtrip/v4/zstd.t
t/700_roundtrip/v4/zstd_force.t
+t/700_roundtrip/v5/dedudep_strings.t
+t/700_roundtrip/v5/freeze_thaw.t
+t/700_roundtrip/v5/plain.t
+t/700_roundtrip/v5/plain_canon.t
+t/700_roundtrip/v5/readonly.t
+t/700_roundtrip/v5/snappy.t
+t/700_roundtrip/v5/snappy_and_warn_unknown.t
+t/700_roundtrip/v5/snappy_canon.t
+t/700_roundtrip/v5/snappy_incr.t
+t/700_roundtrip/v5/snappy_incr_canon.t
+t/700_roundtrip/v5/sort_keys.t
+t/700_roundtrip/v5/sort_keys_perl.t
+t/700_roundtrip/v5/sort_keys_perl_rev.t
+t/700_roundtrip/v5/zlib.t
+t/700_roundtrip/v5/zlib_force.t
+t/700_roundtrip/v5/zstd.t
+t/700_roundtrip/v5/zstd_force.t
t/800_threads.t
t/900_regr_issue_15.t
t/901_regr_segv.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/META.json
new/Sereal-Decoder-5.001/META.json
--- old/Sereal-Decoder-4.025/META.json 2022-07-28 14:05:36.000000000 +0200
+++ new/Sereal-Decoder-5.001/META.json 2022-09-03 15:40:34.000000000 +0200
@@ -70,6 +70,6 @@
"url" : "git://github.com/Sereal/Sereal.git"
}
},
- "version" : "4.025",
- "x_serialization_backend" : "JSON::PP version 4.07"
+ "version" : "5.001",
+ "x_serialization_backend" : "JSON::PP version 4.11"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/META.yml
new/Sereal-Decoder-5.001/META.yml
--- old/Sereal-Decoder-4.025/META.yml 2022-07-28 14:05:36.000000000 +0200
+++ new/Sereal-Decoder-5.001/META.yml 2022-09-03 15:40:34.000000000 +0200
@@ -34,5 +34,5 @@
resources:
bugtracker: https://github.com/Sereal/Sereal/issues
repository: git://github.com/Sereal/Sereal.git
-version: '4.025'
+version: '5.001'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/author_tools/hobodecoder.pl
new/Sereal-Decoder-5.001/author_tools/hobodecoder.pl
--- old/Sereal-Decoder-4.025/author_tools/hobodecoder.pl 2022-02-20
04:51:47.000000000 +0100
+++ new/Sereal-Decoder-5.001/author_tools/hobodecoder.pl 2022-08-30
18:57:40.000000000 +0200
@@ -112,7 +112,7 @@
$hlen= length($done);
}
-my ( $len_f, $len_d, $len_D );
+my ( $len_f, $len_d, $len_D, $len_F );
sub parse_float {
$len_f ||= length( pack( "f", 0 ) );
@@ -121,6 +121,14 @@
return unpack( "f", $v );
}
+sub parse_float_128 {
+ $len_F ||= length( pack( "F", 0 ) );
+ my $v= _chop_data_prefix($len_F);
+ $done .= $v;
+ return unpack( "F", $v );
+}
+
+
sub parse_double {
$len_d ||= length( pack( "d", 0 ) );
my $v= _chop_data_prefix($len_d);
@@ -190,6 +198,9 @@
elsif ( $o == SRL_HDR_LONG_DOUBLE ) {
printf "LONG_DOUBLE(%f)\n", parse_long_double();
}
+ elsif ( $o == SRL_HDR_FLOAT_128 ) {
+ printf "FLOAT_128(%f)\n", parse_float_128();
+ }
elsif ( $o == SRL_HDR_REFN ) {
printf "REFN\n";
parse_sv( $ind . " " );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/inc/Sereal/BuildTools.pm
new/Sereal-Decoder-5.001/inc/Sereal/BuildTools.pm
--- old/Sereal-Decoder-4.025/inc/Sereal/BuildTools.pm 2022-02-20
05:05:20.000000000 +0100
+++ new/Sereal-Decoder-5.001/inc/Sereal/BuildTools.pm 2022-08-30
19:40:40.000000000 +0200
@@ -145,6 +145,13 @@
grep { exists $ENV{$_} } ( qw(NOINLINE DEBUG MEMDEBUG NDEBUG),
@defs ) );
$defines .= " -DNDEBUG" unless $ENV{DEBUG};
+
+ if ($Config{usequadmath}) {
+ $defines .= " -DHAS_QUADMATH";
+ } elsif ($Config{uselongdouble}) {
+ $defines .= " -DHAS_LONGDOUBLE";
+ }
+
if ( $Config{osname} eq 'hpux' && not $Config{gccversion} ) {
# HP-UX cc does not support inline.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/lib/Sereal/Decoder/Constants.pm
new/Sereal-Decoder-5.001/lib/Sereal/Decoder/Constants.pm
--- old/Sereal-Decoder-4.025/lib/Sereal/Decoder/Constants.pm 2022-07-28
13:57:13.000000000 +0200
+++ new/Sereal-Decoder-5.001/lib/Sereal/Decoder/Constants.pm 2022-09-03
15:37:12.000000000 +0200
@@ -4,7 +4,7 @@
require Exporter;
our @ISA= qw(Exporter);
-our $VERSION= '4.025'; # Don't forget to update the TestCompat set for testing
against installed encoders!
+our $VERSION= '5.001'; # Don't forget to update the TestCompat set for testing
against installed encoders!
our ( @EXPORT_OK, %DEFINE, %TAG_INFO_HASH, @TAG_INFO_ARRAY );
@@ -26,6 +26,7 @@
"SRL_HDR_EXTEND" => 62,
"SRL_HDR_FALSE" => 58,
"SRL_HDR_FLOAT" => 34,
+ "SRL_HDR_FLOAT_128" => 56,
"SRL_HDR_HASH" => 42,
"SRL_HDR_HASHREF" => 80,
"SRL_HDR_HASHREF_HIGH" => 95,
@@ -35,6 +36,7 @@
"SRL_HDR_NEG" => 16,
"SRL_HDR_NEG_HIGH" => 31,
"SRL_HDR_NEG_LOW" => 16,
+ "SRL_HDR_NO" => 52,
"SRL_HDR_OBJECT" => 44,
"SRL_HDR_OBJECTV" => 45,
"SRL_HDR_OBJECTV_FREEZE" => 51,
@@ -47,9 +49,9 @@
"SRL_HDR_REFN" => 40,
"SRL_HDR_REFP" => 41,
"SRL_HDR_REGEXP" => 49,
- "SRL_HDR_RESERVED" => 52,
- "SRL_HDR_RESERVED_HIGH" => 56,
- "SRL_HDR_RESERVED_LOW" => 52,
+ "SRL_HDR_RESERVED" => 54,
+ "SRL_HDR_RESERVED_HIGH" => 55,
+ "SRL_HDR_RESERVED_LOW" => 54,
"SRL_HDR_SHORT_BINARY" => 96,
"SRL_HDR_SHORT_BINARY_HIGH" => 127,
"SRL_HDR_SHORT_BINARY_LOW" => 96,
@@ -59,16 +61,17 @@
"SRL_HDR_UNDEF" => 37,
"SRL_HDR_VARINT" => 32,
"SRL_HDR_WEAKEN" => 48,
+ "SRL_HDR_YES" => 53,
"SRL_HDR_ZIGZAG" => 33,
"SRL_MAGIC_STRING" => "=srl",
"SRL_MAGIC_STRING_HIGHBIT" => "=\363rl",
- "SRL_MAGIC_STRING_HIGHBIT_UINT_BE" => "1039364716",
- "SRL_MAGIC_STRING_HIGHBIT_UINT_LE" => "1819472701",
+ "SRL_MAGIC_STRING_HIGHBIT_UINT_BE" => 1039364716,
+ "SRL_MAGIC_STRING_HIGHBIT_UINT_LE" => 1819472701,
"SRL_MAGIC_STRING_HIGHBIT_UTF8" => "=\303\263rl",
- "SRL_MAGIC_STRING_HIGHBIT_UTF8_UINT_BE" => "1036235634",
- "SRL_MAGIC_STRING_HIGHBIT_UTF8_UINT_LE" => "1924383549",
- "SRL_MAGIC_STRING_UINT_BE" => "1030976108",
- "SRL_MAGIC_STRING_UINT_LE" => "1819439933",
+ "SRL_MAGIC_STRING_HIGHBIT_UTF8_UINT_BE" => 1036235634,
+ "SRL_MAGIC_STRING_HIGHBIT_UTF8_UINT_LE" => 1924383549,
+ "SRL_MAGIC_STRING_UINT_BE" => 1030976108,
+ "SRL_MAGIC_STRING_UINT_LE" => 1819439933,
"SRL_MAGIC_STRLEN" => 4,
"SRL_MASK_ARRAYREF_COUNT" => 15,
"SRL_MASK_HASHREF_COUNT" => 15,
@@ -83,7 +86,7 @@
"SRL_PROTOCOL_ENCODING_ZSTD" => 64,
"SRL_PROTOCOL_HDR_CONTINUE" => 8,
"SRL_PROTOCOL_HDR_USER_DATA" => 1,
- "SRL_PROTOCOL_VERSION" => 4,
+ "SRL_PROTOCOL_VERSION" => 5,
"SRL_PROTOCOL_VERSION_BITS" => 4,
"SRL_PROTOCOL_VERSION_MASK" => 15
);
@@ -602,52 +605,48 @@
# autoupdated by Sereal.git:Perl/shared/author_tools/update_from_header.pl
do not modify directly!
{
- "comment" => "reserved",
- "masked" => 1,
- "masked_val" => 0,
- "name" => "RESERVED_0",
- "type_name" => "RESERVED",
+ "comment" => "SvIsBOOL() == PL_No, 5.36 and later only (json
false)",
+ "name" => "NO",
+ "type_name" => "NO",
"type_value" => 52,
"value" => 52
},
# autoupdated by Sereal.git:Perl/shared/author_tools/update_from_header.pl
do not modify directly!
{
- "masked" => 1,
- "masked_val" => 1,
- "name" => "RESERVED_1",
- "type_name" => "RESERVED",
- "type_value" => 52,
+ "comment" => "SvIsBOOL() == PL_Yes, 5.36 and later only (json
true)",
+ "name" => "YES",
+ "type_name" => "YES",
+ "type_value" => 53,
"value" => 53
},
# autoupdated by Sereal.git:Perl/shared/author_tools/update_from_header.pl
do not modify directly!
{
"masked" => 1,
- "masked_val" => 2,
- "name" => "RESERVED_2",
+ "masked_val" => 0,
+ "name" => "RESERVED_0",
"type_name" => "RESERVED",
- "type_value" => 52,
+ "type_value" => 54,
"value" => 54
},
# autoupdated by Sereal.git:Perl/shared/author_tools/update_from_header.pl
do not modify directly!
{
"masked" => 1,
- "masked_val" => 3,
- "name" => "RESERVED_3",
+ "masked_val" => 1,
+ "name" => "RESERVED_1",
"type_name" => "RESERVED",
- "type_value" => 52,
+ "type_value" => 54,
"value" => 55
},
# autoupdated by Sereal.git:Perl/shared/author_tools/update_from_header.pl
do not modify directly!
{
- "masked" => 1,
- "masked_val" => 4,
- "name" => "RESERVED_4",
- "type_name" => "RESERVED",
- "type_value" => 52,
+ "comment" => "quadmath _float128",
+ "name" => "FLOAT_128",
+ "type_name" => "FLOAT_128",
+ "type_value" => 56,
"value" => 56
},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/lib/Sereal/Decoder.pm
new/Sereal-Decoder-5.001/lib/Sereal/Decoder.pm
--- old/Sereal-Decoder-4.025/lib/Sereal/Decoder.pm 2022-07-28
13:57:13.000000000 +0200
+++ new/Sereal-Decoder-5.001/lib/Sereal/Decoder.pm 2022-09-03
15:37:12.000000000 +0200
@@ -5,7 +5,7 @@
use Carp qw/croak/;
use XSLoader;
-our $VERSION= '4.025'; # Don't forget to update the TestCompat set for testing
against installed encoders!
+our $VERSION= '5.001'; # Don't forget to update the TestCompat set for testing
against installed encoders!
our $XS_VERSION= $VERSION; $VERSION= eval $VERSION;
# not for public consumption, just for testing.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/srl_common.h
new/Sereal-Decoder-5.001/srl_common.h
--- old/Sereal-Decoder-4.025/srl_common.h 2022-02-20 04:25:44.000000000
+0100
+++ new/Sereal-Decoder-5.001/srl_common.h 2022-08-30 20:51:38.000000000
+0200
@@ -14,6 +14,15 @@
#define expect_true(expr) expect((expr) != 0, 1)
/* these defines are somewhat borrowed from miniz.c */
+#ifndef HAS_LONGDOUBLE
+#define SRL_EXTENDED_PRECISION_LONG_DOUBLE 0
+#endif
+
+#ifdef HAS_QUADMATH
+#define SRL_EXTENDED_PRECISION_LONG_DOUBLE 0
+#endif
+
+#define HAS_LONG_FLOAT (sizeof(NV) > sizeof(double))
#if defined(_M_IX86) || defined(_M_X64) || defined(__i386__) ||
defined(__i386) || defined(__i486__) || defined(__i486) || defined(i386) ||
defined(__ia64__) || defined(__x86_64__) || defined(__x86_64)
/* SRL_X86_OR_X64_CPU is only used to help set the below macros. */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/srl_decoder.c
new/Sereal-Decoder-5.001/srl_decoder.c
--- old/Sereal-Decoder-4.025/srl_decoder.c 2022-07-28 13:57:13.000000000
+0200
+++ new/Sereal-Decoder-5.001/srl_decoder.c 2022-08-30 21:11:53.000000000
+0200
@@ -120,6 +120,7 @@
SRL_STATIC_INLINE void srl_read_long_double(pTHX_ srl_decoder_t *dec, SV*
into);
SRL_STATIC_INLINE void srl_read_double(pTHX_ srl_decoder_t *dec, SV* into);
SRL_STATIC_INLINE void srl_read_float(pTHX_ srl_decoder_t *dec, SV* into);
+SRL_STATIC_INLINE void srl_read_float_128(pTHX_ srl_decoder_t *dec, SV* into);
SRL_STATIC_INLINE void srl_read_string(pTHX_ srl_decoder_t *dec, int is_utf8,
SV* into);
SRL_STATIC_INLINE void srl_read_varint_into(pTHX_ srl_decoder_t *dec, SV*
into, SV** container, const U8 *track_it);
SRL_STATIC_INLINE void srl_read_zigzag_into(pTHX_ srl_decoder_t *dec, SV*
into, SV** container, const U8 *track_it);
@@ -1062,6 +1063,9 @@
float f;
double d;
long double ld;
+#ifdef HAS_QUADMATH
+ __float128 nv;
+#endif
};
/* XXX Most (if not all?) non-x86 platforms are strict in their
@@ -1082,6 +1086,25 @@
dec->buf.pos+= sizeof(float);
}
+/* XXX Most (if not all?) non-x86 platforms are strict in their
+ * floating point alignment. So maybe this logic should be the other
+ * way: default to strict, and do sloppy only if x86? */
+
+SRL_STATIC_INLINE void
+srl_read_float_128(pTHX_ srl_decoder_t *dec, SV* into)
+{
+#ifdef HAS_QUADMATH
+ union myfloat val;
+ SRL_RDR_ASSERT_SPACE(dec->pbuf, sizeof(NV), " while reading FLOAT");
+ Copy(dec->buf.pos,val.c,sizeof(NV),U8);
+ sv_setnv(into, (NV)val.nv);
+ dec->buf.pos += sizeof(NV);
+#else
+ SRL_RDR_ERROR(dec->pbuf, "FLOAT_128 not supported. No quadmath support in
this perl.");
+#endif
+}
+
+
SRL_STATIC_INLINE void
srl_read_double(pTHX_ srl_decoder_t *dec, SV* into)
@@ -1906,12 +1929,19 @@
case SRL_HDR_ZIGZAG: srl_read_zigzag_into(aTHX_ dec, into,
container, track_it); break;
case SRL_HDR_FLOAT: srl_read_float(aTHX_ dec, into);
break;
+
+ case SRL_HDR_FLOAT_128: srl_read_float_128(aTHX_ dec, into);
break;
+
case SRL_HDR_DOUBLE: srl_read_double(aTHX_ dec, into);
break;
+
case SRL_HDR_LONG_DOUBLE: srl_read_long_double(aTHX_ dec, into);
break;
- case SRL_HDR_TRUE: sv_setsv(into, &PL_sv_yes);
break;
+ case SRL_HDR_NO: /* fallthrough */
case SRL_HDR_FALSE: sv_setsv(into, &PL_sv_no);
break;
+ case SRL_HDR_YES: /* fallthrough */
+ case SRL_HDR_TRUE: sv_setsv(into, &PL_sv_yes);
break;
+
case SRL_HDR_CANONICAL_UNDEF: /* fallthrough (XXX: is this right?)*/
case SRL_HDR_UNDEF:
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/srl_protocol.h
new/Sereal-Decoder-5.001/srl_protocol.h
--- old/Sereal-Decoder-4.025/srl_protocol.h 2020-02-02 12:33:20.000000000
+0100
+++ new/Sereal-Decoder-5.001/srl_protocol.h 2022-09-01 15:03:25.000000000
+0200
@@ -59,11 +59,11 @@
REGEXP | "1" | 49 | 0x31 | 0b00110001 | <PATTERN-STR-TAG>
<MODIFIERS-STR-TAG>
OBJECT_FREEZE | "2" | 50 | 0x32 | 0b00110010 | <STR-TAG> <ITEM-TAG>
- class, object-item. Need to call "THAW" method on class after decoding
OBJECTV_FREEZE | "3" | 51 | 0x33 | 0b00110011 | <OFFSET-VARINT>
<ITEM-TAG> - (OBJECTV_FREEZE is to OBJECT_FREEZE as OBJECTV is to OBJECT)
- RESERVED_0 | "4" | 52 | 0x34 | 0b00110100 | reserved
- RESERVED_1 | "5" | 53 | 0x35 | 0b00110101 |
- RESERVED_2 | "6" | 54 | 0x36 | 0b00110110 |
- RESERVED_3 | "7" | 55 | 0x37 | 0b00110111 |
- RESERVED_4 | "8" | 56 | 0x38 | 0b00111000 | reserved
+ NO | "4" | 52 | 0x34 | 0b00110100 | SvIsBOOL() == PL_No,
5.36 and later only (json false)
+ YES | "5" | 53 | 0x35 | 0b00110101 | SvIsBOOL() == PL_Yes,
5.36 and later only (json true)
+ RESERVED_0 | "6" | 54 | 0x36 | 0b00110110 |
+ RESERVED_1 | "7" | 55 | 0x37 | 0b00110111 |
+ FLOAT_128 | "8" | 56 | 0x38 | 0b00111000 | quadmath _float128
CANONICAL_UNDEF | "9" | 57 | 0x39 | 0b00111001 | undef (PL_sv_undef) -
"the" Perl undef (see notes)
FALSE | ":" | 58 | 0x3a | 0b00111010 | false (PL_sv_no)
TRUE | ";" | 59 | 0x3b | 0b00111011 | true (PL_sv_yes)
@@ -155,7 +155,7 @@
#define SRL_MAGIC_STRING_HIGHBIT_UTF8_UINT_LE 0x72B3C33D /* first four
bytes of SRL_MAGIC_STRING encoded as UTF8, little endian */
#define SRL_MAGIC_STRING_HIGHBIT_UTF8_UINT_BE 0x3DC3B372 /* first four
bytes of SRL_MAGIC_STRING encoded as UTF8, big endian */
-#define SRL_PROTOCOL_VERSION ( 4 )
+#define SRL_PROTOCOL_VERSION ( 5 )
#define SRL_PROTOCOL_VERSION_BITS ( 4 ) /* how many bits we
use for the version, the rest go to the encoding */
#define SRL_PROTOCOL_VERSION_MASK ( ( 1 << SRL_PROTOCOL_VERSION_BITS ) -
1 )
@@ -211,12 +211,16 @@
#define SRL_HDR_OBJECT_FREEZE ((U8)50) /* <STR-TAG> <ITEM-TAG> - class,
object-item. Need to call "THAW" method on class after decoding */
#define SRL_HDR_OBJECTV_FREEZE ((U8)51) /* <OFFSET-VARINT> <ITEM-TAG> -
(OBJECTV_FREEZE is to OBJECT_FREEZE as OBJECTV is to OBJECT) */
+#define SRL_HDR_NO ((U8)52) /* SvIsBOOL() == PL_No, 5.36 and
later only (json false) */
+#define SRL_HDR_YES ((U8)53) /* SvIsBOOL() == PL_Yes, 5.36 and
later only (json true)*/
+
/* Note: Can do reserved check with a range now, but as we start using
* them, might have to explicit == check later. */
-#define SRL_HDR_RESERVED ((U8)52) /* reserved */
-#define SRL_HDR_RESERVED_LOW ((U8)52)
-#define SRL_HDR_RESERVED_HIGH ((U8)56)
+#define SRL_HDR_RESERVED ((U8)54)
+#define SRL_HDR_RESERVED_LOW ((U8)54)
+#define SRL_HDR_RESERVED_HIGH ((U8)55)
+#define SRL_HDR_FLOAT_128 ((U8)56) /* quadmath _float128 */
#define SRL_HDR_CANONICAL_UNDEF ((U8)57) /* undef (PL_sv_undef) - "the"
Perl undef (see notes) */
#define SRL_HDR_FALSE ((U8)58) /* false (PL_sv_no) */
#define SRL_HDR_TRUE ((U8)59) /* true (PL_sv_yes) */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/srl_reader_error.h
new/Sereal-Decoder-5.001/srl_reader_error.h
--- old/Sereal-Decoder-4.025/srl_reader_error.h 2017-10-03 19:46:10.000000000
+0200
+++ new/Sereal-Decoder-5.001/srl_reader_error.h 2022-09-01 13:17:05.000000000
+0200
@@ -15,8 +15,8 @@
#define SRL_RDR_ERRORf4(buf, fmt, var1, var2, var3, var4)
croak(SRL_RDR_BASE_ERROR_FORMAT(fmt), (var1), (var2), (var3), (var4),
SRL_RDR_BASE_ERROR_ARGS((buf)))
#define SRL_RDR_ERROR_UNIMPLEMENTED(buf, tag, str)
SRL_RDR_ERRORf3((buf), "Tag %u (0x%x) '%s' is unimplemented", (tag), (tag),
(str))
-#define SRL_RDR_ERROR_UNEXPECTED(buf, tag, msg)
SRL_RDR_ERRORf2((buf), "Unexpected tag SRL_HDR_%s while expecting %s",
SRL_TAG_NAME((tag)), (msg))
-#define SRL_RDR_ERROR_BAD_COPY(buf, tag)
SRL_RDR_ERRORf1((buf), "While processing tag SRL_HDR_%s encountered a bad COPY
tag", SRL_TAG_NAME((tag)))
+#define SRL_RDR_ERROR_UNEXPECTED(buf, tag, msg)
SRL_RDR_ERRORf3((buf), "Unexpected tag SRL_HDR_%s (%02x) while expecting %s",
SRL_TAG_NAME((tag)), (tag), (msg))
+#define SRL_RDR_ERROR_BAD_COPY(buf, tag)
SRL_RDR_ERRORf2((buf), "While processing tag SRL_HDR_%s (%02x) encountered a
bad COPY tag", SRL_TAG_NAME((tag)),(tag))
#define SRL_RDR_ERROR_EOF(buf, msg)
SRL_RDR_ERRORf1((buf), "Premature end of document while expecting %s", (msg));
#define SRL_RDR_ERROR_REFUSE_OBJECT(buf)
SRL_RDR_ERROR((buf), "Encountered object in input, but the 'refuse_objects'
option is in effect");
#define SRL_RDR_ERROR_PANIC(buf, msg)
SRL_RDR_ERRORf1((buf), "Panic: %s", msg);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/srl_taginfo.h
new/Sereal-Decoder-5.001/srl_taginfo.h
--- old/Sereal-Decoder-4.025/srl_taginfo.h 2020-02-02 18:25:40.000000000
+0100
+++ new/Sereal-Decoder-5.001/srl_taginfo.h 2022-09-01 11:12:36.000000000
+0200
@@ -63,11 +63,11 @@
"REGEXP", /* "1" 49 0x31 0b00110001 */
"OBJECT_FREEZE", /* "2" 50 0x32 0b00110010 */
"OBJECTV_FREEZE", /* "3" 51 0x33 0b00110011 */
- "RESERVED_0", /* "4" 52 0x34 0b00110100 */
- "RESERVED_1", /* "5" 53 0x35 0b00110101 */
- "RESERVED_2", /* "6" 54 0x36 0b00110110 */
- "RESERVED_3", /* "7" 55 0x37 0b00110111 */
- "RESERVED_4", /* "8" 56 0x38 0b00111000 */
+ "NO", /* "4" 52 0x34 0b00110100 */
+ "YES", /* "5" 53 0x35 0b00110101 */
+ "RESERVED_0", /* "6" 54 0x36 0b00110110 */
+ "RESERVED_1", /* "7" 55 0x37 0b00110111 */
+ "FLOAT_128", /* "8" 56 0x38 0b00111000 */
"CANONICAL_UNDEF", /* "9" 57 0x39 0b00111001 */
"FALSE", /* ":" 58 0x3a 0b00111010 */
"TRUE", /* ";" 59 0x3b 0b00111011 */
@@ -173,11 +173,8 @@
#define SRL_HDR_NEG_3 29
#define SRL_HDR_NEG_2 30
#define SRL_HDR_NEG_1 31
-#define SRL_HDR_RESERVED_0 52
-#define SRL_HDR_RESERVED_1 53
-#define SRL_HDR_RESERVED_2 54
-#define SRL_HDR_RESERVED_3 55
-#define SRL_HDR_RESERVED_4 56
+#define SRL_HDR_RESERVED_0 54
+#define SRL_HDR_RESERVED_1 55
#define SRL_HDR_ARRAYREF_0 64
#define SRL_HDR_ARRAYREF_1 65
#define SRL_HDR_ARRAYREF_2 66
@@ -321,10 +318,7 @@
#define CASE_SRL_HDR_RESERVED \
case SRL_HDR_RESERVED_0: \
- case SRL_HDR_RESERVED_1: \
- case SRL_HDR_RESERVED_2: \
- case SRL_HDR_RESERVED_3: \
- case SRL_HDR_RESERVED_4
+ case SRL_HDR_RESERVED_1
#define CASE_SRL_HDR_SHORT_BINARY \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/002_have_enc_and_dec.t
new/Sereal-Decoder-5.001/t/002_have_enc_and_dec.t
--- old/Sereal-Decoder-4.025/t/002_have_enc_and_dec.t 2020-02-02
18:25:40.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/002_have_enc_and_dec.t 2022-09-02
19:58:47.000000000 +0200
@@ -10,8 +10,8 @@
if !-d 't';
}
use Sereal::TestSet qw(:all);
-
-if ( have_encoder_and_decoder() ) {
+my $problem= check_for_dependency_issues();
+if ( !$problem or $problem!~/is missing/ ) {
plan tests => 1;
}
else {
@@ -20,5 +20,8 @@
diag "Testing with both encoder and decoder.";
diag "Sereal::Decoder v$Sereal::Decoder::VERSION";
diag "Sereal::Encoder v$Sereal::Encoder::VERSION";
-ok(1);
-
+is($problem,"","There should be no Encoder/Decoder dependency problems.")
+ or diag "If this test fails it means you need to upgrade Sereal::Decoder
first!\n"
+ . "You are strongly advised to follow this guidance, upgrading the
Encoder\n"
+ . "before you upgrade the Decoder may lead to serious problems\n\n"
+ . "YOU HAVE BEEN WARNED.\n\n";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/004_testset.t
new/Sereal-Decoder-5.001/t/004_testset.t
--- old/Sereal-Decoder-4.025/t/004_testset.t 2020-02-02 18:25:40.000000000
+0100
+++ new/Sereal-Decoder-5.001/t/004_testset.t 2022-09-01 13:17:05.000000000
+0200
@@ -17,14 +17,14 @@
use Test::More;
# needs more tests
-ok( _deep_cmp( ["x"], {} ) );
-ok( _deep_cmp( { "x" => 1 }, { "y" => 1 } ) );
-ok( _deep_cmp( { "x" => 1 }, { "x" => 2 } ) );
-ok( _deep_cmp( { "x" => 1 }, { "x" => 2, "y" => 1 } ) );
-ok( !_deep_cmp( { "x" => 1 }, { "x" => 1 } ) );
-ok( !_deep_cmp( ["x"], ["x"] ) );
-ok( _deep_cmp( ["x"], [ "y", "p" ] ) );
-ok( _deep_cmp( [ "a", "x" ], ["y"] ) );
+ok( _test_deep_cmp( ["x"], {} ) );
+ok( _test_deep_cmp( { "x" => 1 }, { "y" => 1 } ) );
+ok( _test_deep_cmp( { "x" => 1 }, { "x" => 2 } ) );
+ok( _test_deep_cmp( { "x" => 1 }, { "x" => 2, "y" => 1 } ) );
+ok( !_test_deep_cmp( { "x" => 1 }, { "x" => 1 } ) );
+ok( !_test_deep_cmp( ["x"], ["x"] ) );
+ok( _test_deep_cmp( ["x"], [ "y", "p" ] ) );
+ok( _test_deep_cmp( [ "a", "x" ], ["y"] ) );
ok( _cmp_str( "foo", "bar" ) );
ok( !_cmp_str( "aaa", "aaa" ) );
ok( _cmp_str( "aaacowbbb", "aaadogbb" ) );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/005_flags.t
new/Sereal-Decoder-5.001/t/005_flags.t
--- old/Sereal-Decoder-4.025/t/005_flags.t 2020-02-02 18:25:40.000000000
+0100
+++ new/Sereal-Decoder-5.001/t/005_flags.t 2022-09-01 13:17:05.000000000
+0200
@@ -24,6 +24,7 @@
sub run_tests {
my ( $extra_name, $opt_hash )= @_;
+ $opt_hash->{protocol_version} = 3;
my $encoder= Sereal::Encoder->new($opt_hash);
my $decoder= Sereal::Decoder->new($opt_hash);
@@ -86,4 +87,3 @@
# hobodecode($out);
}
}
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/040_special_vars.t
new/Sereal-Decoder-5.001/t/040_special_vars.t
--- old/Sereal-Decoder-4.025/t/040_special_vars.t 2022-02-18
05:14:23.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/040_special_vars.t 2022-09-01
13:17:05.000000000 +0200
@@ -46,6 +46,9 @@
my ( $name, $var, $todo )= @$_;
TODO: {
todo_skip $todo, 1 if $todo;
- is( desc_special( $dec->decode( $enc->encode($var) ) ),
desc_special($var), $name );
+ my $want= desc_special($var);
+ is( desc_special( $dec->decode( $enc->encode($var) ) ), $want, $name .
" ($want)" );
+ #use Devel::Peek;
+ #Dump($dec->decode( $enc->encode($var) ) );
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/155_zipbomb.t
new/Sereal-Decoder-5.001/t/155_zipbomb.t
--- old/Sereal-Decoder-4.025/t/155_zipbomb.t 2022-02-20 05:05:20.000000000
+0100
+++ new/Sereal-Decoder-5.001/t/155_zipbomb.t 2022-08-30 20:58:54.000000000
+0200
@@ -46,7 +46,7 @@
my $hugeblob= $enc->encode(MONSTER_BLOB);
# Snappy compression
- is(vec($hugeblob, 4, 8), 36);
+ ok(abs(vec($hugeblob, 4, 8)-36)<=1);
# Lets validate we have the expected uncompress size: 100MB
is(vec($hugeblob, 10, 8), 134);
@@ -74,7 +74,7 @@
my $hugeblob= $enc->encode(MONSTER_BLOB);
# zlib compression
- is(vec($hugeblob, 4, 8), 52);
+ ok(abs(vec($hugeblob, 4, 8)-52)<=1);
# Lets validate we have the expected uncompress size: 100MB
is(vec($hugeblob, 6, 8), 134);
@@ -102,7 +102,7 @@
my $hugeblob= $enc->encode(MONSTER_BLOB);
# zstd compression
- is(vec($hugeblob, 4, 8), 68);
+ ok(abs(vec($hugeblob, 4, 8)-68)<=1);
# Lets validate we have the expected uncompress size: 100MB
is(vec($hugeblob, 25, 8), 129);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Sereal-Decoder-4.025/t/700_roundtrip/v5/dedudep_strings.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/dedudep_strings.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/dedudep_strings.t
1970-01-01 01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/dedudep_strings.t
2022-09-01 14:55:52.000000000 +0200
@@ -0,0 +1,27 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests( 'dedupe_strings', { dedupe_strings => 1 } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Sereal-Decoder-4.025/t/700_roundtrip/v5/freeze_thaw.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/freeze_thaw.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/freeze_thaw.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/freeze_thaw.t 2020-02-02
18:25:40.000000000 +0100
@@ -0,0 +1,27 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests( 'freeze-thaw', { freeze_callbacks => 1 } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/700_roundtrip/v5/plain.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/plain.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/plain.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/plain.t 2020-02-02
18:25:40.000000000 +0100
@@ -0,0 +1,29 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $version;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests("plain");
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Sereal-Decoder-4.025/t/700_roundtrip/v5/plain_canon.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/plain_canon.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/plain_canon.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/plain_canon.t 2020-02-02
18:25:40.000000000 +0100
@@ -0,0 +1,28 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+$ok= 0 if $ok and $Sereal::Encoder::VERSION < 3.001006;
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder (want 3.001006)';
+}
+else {
+ run_roundtrip_tests( "plain_canonical", { canonical => 1 } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/700_roundtrip/v5/readonly.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/readonly.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/readonly.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/readonly.t 2020-02-02
18:25:40.000000000 +0100
@@ -0,0 +1,27 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests( 'readonly', { set_readonly => 1 } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/700_roundtrip/v5/snappy.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/snappy.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/snappy.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/snappy.t 2020-02-02
18:25:40.000000000 +0100
@@ -0,0 +1,27 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests( 'snappy', { snappy => 1 } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Sereal-Decoder-4.025/t/700_roundtrip/v5/snappy_and_warn_unknown.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/snappy_and_warn_unknown.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/snappy_and_warn_unknown.t
1970-01-01 01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/snappy_and_warn_unknown.t
2020-02-02 18:25:40.000000000 +0100
@@ -0,0 +1,45 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ my $e= Sereal::Encoder->new();
+ my $d= Sereal::Decoder->new();
+
+ my $out;
+ my $payload= [ 'abcd' x 1024 ];
+ my $ok= eval { $out= $e->encode($payload); 1 };
+ my $err= $@ || 'Zombie error';
+ ok( $ok, "snappy_incr and warn_unknown makes CODE encoding not fail" );
+
+ my $decoded;
+ $ok= eval { $decoded= $d->decode($out); 1 };
+ $err= $@ || 'Zombie error';
+ ok( $ok, "snappy_incr and warn_unknown produced decodable output" )
+ or do {
+ diag($err);
+ hobodecode($out) if $ENV{DEBUG_SEREAL};
+ };
+
+ is_deeply( $decoded, $payload, 'results matches' );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Sereal-Decoder-4.025/t/700_roundtrip/v5/snappy_canon.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/snappy_canon.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/snappy_canon.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/snappy_canon.t 2020-02-02
18:25:40.000000000 +0100
@@ -0,0 +1,28 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+$ok= 0 if $ok and $Sereal::Encoder::VERSION < 3.001006;
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder (want 3.001006)';
+}
+else {
+ run_roundtrip_tests( 'snappy_canon', { snappy => 1, canonical => 1 } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Sereal-Decoder-4.025/t/700_roundtrip/v5/snappy_incr.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/snappy_incr.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/snappy_incr.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/snappy_incr.t 2020-02-02
18:25:40.000000000 +0100
@@ -0,0 +1,27 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests( 'snappy_incr', { snappy_incr => 1 } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Sereal-Decoder-4.025/t/700_roundtrip/v5/snappy_incr_canon.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/snappy_incr_canon.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/snappy_incr_canon.t
1970-01-01 01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/snappy_incr_canon.t
2020-02-02 18:25:40.000000000 +0100
@@ -0,0 +1,28 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+$ok= 0 if $ok and $Sereal::Encoder::VERSION < 3.001006;
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder (want 3.001006)';
+}
+else {
+ run_roundtrip_tests( 'snappy_incr_canon', { snappy_incr => 1, canonical =>
1 } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/700_roundtrip/v5/sort_keys.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/sort_keys.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/sort_keys.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/sort_keys.t 2022-09-01
12:10:09.000000000 +0200
@@ -0,0 +1,27 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests( 'sort_keys', { sort_keys => 1 } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Sereal-Decoder-4.025/t/700_roundtrip/v5/sort_keys_perl.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/sort_keys_perl.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/sort_keys_perl.t
1970-01-01 01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/sort_keys_perl.t
2020-02-02 18:25:40.000000000 +0100
@@ -0,0 +1,27 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests( 'sort_keys', { sort_keys => 2 } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Sereal-Decoder-4.025/t/700_roundtrip/v5/sort_keys_perl_rev.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/sort_keys_perl_rev.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/sort_keys_perl_rev.t
1970-01-01 01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/sort_keys_perl_rev.t
2020-02-02 18:25:40.000000000 +0100
@@ -0,0 +1,27 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests( 'sort_keys', { sort_keys => 3 } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/700_roundtrip/v5/zlib.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/zlib.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/zlib.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/zlib.t 2020-02-02
18:25:40.000000000 +0100
@@ -0,0 +1,31 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests(
+ 'zlib',
+ {
+ compress => Sereal::Encoder::SRL_ZLIB(),
+ } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/700_roundtrip/v5/zlib_force.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/zlib_force.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/zlib_force.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/zlib_force.t 2020-02-02
18:25:40.000000000 +0100
@@ -0,0 +1,32 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests(
+ 'zlib_force',
+ {
+ compress => Sereal::Encoder::SRL_ZLIB(),
+ compress_threshold => 0,
+ } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/700_roundtrip/v5/zstd.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/zstd.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/zstd.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/zstd.t 2020-02-02
18:25:40.000000000 +0100
@@ -0,0 +1,31 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests(
+ 'zstd',
+ {
+ compress => Sereal::Encoder::SRL_ZSTD(),
+ } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/700_roundtrip/v5/zstd_force.t
new/Sereal-Decoder-5.001/t/700_roundtrip/v5/zstd_force.t
--- old/Sereal-Decoder-4.025/t/700_roundtrip/v5/zstd_force.t 1970-01-01
01:00:00.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/700_roundtrip/v5/zstd_force.t 2020-02-02
18:25:40.000000000 +0100
@@ -0,0 +1,32 @@
+#!perl
+use strict;
+use warnings;
+use Data::Dumper;
+use File::Spec;
+
+use lib File::Spec->catdir(qw(t lib));
+
+BEGIN {
+ lib->import('lib')
+ if !-d 't';
+}
+
+use Sereal::TestSet qw(:all);
+use Test::More;
+
+my $ok= have_encoder_and_decoder();
+if ( not $ok ) {
+ plan skip_all => 'Did not find right version of encoder';
+}
+else {
+ run_roundtrip_tests(
+ 'zstd_force',
+ {
+ compress => Sereal::Encoder::SRL_ZSTD(),
+ compress_threshold => 0,
+ } );
+}
+
+pass();
+done_testing();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Sereal-Decoder-4.025/t/lib/Sereal/TestSet.pm
new/Sereal-Decoder-5.001/t/lib/Sereal/TestSet.pm
--- old/Sereal-Decoder-4.025/t/lib/Sereal/TestSet.pm 2022-02-20
05:05:20.000000000 +0100
+++ new/Sereal-Decoder-5.001/t/lib/Sereal/TestSet.pm 2022-09-02
20:39:47.000000000 +0200
@@ -82,11 +82,13 @@
integer short_string varint array array_fbit
hash dump_bless
have_encoder_and_decoder
+ check_for_dependency_issues
run_roundtrip_tests
write_test_files
$use_objectv
setup_tests
_deep_cmp
+ _test_deep_cmp
_test
_cmp_str
);
@@ -672,42 +674,59 @@
}
sub have_encoder_and_decoder {
+ return !check_for_dependency_issues(@_);
+}
+
+sub check_for_dependency_issues {
my ($min_v)= @_;
# $Class is the already-loaded class, so the one we're testing
my @need=
$Class =~ /Encoder/ ? ("Decoder")
: $Class =~ /Decoder/ ? ("Encoder")
- : ( "Encoder", "Decoder" );
+ : ( "Decoder", "Encoder" );
my @need_class= ( $Class, map { "Sereal::$_" } @need );
foreach my $class (@need_class) {
eval "use $class; 1"
or do {
- note( "Could not locate $class for testing" . ( $@ ? " (Exception:
$@)" : "" ) );
- return ();
+ note( "Could not locate $class for testing" . ( $@ ? "
(Exception: $@)" : "" ) );
+ return "$Class is missing.";
};
my $cmp_v= $class->VERSION;
+ if (!defined $min_v and $Class eq $class) {
+ if ($class eq "Sereal::Encoder") {
+ $min_v= $cmp_v;
+ } elsif ($class eq "Sereal::Decoder") {
+ if ($0=~m!/v(\d+)/!) {
+ $min_v= $1;
+ if ($Config{usequadmath} || $Config{uselongdouble}) {
+ $min_v= 5;
+ }
+ }
+ }
+ }
+
if ( $min_v and $cmp_v < $min_v ) {
diag( "Could not load correct version of $class for testing "
. "(got: $cmp_v, needed at least $min_v)" );
- return;
+ return "$class version $cmp_v too low, need version $min_v";
}
$cmp_v =~ s/_//;
$cmp_v= sprintf( "%.2f", int( $cmp_v * 100 ) / 100 );
my %compat_versions= map { $_ => 1 } $Class->_test_compat();
- if ( not defined $cmp_v or not exists $compat_versions{$cmp_v} ) {
+ if ( not length($cmp_v) or not exists $compat_versions{$cmp_v} ) {
diag( "Could not load correct version of $class for testing "
. "(got: $cmp_v, needed any of "
. join( ", ", keys %compat_versions )
. ")" );
- return ();
+ return "$class version $cmp_v not compatible, $Class is version
$min_v"
}
}
- return 1;
+ return "";
}
# max iv/uv logic taken from Storable tests
@@ -1042,13 +1061,11 @@
}
my $suffix= "_v$proto_version";
+ # older v2.x and v1.0 should ingore this.
+ $opts->{protocol_version}= $proto_version;
if ( $proto_version == 1 ) {
$opts->{use_protocol_v1}= 1;
}
- else {
- # v2 ignores this, but will output v2 by default
- $opts->{protocol_version}= $proto_version;
- }
setup_tests($proto_version);
run_roundtrip_tests_internal( $name . $suffix, $opts );
}
@@ -1150,6 +1167,11 @@
return $ret;
}
+our $deep_cmp_name; # set by deep_cmp()
+sub _test_deep_cmp {
+ local $deep_cmp_name= "_test_deep_cmp";
+ return _deep_cmp(@_);
+}
sub _deep_cmp {
my ( $x, $y, $seenx, $seeny )= @_;
$seenx ||= {};
@@ -1205,7 +1227,20 @@
die "Unknown reftype '", reftype($x) . "'";
}
}
- else {
+ else{
+ if (
+ $deep_cmp_name !~ /v5/ and $deep_cmp_name =~ /float/
+ and $x=~/^-?\d+\.\d+\z/ and $y=~/^-?\d+\.\d+\z/
+ ) {
+ if ($deep_cmp_name=~/(-?\d+\.(\d+))/) {
+ my $maxf= length $1;
+ my $minf= length $2;
+ $_= sprintf "%*.*f", $maxf, $minf, $_
+ for $x, $y;
+ } else {
+ $_= sprintf "%f", $_ for $x, $y;
+ }
+ }
$cmp= _cmp_str( $x, $y )
and return $cmp;
}
@@ -1214,6 +1249,7 @@
sub deep_cmp {
my ( $v1, $v2, $name )= @_;
+ local $deep_cmp_name= $name;
my $diff= _deep_cmp( $v1, $v2 );
if ($diff) {
my ( $reason, $diag )= split /\n/, $diff, 2;