This is an automated email from the git hooks/post-receive script.

gregoa pushed a commit to branch master
in repository libffi-platypus-perl.

commit 76339bbae20df6ea7e7a7b5e8ed2cff6c0b6eecd
Author: gregor herrmann <gre...@debian.org>
Date:   Wed Jul 6 23:26:35 2016 +0200

    Imported Upstream version 0.42.01
---
 Build.PL                                     |   4 +-
 CONTRIBUTING                                 |   2 +-
 Changes                                      |   5 ++
 INSTALL                                      |  14 ++--
 MANIFEST                                     |  21 ++---
 META.json                                    |  10 +--
 META.yml                                     |   5 +-
 README                                       | 109 +++++++++++++-------------
 xt/release/release.yml => author.yml         |   0
 cpanfile                                     |   4 -
 dist.ini                                     |   8 +-
 examples/char.pl                             |  10 +--
 examples/closure-opaque.pl                   |  20 +++--
 examples/closure.pl                          |  22 +++---
 examples/getpid.pl                           |  10 ++-
 examples/integer.pl                          |  10 ++-
 examples/list_integer_types.pl               |   6 +-
 examples/malloc.pl                           |   7 +-
 examples/math.pl                             |  13 +--
 examples/notify.pl                           |  15 ++--
 examples/pipe.pl                             |   7 +-
 examples/string.pl                           |  13 +--
 examples/uuid.pl                             |  14 ++--
 inc/My/AutoConf.pm                           |  41 ++++++----
 inc/My/ModuleBuild.pm                        |   2 +-
 inc/probe/bigendian64.c                      |  27 +++++++
 include/ffi_platypus.h                       |  18 ++++-
 include/ffi_platypus_call.h                  |  52 +++++++++---
 lib/FFI/Platypus.pm                          | 113 ++++++++++++++-------------
 lib/FFI/Platypus/API.pm                      |   4 +-
 lib/FFI/Platypus/Buffer.pm                   |   8 +-
 lib/FFI/Platypus/Declare.pm                  |  16 +++-
 lib/FFI/Platypus/Lang/ASM.pm                 |   4 +-
 lib/FFI/Platypus/Lang/C.pm                   |   4 +-
 lib/FFI/Platypus/Lang/Win32.pm               |   4 +-
 lib/FFI/Platypus/Memory.pm                   |   8 +-
 lib/FFI/Platypus/Record.pm                   |   4 +-
 lib/FFI/Platypus/Record/TieArray.pm          |   4 +-
 lib/FFI/Platypus/Type.pod                    |  73 ++++++++---------
 lib/FFI/Platypus/Type/PointerSizeBuffer.pm   |  17 ++--
 lib/FFI/Platypus/Type/StringPointer.pm       |  19 ++---
 lib/Module/Build/FFI.pm                      |  19 ++---
 t/00_diag.t                                  |   4 +
 xs/closure.c                                 |  24 +++++-
 xt/{release => author}/eol.t                 |   2 +
 xt/{release => author}/no_tabs.t             |   1 +
 xt/{release => author}/pod.t                 |   1 +
 xt/{release => author}/pod_coverage.t        |   3 +-
 xt/{release => author}/pod_spelling_common.t |   6 +-
 xt/{release => author}/pod_spelling_system.t |  11 +--
 xt/{release => author}/strict.t              |   7 ++
 xt/{release => author}/version.t             |   3 +-
 xt/release/changes.t                         |   2 +
 xt/release/fixme.t                           |   1 +
 54 files changed, 478 insertions(+), 353 deletions(-)

diff --git a/Build.PL b/Build.PL
index 61ac86b..c670dfa 100644
--- a/Build.PL
+++ b/Build.PL
@@ -6,7 +6,7 @@ BEGIN {
   }
 }
 
-# This file was automatically generated by Dist::Zilla::Plugin::ModuleBuild 
v6.003.
+# This file was automatically generated by Dist::Zilla::Plugin::ModuleBuild 
v6.006.
 use strict;
 use warnings;
 
@@ -30,7 +30,7 @@ my %module_build_args = (
     "Graham Ollis <plicease\@cpan.org>"
   ],
   "dist_name" => "FFI-Platypus",
-  "dist_version" => "0.42",
+  "dist_version" => "0.42_01",
   "license" => "perl",
   "module_name" => "FFI::Platypus",
   "recursive_test_files" => 1,
diff --git a/CONTRIBUTING b/CONTRIBUTING
index ff4b33f..d7fd37c 100644
--- a/CONTRIBUTING
+++ b/CONTRIBUTING
@@ -79,7 +79,7 @@ CONTRIBUTING
        
        
        DEBUG_FAKE32:
-         + making Math::Int64 a prerequsite (not normally done on 64 bit Perls)
+         + making Math::Int64 a prerequisite (not normally done on 64 bit 
Perls)
          + using Math::Int64's C API to manipulate 64 bit values (not normally 
done on 64 bit Perls)
        
        Created MYMETA.yml and MYMETA.json
diff --git a/Changes b/Changes
index f8bfcb3..3aceced 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,10 @@
 Revision history for FFI-Platypus
 
+0.42_01   2016-07-06 15:06:41 -0400
+  - Numerous fixes for systems with 64bit big-endian arch
+    (previously only 32bit big-endian had been tested)
+  - Officially discourage the use of FFI::Platypus::Declare
+
 0.42      2016-05-06 16:31:01 -0400
   - Support for MSYS2
 
diff --git a/INSTALL b/INSTALL
index b76bb61..2ed64bf 100644
--- a/INSTALL
+++ b/INSTALL
@@ -8,10 +8,10 @@ If you have cpanm, you only need one line:
 
     % cpanm FFI::Platypus
 
-If you are installing into a system-wide directory, you may need to pass the
-"-S" flag to cpanm, which uses sudo to install the module:
-
-    % cpanm -S FFI::Platypus
+If it does not have permission to install modules to the current perl, cpanm
+will automatically set up and install to a local::lib in your home directory.
+See the local::lib documentation (https://metacpan.org/pod/local::lib) for
+details on enabling it in your environment.
 
 ## Installing with the CPAN shell
 
@@ -31,9 +31,9 @@ Then install it:
 
     % ./Build install
 
-If you are installing into a system-wide directory, you may need to run:
-
-    % sudo ./Build install
+If your perl is system-managed, you can create a local::lib in your home
+directory to install modules to. For details, see the local::lib documentation:
+https://metacpan.org/pod/local::lib
 
 ## Documentation
 
diff --git a/MANIFEST b/MANIFEST
index d4fd539..ec70eb0 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::Manifest 
v6.003.
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest 
v6.006.
 Build.PL
 CONTRIBUTING
 Changes
@@ -9,6 +9,7 @@ META.json
 META.yml
 README
 SUPPORT
+author.yml
 cpanfile
 dist.ini
 examples/archive.pl
@@ -50,6 +51,7 @@ inc/eg/complex.c
 inc/eg/small.c
 inc/probe/abi.c
 inc/probe/bigendian.c
+inc/probe/bigendian64.c
 inc/probe/complex.c
 inc/probe/longdouble.c
 inc/run/after_build2.pl
@@ -185,14 +187,13 @@ xs/record_opaque.c
 xs/record_simple.c
 xs/record_string.c
 xs/windl.c
+xt/author/eol.t
+xt/author/no_tabs.t
+xt/author/pod.t
+xt/author/pod_coverage.t
+xt/author/pod_spelling_common.t
+xt/author/pod_spelling_system.t
+xt/author/strict.t
+xt/author/version.t
 xt/release/changes.t
-xt/release/eol.t
 xt/release/fixme.t
-xt/release/no_tabs.t
-xt/release/pod.t
-xt/release/pod_coverage.t
-xt/release/pod_spelling_common.t
-xt/release/pod_spelling_system.t
-xt/release/release.yml
-xt/release/strict.t
-xt/release/version.t
diff --git a/META.json b/META.json
index b0daef5..02934c1 100644
--- a/META.json
+++ b/META.json
@@ -4,7 +4,7 @@
       "Graham Ollis <plice...@cpan.org>"
    ],
    "dynamic_config" : "1",
-   "generated_by" : "Dist::Zilla version 6.003, CPAN::Meta::Converter version 
2.150005",
+   "generated_by" : "Dist::Zilla version 6.006, CPAN::Meta::Converter version 
2.150005",
    "license" : [
       "perl_5"
    ],
@@ -35,9 +35,6 @@
          }
       },
       "develop" : {
-         "recommends" : {
-            "YAML::XS" : "0"
-         },
          "requires" : {
             "Devel::PPPort" : "3.28",
             "FindBin" : "0",
@@ -73,7 +70,7 @@
          }
       }
    },
-   "release_status" : "stable",
+   "release_status" : "testing",
    "resources" : {
       "bugtracker" : {
          "web" : "https://github.com/plicease/FFI-Platypus/issues";
@@ -86,6 +83,7 @@
       },
       "x_IRC" : "irc://irc.perl.org/#native"
    },
-   "version" : "0.42"
+   "version" : "0.42_01",
+   "x_serialization_backend" : "Cpanel::JSON::XS version 3.0217"
 }
 
diff --git a/META.yml b/META.yml
index 39e21f9..3d8c665 100644
--- a/META.yml
+++ b/META.yml
@@ -15,7 +15,7 @@ configure_requires:
   Module::Build: '0.3601'
   perl: '5.008001'
 dynamic_config: '1'
-generated_by: 'Dist::Zilla version 6.003, CPAN::Meta::Converter version 
2.150005'
+generated_by: 'Dist::Zilla version 6.006, CPAN::Meta::Converter version 
2.150005'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -37,4 +37,5 @@ resources:
   bugtracker: https://github.com/plicease/FFI-Platypus/issues
   homepage: http://perl.wdlabs.com/FFI-Platypus
   repository: git://github.com/plicease/FFI-Platypus.git
-version: '0.42'
+version: 0.42_01
+x_serialization_backend: 'YAML::Tiny version 1.69'
diff --git a/README b/README
index 0f3391b..8ff5c1a 100644
--- a/README
+++ b/README
@@ -5,7 +5,7 @@ NAME
 
 VERSION
 
-    version 0.42
+    version 0.42_01
 
 SYNOPSIS
 
@@ -87,9 +87,6 @@ DESCRIPTION
     to Platypus or FFI, you may want to skip down to the EXAMPLES to get a
     taste of what you can do with Platypus.
 
-    Platypus also provides an declarative interface you may want to use
-    instead of the object oriented interface called FFI::Platypus::Declare.
-
     Platypus has extensive documentation of types at FFI::Platypus::Type
     and its custom types API at FFI::Platypus::API.
 
@@ -467,19 +464,19 @@ METHODS
 
 EXAMPLES
 
-    Here are some examples. Some of them use the FFI::Platypus::Declare
-    interface, but the principles apply to the OO interface. These examples
-    are provided in full with the Platypus distribution in the "examples"
-    directory. There are also some more examples in FFI::Platypus::Type
-    that are related to types.
+    Here are some examples. These examples are provided in full with the
+    Platypus distribution in the "examples" directory. There are also some
+    more examples in FFI::Platypus::Type that are related to types.
 
  Integer conversions
 
-     use FFI::Platypus::Declare qw( int string );
+     use FFI::Platypus;
      
-     lib undef;
-     attach puts => [string] => int;
-     attach atoi => [string] => int;
+     my $ffi = FFI::Platypus->new;
+     $ffi->lib(undef);
+     
+     $ffi->attach(puts => ['string'] => 'int');
+     $ffi->attach(atoi => ['string'] => 'int');
      
      puts(atoi('56'));
 
@@ -492,20 +489,21 @@ EXAMPLES
  libnotify
 
      use FFI::CheckLib;
-     use FFI::Platypus::Declare qw( void string opaque );
+     use FFI::Platypus;
      
      # NOTE: I ported this from the like named eg/notify.pl that came with 
FFI::Raw
      # and it seems to work most of the time, but also seems to SIGSEGV 
sometimes.
      # I saw the same behavior in the FFI::Raw version, and am not really 
familiar
      # with the libnotify API to say what is the cause.  Patches welcome to 
fix it.
      
-     lib find_lib_or_exit lib => 'notify';
+     my $ffi = FFI::Platypus->new;
+     $ffi->lib(find_lib_or_exit lib => 'notify');
      
-     attach notify_init   => [string] => void;
-     attach notify_uninit => []       => void;
-     attach [notify_notification_new    => 'notify_new']    => 
[string,string,string]           => opaque;
-     attach [notify_notification_update => 'notify_update'] => [opaque, 
string, string, string] => void;
-     attach [notify_notification_show   => 'notify_show']   => [opaque, 
opaque]                 => void;
+     $ffi->attach(notify_init   => ['string'] => 'void');
+     $ffi->attach(notify_uninit => []       => 'void');
+     $ffi->attach([notify_notification_new    => 'notify_new']    => 
['string', 'string', 'string']           => 'opaque');
+     $ffi->attach([notify_notification_update => 'notify_update'] => 
['opaque', 'string', 'string', 'string'] => 'void');
+     $ffi->attach([notify_notification_show   => 'notify_show']   => 
['opaque', 'opaque']                     => 'void');
      
      notify_init('FFI::Platypus');
      my $n = notify_new('','','');
@@ -547,14 +545,15 @@ EXAMPLES
 
  Allocating and freeing memory
 
-     use FFI::Platypus::Declare;
+     use FFI::Platypus;
      use FFI::Platypus::Memory qw( malloc free memcpy );
      
+     my $ffi = FFI::Platypus->new;
      my $buffer = malloc 12;
      
-     memcpy $buffer, cast('string' => 'opaque', "hello there"), length "hello 
there\0";
+     memcpy $buffer, $ffi->cast('string' => 'opaque', "hello there"), length 
"hello there\0";
      
-     print cast('opaque' => 'string', $buffer), "\n";
+     print $ffi->cast('opaque' => 'string', $buffer), "\n";
      
      free $buffer;
 
@@ -618,16 +617,16 @@ EXAMPLES
  libuuid
 
      use FFI::CheckLib;
-     use FFI::Platypus::Declare
-       'void',
-       [ 'string(37)' => 'uuid_string' ],
-       [ 'record(16)' => 'uuid_t' ];
+     use FFI::Platypus;
      use FFI::Platypus::Memory qw( malloc free );
      
-     lib find_lib_or_exit lib => 'uuid';
+     my $ffi = FFI::Platypus->new;
+     $ffi->lib(find_lib_or_exit lib => 'uuid');
+     $ffi->type('string(37)' => 'uuid_string');
+     $ffi->type('record(16)' => 'uuid_t');
      
-     attach uuid_generate => [uuid_t] => void;
-     attach uuid_unparse  => [uuid_t,uuid_string] => void;
+     $ffi->attach(uuid_generate => ['uuid_t'] => 'void');
+     $ffi->attach(uuid_unparse  => ['uuid_t','uuid_string'] => 'void');
      
      my $uuid = "\0" x 16;  # uuid_t
      uuid_generate($uuid);
@@ -649,11 +648,13 @@ EXAMPLES
 
  puts and getpid
 
-     use FFI::Platypus::Declare qw( string int );
+     use FFI::Platypus;
      
-     lib undef;
-     attach puts => [string] => int;
-     attach getpid => [] => int;
+     my $ffi = FFI::Platypus->new;
+     $ffi->lib(undef);
+     
+     $ffi->attach(puts => ['string'] => 'int');
+     $ffi->attach(getpid => [] => 'int');
      
      puts(getpid());
 
@@ -662,20 +663,21 @@ EXAMPLES
 
  Math library
 
-     use FFI::Platypus::Declare qw( string int double );
+     use FFI::Platypus;
      use FFI::CheckLib;
      
-     lib undef;
-     attach puts => [string] => int;
-     attach fdim => [double,double] => double;
+     my $ffi = FFI::Platypus->new;
+     $ffi->lib(undef);
+     $ffi->attach(puts => ['string'] => 'int');
+     $ffi->attach(fdim => ['double','double'] => 'double');
      
      puts(fdim(7.0, 2.0));
      
-     attach cos => [double] => double;
+     $ffi->attach(cos => ['double'] => 'double');
      
      puts(cos(2.0));
      
-     attach fmax => [double, double] => double;
+     $ffi->attach(fmax => ['double', 'double'] => 'double');
      
      puts(fmax(2.0,3.0));
 
@@ -688,15 +690,16 @@ EXAMPLES
 
  Strings
 
-     use FFI::Platypus::Declare qw( int string );
+     use FFI::Platypus;
      
-     lib undef;
-     attach puts => [string] => int;
-     attach strlen => [string] => int;
+     my $ffi = FFI::Platypus->new;
+     $ffi->lib(undef);
+     $ffi->attach(puts => ['string'] => 'int');
+     $ffi->attach(strlen => ['string'] => 'int');
      
      puts(strlen('somestring'));
      
-     attach strstr => [string,string] => string;
+     $ffi->attach(strstr => ['string','string'] => 'string');
      
      puts(strstr('somestring', 'string'));
      
@@ -704,7 +707,7 @@ EXAMPLES
      
      puts(puts("lol"));
      
-     attach strerror => [int] => string;
+     $ffi->attach(strerror => ['int'] => 'string');
      
      puts(strerror(2));
 
@@ -809,8 +812,8 @@ EXAMPLES
        print "recv_message = $recv_message\n";
      };
 
-    Discussion: ØMQ is a high-performance asynchronous messaging
-    library. There are a few things to note here.
+    Discussion: ØMQ is a high-performance asynchronous messaging library.
+    There are a few things to note here.
 
     Firstly, sometimes there may be multiple versions of a library in the
     wild and you may need to verify that the library on a system meets your
@@ -834,8 +837,8 @@ EXAMPLES
     interface.
 
     Finally we attach the necessary functions, send and receive a message.
-    If you are interested, there is a fully fleshed out ØMQ Perl
-    interface implemented using FFI called ZMQ::FFI.
+    If you are interested, there is a fully fleshed out ØMQ Perl interface
+    implemented using FFI called ZMQ::FFI.
 
  libarchive
 
@@ -1314,7 +1317,7 @@ CONTRIBUTING
        
        
        DEBUG_FAKE32:
-         + making Math::Int64 a prerequsite (not normally done on 64 bit Perls)
+         + making Math::Int64 a prerequisite (not normally done on 64 bit 
Perls)
          + using Math::Int64's C API to manipulate 64 bit values (not normally 
done on 64 bit Perls)
        
        Created MYMETA.yml and MYMETA.json
@@ -1378,9 +1381,9 @@ CONTRIBUTING
 
 SEE ALSO
 
-    FFI::Platypus::Declare
+    NativeCall
 
-      Declarative interface to Platypus.
+      Promising interface to Platypus inspired by Perl 6.
 
     FFI::Platypus::Type
 
diff --git a/xt/release/release.yml b/author.yml
similarity index 100%
rename from xt/release/release.yml
rename to author.yml
diff --git a/cpanfile b/cpanfile
index 0a5533a..711faad 100644
--- a/cpanfile
+++ b/cpanfile
@@ -40,7 +40,3 @@ on 'develop' => sub {
   requires "Test::Strict" => "0";
   requires "YAML" => "0";
 };
-
-on 'develop' => sub {
-  recommends "YAML::XS" => "0";
-};
diff --git a/dist.ini b/dist.ini
index 0b7635c..f5383b5 100644
--- a/dist.ini
+++ b/dist.ini
@@ -3,10 +3,10 @@ author           = Graham Ollis <plice...@cpan.org>
 license          = Perl_5
 copyright_holder = Graham Ollis
 copyright_year   = 2015
-version          = 0.42
+version          = 0.42_01
 
 [@Author::Plicease]
-:version = 1.94
+:version = 2.07
 release_tests = 1
 installer     = ModuleBuild
 copy_mb       = 1
@@ -59,6 +59,10 @@ diag_preamble = |     foreach my $key (sort keys %$abi)
 diag_preamble = |     {
 diag_preamble = |       diag sprintf("  %-20s %s", $key, $abi->{$key});
 diag_preamble = |     }
+diag_preamble = |     spacer();
+diag_preamble = |     diag "Probes:";
+diag_preamble = |     my $probe = FFI::Platypus::ConfigData->config("probe");
+diag_preamble = |     diag sprintf("  %-20s %s", $_, $probe->{$_}) for keys 
%$probe;
 diag_preamble = |   };
 diag_preamble = |   diag "extended diagnostic failed: $@" if $@;
 diag_preamble = | };
diff --git a/examples/char.pl b/examples/char.pl
index 95b70e0..98c2657 100644
--- a/examples/char.pl
+++ b/examples/char.pl
@@ -1,17 +1,17 @@
 use strict;
 use warnings;
-use FFI::Platypus::Declare
-  'int',
-  [int => 'character'];
+use FFI::Platypus;
 
-lib undef;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+$ffi->type('int' => 'character');
 
 my @list = qw( 
   alnum alpha ascii blank cntrl digit lower print punct 
   space upper xdigit
 );
 
-attach "is$_" => [character] => int for @list;
+$ffi->attach("is$_" => ['character'] => 'int') for @list;
 
 my $char = shift(@ARGV) || 'a';
 
diff --git a/examples/closure-opaque.pl b/examples/closure-opaque.pl
index 4194ad4..fc89161 100644
--- a/examples/closure-opaque.pl
+++ b/examples/closure-opaque.pl
@@ -1,17 +1,15 @@
 use strict;
 use warnings;
-use FFI::Platypus::Declare
-  'int', 'void', 'string',
-  ['(int)->int' => 'closure_t'];
+use FFI::Platypus;
 
-lib './closure.so';
-lib undef; # for puts
+my $ffi = FFI::Platypus->new;
+$ffi->lib('./closure.so');
+$ffi->type('(int)->int' => 'closure_t');
 
-attach set_closure => [closure_t] => void;
-attach call_closure => [int] => int;
-attach puts => [string] => int;
+$ffi->attach(set_closure => ['closure_t'] => 'void');
+$ffi->attach(call_closure => ['int'] => 'int');
 
-my $closure = closure { $_[0] * 6 };
-my $opaque = cast closure_t => 'opaque', $closure;
+my $closure = $ffi->closure(sub { $_[0] * 6 });
+my $opaque = $ffi->cast(closure_t => 'opaque', $closure);
 set_closure($opaque);
-puts(call_closure(2)); # prints "12"
+print call_closure(2), "\n"; # prints "12"
diff --git a/examples/closure.pl b/examples/closure.pl
index e4e80ca..049d495 100644
--- a/examples/closure.pl
+++ b/examples/closure.pl
@@ -1,20 +1,18 @@
 use strict;
 use warnings;
-use FFI::Platypus::Declare
-  'int', 'void', 'string',
-  ['(int)->int' => 'closure_t'];
+use FFI::Platypus;
 
-lib './closure.so';
-lib undef; # for puts
+my $ffi = FFI::Platypus->new;
+$ffi->lib('./closure.so');
+$ffi->type('(int)->int' => 'closure_t');
 
-attach set_closure => [closure_t] => void;
-attach call_closure => [int] => int;
-attach puts => [string] => int;
+$ffi->attach(set_closure => ['closure_t'] => 'void');
+$ffi->attach(call_closure => ['int'] => 'int');
 
-my $closure1 = closure { $_[0] * 2 };
+my $closure1 = $ffi->closure(sub { $_[0] * 2 });
 set_closure($closure1);
-puts(call_closure(2)); # prints "4"
+print  call_closure(2), "\n"; # prints "4"
 
-my $closure2 = closure { $_[0] * 4 };
+my $closure2 = $ffi->closure(sub { $_[0] * 4 });
 set_closure($closure2);
-puts(call_closure(2)); # prints "8"
+print call_closure(2), "\n"; # prints "8"
diff --git a/examples/getpid.pl b/examples/getpid.pl
index 3708f44..36ef441 100644
--- a/examples/getpid.pl
+++ b/examples/getpid.pl
@@ -1,9 +1,11 @@
 use strict;
 use warnings;
-use FFI::Platypus::Declare qw( string int );
+use FFI::Platypus;
 
-lib undef;
-attach puts => [string] => int;
-attach getpid => [] => int;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+
+$ffi->attach(puts => ['string'] => 'int');
+$ffi->attach(getpid => [] => 'int');
 
 puts(getpid());
diff --git a/examples/integer.pl b/examples/integer.pl
index cbbdc2a..6f69ac7 100644
--- a/examples/integer.pl
+++ b/examples/integer.pl
@@ -1,9 +1,11 @@
 use strict;
 use warnings;
-use FFI::Platypus::Declare qw( int string );
+use FFI::Platypus;
 
-lib undef;
-attach puts => [string] => int;
-attach atoi => [string] => int;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+
+$ffi->attach(puts => ['string'] => 'int');
+$ffi->attach(atoi => ['string'] => 'int');
 
 puts(atoi('56'));
diff --git a/examples/list_integer_types.pl b/examples/list_integer_types.pl
index 19f6198..c60add7 100644
--- a/examples/list_integer_types.pl
+++ b/examples/list_integer_types.pl
@@ -1,10 +1,12 @@
 use strict;
 use warnings;
-use FFI::Platypus::Declare;
+use FFI::Platypus;
+
+my $ffi = FFI::Platypus->new;
 
 foreach my $type_name (sort FFI::Platypus->types)
 {
-  my $meta = type_meta $type_name;
+  my $meta = $ffi->type_meta($type_name);
   next unless $meta->{element_type} eq 'int';
   printf "%20s %s\n", $type_name, $meta->{ffi_type};
 }
diff --git a/examples/malloc.pl b/examples/malloc.pl
index 0141191..d5754b3 100644
--- a/examples/malloc.pl
+++ b/examples/malloc.pl
@@ -1,12 +1,13 @@
 use strict;
 use warnings;
-use FFI::Platypus::Declare;
+use FFI::Platypus;
 use FFI::Platypus::Memory qw( malloc free memcpy );
 
+my $ffi = FFI::Platypus->new;
 my $buffer = malloc 12;
 
-memcpy $buffer, cast('string' => 'opaque', "hello there"), length "hello 
there\0";
+memcpy $buffer, $ffi->cast('string' => 'opaque', "hello there"), length "hello 
there\0";
 
-print cast('opaque' => 'string', $buffer), "\n";
+print $ffi->cast('opaque' => 'string', $buffer), "\n";
 
 free $buffer;
diff --git a/examples/math.pl b/examples/math.pl
index 37b1676..3c676dd 100644
--- a/examples/math.pl
+++ b/examples/math.pl
@@ -1,18 +1,19 @@
 use strict;
 use warnings;
-use FFI::Platypus::Declare qw( string int double );
+use FFI::Platypus;
 use FFI::CheckLib;
 
-lib undef;
-attach puts => [string] => int;
-attach fdim => [double,double] => double;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+$ffi->attach(puts => ['string'] => 'int');
+$ffi->attach(fdim => ['double','double'] => 'double');
 
 puts(fdim(7.0, 2.0));
 
-attach cos => [double] => double;
+$ffi->attach(cos => ['double'] => 'double');
 
 puts(cos(2.0));
 
-attach fmax => [double, double] => double;
+$ffi->attach(fmax => ['double', 'double'] => 'double');
 
 puts(fmax(2.0,3.0));
diff --git a/examples/notify.pl b/examples/notify.pl
index d3019a6..3ca9415 100644
--- a/examples/notify.pl
+++ b/examples/notify.pl
@@ -1,20 +1,21 @@
 use strict;
 use warnings;
 use FFI::CheckLib;
-use FFI::Platypus::Declare qw( void string opaque );
+use FFI::Platypus;
 
 # NOTE: I ported this from the like named eg/notify.pl that came with FFI::Raw
 # and it seems to work most of the time, but also seems to SIGSEGV sometimes.
 # I saw the same behavior in the FFI::Raw version, and am not really familiar
 # with the libnotify API to say what is the cause.  Patches welcome to fix it.
 
-lib find_lib_or_exit lib => 'notify';
+my $ffi = FFI::Platypus->new;
+$ffi->lib(find_lib_or_exit lib => 'notify');
 
-attach notify_init   => [string] => void;
-attach notify_uninit => []       => void;
-attach [notify_notification_new    => 'notify_new']    => 
[string,string,string]           => opaque;
-attach [notify_notification_update => 'notify_update'] => [opaque, string, 
string, string] => void;
-attach [notify_notification_show   => 'notify_show']   => [opaque, opaque]     
            => void;
+$ffi->attach(notify_init   => ['string'] => 'void');
+$ffi->attach(notify_uninit => []       => 'void');
+$ffi->attach([notify_notification_new    => 'notify_new']    => ['string', 
'string', 'string']           => 'opaque');
+$ffi->attach([notify_notification_update => 'notify_update'] => ['opaque', 
'string', 'string', 'string'] => 'void');
+$ffi->attach([notify_notification_show   => 'notify_show']   => ['opaque', 
'opaque']                     => 'void');
 
 notify_init('FFI::Platypus');
 my $n = notify_new('','','');
diff --git a/examples/pipe.pl b/examples/pipe.pl
index 136967e..3fd1c46 100644
--- a/examples/pipe.pl
+++ b/examples/pipe.pl
@@ -1,9 +1,10 @@
 use strict;
 use warnings;
-use FFI::Platypus::Declare qw( int );
+use FFI::Platypus;
 
-lib undef;
-attach [pipe=>'mypipe'] => ['int[2]'] => int;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+$ffi->attach([pipe=>'mypipe'] => ['int[2]'] => 'int');
 
 my @fd = (0,0);
 mypipe(\@fd);
diff --git a/examples/string.pl b/examples/string.pl
index 3015698..7f87f2c 100644
--- a/examples/string.pl
+++ b/examples/string.pl
@@ -1,14 +1,15 @@
 use strict;
 use warnings;
-use FFI::Platypus::Declare qw( int string );
+use FFI::Platypus;
 
-lib undef;
-attach puts => [string] => int;
-attach strlen => [string] => int;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+$ffi->attach(puts => ['string'] => 'int');
+$ffi->attach(strlen => ['string'] => 'int');
 
 puts(strlen('somestring'));
 
-attach strstr => [string,string] => string;
+$ffi->attach(strstr => ['string','string'] => 'string');
 
 puts(strstr('somestring', 'string'));
 
@@ -16,6 +17,6 @@ puts(strstr('somestring', 'string'));
 
 puts(puts("lol"));
 
-attach strerror => [int] => string;
+$ffi->attach(strerror => ['int'] => 'string');
 
 puts(strerror(2));
diff --git a/examples/uuid.pl b/examples/uuid.pl
index 233d38c..3d6d0f0 100644
--- a/examples/uuid.pl
+++ b/examples/uuid.pl
@@ -1,16 +1,16 @@
 use strict;
 use warnings;
 use FFI::CheckLib;
-use FFI::Platypus::Declare
-  'void',
-  [ 'string(37)' => 'uuid_string' ],
-  [ 'record(16)' => 'uuid_t' ];
+use FFI::Platypus;
 use FFI::Platypus::Memory qw( malloc free );
 
-lib find_lib_or_exit lib => 'uuid';
+my $ffi = FFI::Platypus->new;
+$ffi->lib(find_lib_or_exit lib => 'uuid');
+$ffi->type('string(37)' => 'uuid_string');
+$ffi->type('record(16)' => 'uuid_t');
 
-attach uuid_generate => [uuid_t] => void;
-attach uuid_unparse  => [uuid_t,uuid_string] => void;
+$ffi->attach(uuid_generate => ['uuid_t'] => 'void');
+$ffi->attach(uuid_unparse  => ['uuid_t','uuid_string'] => 'void');
 
 my $uuid = "\0" x 16;  # uuid_t
 uuid_generate($uuid);
diff --git a/inc/My/AutoConf.pm b/inc/My/AutoConf.pm
index 189b8ac..5c882dd 100644
--- a/inc/My/AutoConf.pm
+++ b/inc/My/AutoConf.pm
@@ -38,10 +38,25 @@ unsigned int
 long
 signed long
 unsigned long
+uint8_t
+int8_t
+uint16_t
+int16_t
+uint32_t
+int32_t
+uint64_t
+int64_t
+size_t
+float
+double
+bool
+_Bool
+EOF
+
+my @extra_probe_types = split /\n/, <<EOF;
 long long
 signed long long
 unsigned long long
-size_t
 dev_t
 ino_t
 mode_t
@@ -52,14 +67,6 @@ off_t
 blksize_t
 blkcnt_t
 time_t
-uint8_t
-int8_t
-uint16_t
-int16_t
-uint32_t
-int32_t
-uint64_t
-int64_t
 int_least8_t
 int_least16_t
 int_least32_t
@@ -71,12 +78,10 @@ uint_least64_t
 ptrdiff_t
 wchar_t
 wint_t
-float
-double
-bool
-_Bool
 EOF
 
+push @probe_types, @extra_probe_types unless $ENV{FFI_PLATYPUS_NO_EXTRA_TYPES};
+
 my $config_h = File::Spec->rel2abs( File::Spec->catfile( 'include', 
'ffi_platypus_config.h' ) );
 
 sub configure
@@ -140,7 +145,15 @@ sub configure
 
   foreach my $type (@probe_types)
   {
-    my $size = $ac->check_sizeof_type($type);
+    my $size;
+    if($type =~ /^u?int(8|16|32|64)_t$/)
+    {
+      $size = $1 / 8;
+    }
+    else
+    {
+      $size = $ac->check_sizeof_type($type);
+    }
     if($size)
     {
       if($type !~ /^(float|double|long double)$/)
diff --git a/inc/My/ModuleBuild.pm b/inc/My/ModuleBuild.pm
index 2eed9be..1c7a213 100644
--- a/inc/My/ModuleBuild.pm
+++ b/inc/My/ModuleBuild.pm
@@ -149,7 +149,7 @@ sub new
   {
     print "\n\n";
     print "DEBUG_FAKE32:\n";
-    print "  + making Math::Int64 a prerequsite (not normally done on 64 bit 
Perls)\n";
+    print "  + making Math::Int64 a prerequisite (not normally done on 64 bit 
Perls)\n";
     print "  + using Math::Int64's C API to manipulate 64 bit values (not 
normally done on 64 bit Perls)\n";
     print "\n\n";
     $self->config_data(config_debug_fake32 => 1);
diff --git a/inc/probe/bigendian64.c b/inc/probe/bigendian64.c
new file mode 100644
index 0000000..b6fc0e5
--- /dev/null
+++ b/inc/probe/bigendian64.c
@@ -0,0 +1,27 @@
+#include "ffi_platypus.h"
+
+unsigned char
+my_foo(void)
+{
+  return 0xaa;
+}
+
+int
+main(int argc, char *argv[])
+{
+  ffi_cif cif;
+  ffi_type *args[1];
+  void *values[1];
+  unsigned char bytes[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+  
+  if(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &ffi_type_uint8, args) ==FFI_OK)
+  {
+    ffi_call(&cif, (void *) my_foo, &bytes, values);
+    if(bytes[7] == 0xaa)
+    {
+      return 0;
+    }
+  }
+
+  return 2;
+}
diff --git a/include/ffi_platypus.h b/include/ffi_platypus.h
index ef74786..31a7883 100644
--- a/include/ffi_platypus.h
+++ b/include/ffi_platypus.h
@@ -140,14 +140,28 @@ typedef union _ffi_pl_result {
   const char *string;
   int8_t     sint8;
   uint8_t    uint8;
+#if defined FFI_PL_PROBE_BIGENDIAN
   int8_t     sint8_array[4];
   uint8_t    uint8_array[4];
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+  int8_t     sint8_array[8];
+  uint8_t    uint8_array[8];
+#endif
   int16_t    sint16;
   uint16_t   uint16;
+#if defined FFI_PL_PROBE_BIGENDIAN
   int16_t    sint16_array[2];
   uint16_t   uint16_array[2];
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+  int16_t    sint16_array[4];
+  uint16_t   uint16_array[4];
+#endif
   int32_t    sint32;
   uint32_t   uint32;
+#if defined FFI_PL_PROBE_BIGENDIAN64
+  uint32_t   uint32_array[2];
+  int32_t    sint32_array[2];
+#endif
   int64_t    sint64;
   uint64_t   uint64;
   float      xfloat;
@@ -223,11 +237,11 @@ typedef struct _ffi_pl_record_member {
 
 #if defined(_MSC_VER)
 #define Newx_or_alloca(ptr, count, type) ptr = _alloca(sizeof(type)*count)
-#define Safefree_or_alloca(ptr) 
+#define Safefree_or_alloca(ptr)
 #define HAVE_ALLOCA 1
 #elif defined(HAVE_ALLOCA)
 #define Newx_or_alloca(ptr, count, type) ptr = alloca(sizeof(type)*count)
-#define Safefree_or_alloca(ptr) 
+#define Safefree_or_alloca(ptr)
 #else
 #define Newx_or_alloca(ptr, count, type) Newx(ptr, count, type)
 #define Safefree_or_alloca(ptr) Safefree(ptr)
diff --git a/include/ffi_platypus_call.h b/include/ffi_platypus_call.h
index 79c0b11..9cc2674 100644
--- a/include/ffi_platypus_call.h
+++ b/include/ffi_platypus_call.h
@@ -94,7 +94,7 @@
       else if(platypus_type == FFI_PL_POINTER)
       {
         void *ptr;
-        
+
         if(SvROK(arg)) /* TODO: and a scalar ref */
         {
           SV *arg2 = SvRV(arg);
@@ -567,7 +567,7 @@
     {
       platypus_type platypus_type;
       platypus_type = self->argument_types[i]->platypus_type;
-    
+
       if(platypus_type == FFI_PL_POINTER)
       {
         void *ptr = ffi_pl_arguments_get_pointer(arguments, i);
@@ -792,38 +792,54 @@
         switch(self->return_type->ffi_type->type)
         {
           case FFI_TYPE_UINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
             XSRETURN_UV(result.uint8_array[3]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+            XSRETURN_UV(result.uint8_array[7]);
 #else
             XSRETURN_UV(result.uint8);
 #endif
             break;
           case FFI_TYPE_SINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
             XSRETURN_IV(result.sint8_array[3]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+            XSRETURN_IV(result.sint8_array[7]);
 #else
             XSRETURN_IV(result.sint8);
 #endif
             break;
           case FFI_TYPE_UINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
             XSRETURN_UV(result.uint16_array[1]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+            XSRETURN_UV(result.uint16_array[3]);
 #else
             XSRETURN_UV(result.uint16);
 #endif
             break;
           case FFI_TYPE_SINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
             XSRETURN_IV(result.sint16_array[1]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+            XSRETURN_IV(result.sint16_array[3]);
 #else
             XSRETURN_IV(result.sint16);
 #endif
             break;
           case FFI_TYPE_UINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+            XSRETURN_UV(result.uint32_array[1]);
+#else
             XSRETURN_UV(result.uint32);
+#endif
             break;
           case FFI_TYPE_SINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+            XSRETURN_IV(result.sint32_array[1]);
+#else
             XSRETURN_IV(result.sint32);
+#endif
             break;
           case FFI_TYPE_UINT64:
 #ifdef HAVE_IV_IS_64
@@ -1103,38 +1119,54 @@
       switch(self->return_type->ffi_type->type)
       {
         case FFI_TYPE_UINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
           ret_in = newSVuv(result.uint8_array[3]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+          ret_in = newSVuv(result.uint8_array[7]);
 #else
           ret_in = newSVuv(result.uint8);
 #endif
           break;
         case FFI_TYPE_SINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
           ret_in = newSViv(result.sint8_array[3]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+          ret_in = newSViv(result.sint8_array[7]);
 #else
           ret_in = newSViv(result.sint8);
 #endif
           break;
         case FFI_TYPE_UINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
           ret_in = newSVuv(result.uint16_array[1]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+          ret_in = newSVuv(result.uint16_array[3]);
 #else
           ret_in = newSVuv(result.uint16);
 #endif
           break;
         case FFI_TYPE_SINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
           ret_in = newSViv(result.sint16_array[1]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+          ret_in = newSViv(result.sint16_array[3]);
 #else
           ret_in = newSViv(result.sint16);
 #endif
           break;
         case FFI_TYPE_UINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+          ret_in = newSVuv(result.uint32_array[1]);
+#else
           ret_in = newSVuv(result.uint32);
+#endif
           break;
         case FFI_TYPE_SINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+          ret_in = newSViv(result.sint32_array[1]);
+#else
           ret_in = newSViv(result.sint32);
+#endif
           break;
         case FFI_TYPE_UINT64:
 #ifdef HAVE_IV_IS_64
diff --git a/lib/FFI/Platypus.pm b/lib/FFI/Platypus.pm
index dcf4d3d..13f145c 100644
--- a/lib/FFI/Platypus.pm
+++ b/lib/FFI/Platypus.pm
@@ -6,7 +6,7 @@ use 5.008001;
 use Carp qw( croak );
 
 # ABSTRACT: Write Perl bindings to non-Perl libraries with FFI. No XS required.
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 # Platypus Man,
 # Platypus Man,
@@ -530,7 +530,7 @@ sub _have_pm
 
 package FFI::Platypus::Function;
 
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 use overload '&{}' => sub {
   my $ffi = shift;
@@ -551,7 +551,7 @@ use overload '&{}' => sub {
   sub { $self->{code}->(@_) };
 };
 
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 sub new
 {
@@ -580,13 +580,13 @@ sub get_data
 
 package FFI::Platypus::ClosureData;
 
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 package FFI::Platypus::Type;
 
 use Carp qw( croak );
 
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 sub new
 {
@@ -680,7 +680,7 @@ FFI::Platypus - Write Perl bindings to non-Perl libraries 
with FFI. No XS requir
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
@@ -772,14 +772,10 @@ support and development (for contributors) information.  
If you are new
 to Platypus or FFI, you may want to skip down to the 
 L<EXAMPLES|/EXAMPLES> to get a taste of what you can do with Platypus.
 
-Platypus also provides an declarative interface you may want to use 
-instead of the object oriented interface called 
-L<FFI::Platypus::Declare>.
-
 Platypus has extensive documentation of types at L<FFI::Platypus::Type> 
 and its custom types API at L<FFI::Platypus::API>.
 
-=for stopwords ØMQ
+=for stopwords ØMQ
 
 =head1 CONSTRUCTORS
 
@@ -1163,19 +1159,20 @@ value from the L</abis> method above.
 
 =head1 EXAMPLES
 
-Here are some examples.  Some of them use the L<FFI::Platypus::Declare> 
-interface, but the principles apply to the OO interface.  These examples 
+Here are some examples.  These examples 
 are provided in full with the Platypus distribution in the "examples" 
 directory.  There are also some more examples in L<FFI::Platypus::Type> 
 that are related to types.
 
 =head2 Integer conversions
 
- use FFI::Platypus::Declare qw( int string );
+ use FFI::Platypus;
  
- lib undef;
- attach puts => [string] => int;
- attach atoi => [string] => int;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ 
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(atoi => ['string'] => 'int');
  
  puts(atoi('56'));
 
@@ -1188,20 +1185,21 @@ includes the standard c library.
 =head2 libnotify
 
  use FFI::CheckLib;
- use FFI::Platypus::Declare qw( void string opaque );
+ use FFI::Platypus;
  
  # NOTE: I ported this from the like named eg/notify.pl that came with FFI::Raw
  # and it seems to work most of the time, but also seems to SIGSEGV sometimes.
  # I saw the same behavior in the FFI::Raw version, and am not really familiar
  # with the libnotify API to say what is the cause.  Patches welcome to fix it.
  
- lib find_lib_or_exit lib => 'notify';
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(find_lib_or_exit lib => 'notify');
  
- attach notify_init   => [string] => void;
- attach notify_uninit => []       => void;
- attach [notify_notification_new    => 'notify_new']    => 
[string,string,string]           => opaque;
- attach [notify_notification_update => 'notify_update'] => [opaque, string, 
string, string] => void;
- attach [notify_notification_show   => 'notify_show']   => [opaque, opaque]    
             => void;
+ $ffi->attach(notify_init   => ['string'] => 'void');
+ $ffi->attach(notify_uninit => []       => 'void');
+ $ffi->attach([notify_notification_new    => 'notify_new']    => ['string', 
'string', 'string']           => 'opaque');
+ $ffi->attach([notify_notification_update => 'notify_update'] => ['opaque', 
'string', 'string', 'string'] => 'void');
+ $ffi->attach([notify_notification_show   => 'notify_show']   => ['opaque', 
'opaque']                     => 'void');
  
  notify_init('FFI::Platypus');
  my $n = notify_new('','','');
@@ -1243,14 +1241,15 @@ We are really calling the C function 
C<notify_notification_new>.
 
 =head2 Allocating and freeing memory
 
- use FFI::Platypus::Declare;
+ use FFI::Platypus;
  use FFI::Platypus::Memory qw( malloc free memcpy );
  
+ my $ffi = FFI::Platypus->new;
  my $buffer = malloc 12;
  
- memcpy $buffer, cast('string' => 'opaque', "hello there"), length "hello 
there\0";
+ memcpy $buffer, $ffi->cast('string' => 'opaque', "hello there"), length 
"hello there\0";
  
- print cast('opaque' => 'string', $buffer), "\n";
+ print $ffi->cast('opaque' => 'string', $buffer), "\n";
  
  free $buffer;
 
@@ -1314,16 +1313,16 @@ structured data records).
 =head2 libuuid
 
  use FFI::CheckLib;
- use FFI::Platypus::Declare
-   'void',
-   [ 'string(37)' => 'uuid_string' ],
-   [ 'record(16)' => 'uuid_t' ];
+ use FFI::Platypus;
  use FFI::Platypus::Memory qw( malloc free );
  
- lib find_lib_or_exit lib => 'uuid';
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(find_lib_or_exit lib => 'uuid');
+ $ffi->type('string(37)' => 'uuid_string');
+ $ffi->type('record(16)' => 'uuid_t');
  
- attach uuid_generate => [uuid_t] => void;
- attach uuid_unparse  => [uuid_t,uuid_string] => void;
+ $ffi->attach(uuid_generate => ['uuid_t'] => 'void');
+ $ffi->attach(uuid_unparse  => ['uuid_t','uuid_string'] => 'void');
  
  my $uuid = "\0" x 16;  # uuid_t
  uuid_generate($uuid);
@@ -1345,11 +1344,13 @@ this case it is simply 16 bytes).  We also know that 
the strings
 
 =head2 puts and getpid
 
- use FFI::Platypus::Declare qw( string int );
+ use FFI::Platypus;
  
- lib undef;
- attach puts => [string] => int;
- attach getpid => [] => int;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ 
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(getpid => [] => 'int');
  
  puts(getpid());
 
@@ -1358,20 +1359,21 @@ C<getpid> is available on Unix type platforms.
 
 =head2 Math library
 
- use FFI::Platypus::Declare qw( string int double );
+ use FFI::Platypus;
  use FFI::CheckLib;
  
- lib undef;
- attach puts => [string] => int;
- attach fdim => [double,double] => double;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(fdim => ['double','double'] => 'double');
  
  puts(fdim(7.0, 2.0));
  
- attach cos => [double] => double;
+ $ffi->attach(cos => ['double'] => 'double');
  
  puts(cos(2.0));
  
- attach fmax => [double, double] => double;
+ $ffi->attach(fmax => ['double', 'double'] => 'double');
  
  puts(fmax(2.0,3.0));
 
@@ -1384,15 +1386,16 @@ use C<undef> as the library to find them.
 
 =head2 Strings
 
- use FFI::Platypus::Declare qw( int string );
+ use FFI::Platypus;
  
- lib undef;
- attach puts => [string] => int;
- attach strlen => [string] => int;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(strlen => ['string'] => 'int');
  
  puts(strlen('somestring'));
  
- attach strstr => [string,string] => string;
+ $ffi->attach(strstr => ['string','string'] => 'string');
  
  puts(strstr('somestring', 'string'));
  
@@ -1400,7 +1403,7 @@ use C<undef> as the library to find them.
  
  puts(puts("lol"));
  
- attach strerror => [int] => string;
+ $ffi->attach(strerror => ['int'] => 'string');
  
  puts(strerror(2));
 
@@ -1506,7 +1509,7 @@ just-in-time (JIT) compilation service for FFI.
    print "recv_message = $recv_message\n";
  };
 
-B<Discussion>: ØMQ is a high-performance asynchronous messaging library.  
+B<Discussion>: ØMQ is a high-performance asynchronous messaging library.  
 There are a few things to note here.
 
 Firstly, sometimes there may be multiple versions of a library in the 
@@ -1531,7 +1534,7 @@ the same, it is useful form of documentation that helps 
describe the
 functionality of the interface.
 
 Finally we attach the necessary functions, send and receive a message. 
-If you are interested, there is a fully fleshed out ØMQ Perl interface 
+If you are interested, there is a fully fleshed out ØMQ Perl interface 
 implemented using FFI called L<ZMQ::FFI>.
 
 =head2 libarchive
@@ -2014,7 +2017,7 @@ bit Perl as well.
  
  
  DEBUG_FAKE32:
-   + making Math::Int64 a prerequsite (not normally done on 64 bit Perls)
+   + making Math::Int64 a prerequisite (not normally done on 64 bit Perls)
    + using Math::Int64's C API to manipulate 64 bit values (not normally done 
on 64 bit Perls)
  
  Created MYMETA.yml and MYMETA.json
@@ -2096,9 +2099,9 @@ C<PERL5LIB> path when you build Platypus.  For example:
 
 =over 4
 
-=item L<FFI::Platypus::Declare>
+=item L<NativeCall>
 
-Declarative interface to Platypus.
+Promising interface to Platypus inspired by Perl 6.
 
 =item L<FFI::Platypus::Type>
 
diff --git a/lib/FFI/Platypus/API.pm b/lib/FFI/Platypus/API.pm
index 47037ef..1b4aacf 100644
--- a/lib/FFI/Platypus/API.pm
+++ b/lib/FFI/Platypus/API.pm
@@ -8,7 +8,7 @@ use base qw( Exporter );
 our @EXPORT = grep /^arguments_/, keys %FFI::Platypus::API::;
 
 # ABSTRACT: Platypus arguments and return value API for custom types
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 1;
@@ -25,7 +25,7 @@ FFI::Platypus::API - Platypus arguments and return value API 
for custom types
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
diff --git a/lib/FFI/Platypus/Buffer.pm b/lib/FFI/Platypus/Buffer.pm
index 8f3db33..3839857 100644
--- a/lib/FFI/Platypus/Buffer.pm
+++ b/lib/FFI/Platypus/Buffer.pm
@@ -7,7 +7,7 @@ use base qw( Exporter );
 our @EXPORT = qw( scalar_to_buffer buffer_to_scalar );
 
 # ABSTRACT: Convert scalars to C buffers
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 use constant _incantation => 
@@ -41,7 +41,7 @@ FFI::Platypus::Buffer - Convert scalars to C buffers
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
@@ -93,10 +93,6 @@ scalar.
 
 Main Platypus documentation.
 
-=item L<FFI::Platypus::Declare>
-
-Declarative interface to Platypus.
-
 =back
 
 =head1 AUTHOR
diff --git a/lib/FFI/Platypus/Declare.pm b/lib/FFI/Platypus/Declare.pm
index c10bb6a..8576174 100644
--- a/lib/FFI/Platypus/Declare.pm
+++ b/lib/FFI/Platypus/Declare.pm
@@ -5,7 +5,7 @@ use warnings;
 use FFI::Platypus;
 
 # ABSTRACT: Declarative interface to FFI::Platypus
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 our $ffi    = {};
@@ -174,7 +174,7 @@ FFI::Platypus::Declare - Declarative interface to 
FFI::Platypus
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
@@ -187,6 +187,18 @@ version 0.42
 
 =head1 DESCRIPTION
 
+This module is officially B<discouraged>.  The idea was to provide a
+simpler declarative interface without the need of (directly) creating
+an L<FFI::Platypus> instance.  In practice it is almost as complicated
+and makes it difficult to upgrade to the proper OO interface if the
+need arises.  I have stopped using it mainly for this reason.  It will
+remain as part of the Platypus core distribution to keep old code working,
+but you are encouraged to write new code using the OO interface.
+Alternatively, you can try the Perl 6 inspired L<NativeCall>, which
+provides most of the goals this module was intended for (that is
+a simple interface at the cost of some power), without much of the
+complexity.  The remainder of this document describes the interface.
+
 This module provides a declarative interface to L<FFI::Platypus>. It 
 provides a more concise interface at the cost of a little less power, 
 and a little more namespace pollution.
diff --git a/lib/FFI/Platypus/Lang/ASM.pm b/lib/FFI/Platypus/Lang/ASM.pm
index 4b0b4de..8584a94 100644
--- a/lib/FFI/Platypus/Lang/ASM.pm
+++ b/lib/FFI/Platypus/Lang/ASM.pm
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 
 # ABSTRACT: Documentation and tools for using Platypus with the Assembly
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 sub native_type_map
@@ -26,7 +26,7 @@ FFI::Platypus::Lang::ASM - Documentation and tools for using 
Platypus with the A
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
diff --git a/lib/FFI/Platypus/Lang/C.pm b/lib/FFI/Platypus/Lang/C.pm
index 3e2c77c..dc2972d 100644
--- a/lib/FFI/Platypus/Lang/C.pm
+++ b/lib/FFI/Platypus/Lang/C.pm
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 
 # ABSTRACT: Documentation and tools for using Platypus with the C programming 
language
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 sub native_type_map
@@ -27,7 +27,7 @@ FFI::Platypus::Lang::C - Documentation and tools for using 
Platypus with the C p
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
diff --git a/lib/FFI/Platypus/Lang/Win32.pm b/lib/FFI/Platypus/Lang/Win32.pm
index 17945ff..419d09f 100644
--- a/lib/FFI/Platypus/Lang/Win32.pm
+++ b/lib/FFI/Platypus/Lang/Win32.pm
@@ -5,7 +5,7 @@ use warnings;
 use Config;
 
 # ABSTRACT: Documentation and tools for using Platypus with the Windows API
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 sub abi
@@ -187,7 +187,7 @@ FFI::Platypus::Lang::Win32 - Documentation and tools for 
using Platypus with the
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
diff --git a/lib/FFI/Platypus/Memory.pm b/lib/FFI/Platypus/Memory.pm
index dd7007a..6a4c409 100644
--- a/lib/FFI/Platypus/Memory.pm
+++ b/lib/FFI/Platypus/Memory.pm
@@ -6,7 +6,7 @@ use FFI::Platypus;
 use base qw( Exporter );
 
 # ABSTRACT: Memory functions for FFI
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 our @EXPORT = qw( malloc free calloc realloc memcpy memset strdup );
@@ -46,7 +46,7 @@ FFI::Platypus::Memory - Memory functions for FFI
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
@@ -140,10 +140,6 @@ is slower.
 
 Main Platypus documentation.
 
-=item L<FFI::Platypus::Declare>
-
-Declarative interface for Platypus.
-
 =back
 
 =head1 AUTHOR
diff --git a/lib/FFI/Platypus/Record.pm b/lib/FFI/Platypus/Record.pm
index 2bc8654..5f7bb53 100644
--- a/lib/FFI/Platypus/Record.pm
+++ b/lib/FFI/Platypus/Record.pm
@@ -10,7 +10,7 @@ use constant 1.32 ();
 our @EXPORT = qw( record_layout );
 
 # ABSTRACT: FFI support for structured records data
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 sub record_layout
@@ -128,7 +128,7 @@ FFI::Platypus::Record - FFI support for structured records 
data
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
diff --git a/lib/FFI/Platypus/Record/TieArray.pm 
b/lib/FFI/Platypus/Record/TieArray.pm
index 6f1141f..a891cbc 100644
--- a/lib/FFI/Platypus/Record/TieArray.pm
+++ b/lib/FFI/Platypus/Record/TieArray.pm
@@ -5,7 +5,7 @@ use warnings;
 use Carp qw( croak );
 
 # ABSTRACT: Tied array interface for record array members
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 sub TIEARRAY
@@ -62,7 +62,7 @@ FFI::Platypus::Record::TieArray - Tied array interface for 
record array members
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
diff --git a/lib/FFI/Platypus/Type.pod b/lib/FFI/Platypus/Type.pod
index f86b757..5287326 100644
--- a/lib/FFI/Platypus/Type.pod
+++ b/lib/FFI/Platypus/Type.pod
@@ -14,7 +14,7 @@ FFI::Platypus::Type - Defining types for FFI::Platypus
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
@@ -24,12 +24,6 @@ OO Interface:
  my $ffi = FFI::Platypus->new;
  $ffi->type('int' => 'my_int');
 
-Declarative interface:
-
- use FFI::Platypus::Declare
-   qw( int void ),
-   ['int' => 'my_int'];
-
 =head1 DESCRIPTION
 
 This document describes how to define types using L<FFI::Platypus>.  
@@ -211,18 +205,18 @@ takes a character you want to use the perl 
L<ord|perlfunc#ord> function.
 Here is an example that uses the standard libc C<isalpha>, C<isdigit> 
 type functions:
 
- use FFI::Platypus::Declare
-   'int',
-   [int => 'character'];
+ use FFI::Platypus;
  
- lib undef;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ $ffi->type('int' => 'character');
  
  my @list = qw( 
    alnum alpha ascii blank cntrl digit lower print punct 
    space upper xdigit
  );
  
- attach "is$_" => [character] => int for @list;
+ $ffi->attach("is$_" => ['character'] => 'int') for @list;
  
  my $char = shift(@ARGV) || 'a';
  
@@ -247,11 +241,13 @@ things like C<wchar_t>, C<off_t>, C<wint_t>. You can use 
this script to
 list all the integer types that L<FFI::Platypus> knows about, plus how 
 they are implemented.
 
- use FFI::Platypus::Declare;
+ use FFI::Platypus;
+ 
+ my $ffi = FFI::Platypus->new;
  
  foreach my $type_name (sort FFI::Platypus->types)
  {
-   my $meta = type_meta $type_name;
+   my $meta = $ffi->type_meta($type_name);
    next unless $meta->{element_type} eq 'int';
    printf "%20s %s\n", $type_name, $meta->{ffi_type};
  }
@@ -658,10 +654,11 @@ function these changes will be reflected when it returns 
to Perl space.
 An example of using this is the Unix C<pipe> command which returns a 
 list of two file descriptors as an array.
 
- use FFI::Platypus::Declare qw( int );
+ use FFI::Platypus;
  
- lib undef;
- attach [pipe=>'mypipe'] => ['int[2]'] => int;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ $ffi->attach([pipe=>'mypipe'] => ['int[2]'] => 'int');
  
  my @fd = (0,0);
  mypipe(\@fd);
@@ -745,43 +742,39 @@ as closure return types.  Here is an example, with C code:
 
 And the Perl code:
 
- use FFI::Platypus::Declare
-   'int', 'void', 'string',
-   ['(int)->int' => 'closure_t'];
+ use FFI::Platypus;
  
- lib './closure.so';
- lib undef; # for puts
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib('./closure.so');
+ $ffi->type('(int)->int' => 'closure_t');
  
- attach set_closure => [closure_t] => void;
- attach call_closure => [int] => int;
- attach puts => [string] => int;
+ $ffi->attach(set_closure => ['closure_t'] => 'void');
+ $ffi->attach(call_closure => ['int'] => 'int');
  
- my $closure1 = closure { $_[0] * 2 };
+ my $closure1 = $ffi->closure(sub { $_[0] * 2 });
  set_closure($closure1);
- puts(call_closure(2)); # prints "4"
+ print  call_closure(2), "\n"; # prints "4"
  
- my $closure2 = closure { $_[0] * 4 };
+ my $closure2 = $ffi->closure(sub { $_[0] * 4 });
  set_closure($closure2);
- puts(call_closure(2)); # prints "8"
+ print call_closure(2), "\n"; # prints "8"
 
 If you have a pointer to a function in the form of an C<opaque> type,
 you can pass this in place of a closure type:
 
- use FFI::Platypus::Declare
-   'int', 'void', 'string',
-   ['(int)->int' => 'closure_t'];
+ use FFI::Platypus;
  
- lib './closure.so';
- lib undef; # for puts
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib('./closure.so');
+ $ffi->type('(int)->int' => 'closure_t');
  
- attach set_closure => [closure_t] => void;
- attach call_closure => [int] => int;
- attach puts => [string] => int;
+ $ffi->attach(set_closure => ['closure_t'] => 'void');
+ $ffi->attach(call_closure => ['int'] => 'int');
  
- my $closure = closure { $_[0] * 6 };
- my $opaque = cast closure_t => 'opaque', $closure;
+ my $closure = $ffi->closure(sub { $_[0] * 6 });
+ my $opaque = $ffi->cast(closure_t => 'opaque', $closure);
  set_closure($opaque);
- puts(call_closure(2)); # prints "12"
+ print call_closure(2), "\n"; # prints "12"
 
 The syntax for specifying a closure type is a list of comma separated 
 types in parentheticals followed by a narrow arrow C<-E<gt>>, followed 
diff --git a/lib/FFI/Platypus/Type/PointerSizeBuffer.pm 
b/lib/FFI/Platypus/Type/PointerSizeBuffer.pm
index da9ecbb..ac30707 100644
--- a/lib/FFI/Platypus/Type/PointerSizeBuffer.pm
+++ b/lib/FFI/Platypus/Type/PointerSizeBuffer.pm
@@ -12,7 +12,7 @@ use FFI::Platypus::Buffer qw( scalar_to_buffer );
 use FFI::Platypus::Buffer qw( buffer_to_scalar );
 
 # ABSTRACT: Convert string scalar to a buffer as a pointer / size_t combination
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 my @stack;
@@ -60,7 +60,7 @@ FFI::Platypus::Type::PointerSizeBuffer - Convert string 
scalar to a buffer as a
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
@@ -74,11 +74,12 @@ In your C code:
 
 In your Platypus::FFI code:
 
- use FFI::Platypus::Declare
-   'void',
-   [ '::PointerSizeBuffer' => 'buffer' ];
+ use FFI::Platypus;
  
- attach function_with_buffer => [buffer] => void;
+ my $ffi = FFI::Platypus->new;
+ $ffi->load_custom_type('::PointerSizeBuffer' => 'buffer');
+ 
+ $ffi->attach(function_with_buffer => ['buffer'] => 'void');
  my $string = "content of buffer";
  function_with_buffer($string);
 
@@ -98,10 +99,6 @@ pass in a string scalar as a pointer / size buffer pair.
 
 Main Platypus documentation.
 
-=item L<FFI::Platypus::Declare>
-
-Declarative interface for Platypus.
-
 =item L<FFI::Platypus::Type>
 
 Platypus types documentation.
diff --git a/lib/FFI/Platypus/Type/StringPointer.pm 
b/lib/FFI/Platypus/Type/StringPointer.pm
index 5b3cfc8..6c7c6cb 100644
--- a/lib/FFI/Platypus/Type/StringPointer.pm
+++ b/lib/FFI/Platypus/Type/StringPointer.pm
@@ -7,7 +7,7 @@ use Scalar::Util qw( readonly );
 use Config ();
 
 # ABSTRACT: Convert a pointer to a string and back
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 use constant _incantation =>
@@ -76,7 +76,7 @@ FFI::Platypus::Type::StringPointer - Convert a pointer to a 
string and back
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
@@ -95,12 +95,13 @@ In your C code:
 
 In your Platypus::FFI code:
 
- use FFI::Platypus::Declare
-   'void',
-   [ '::StringPointer' => 'string_pointer' ];
+ use FFI::Platypus;
  
- attach string_pointer_argument => [string_pointer] => void;
- attach string_pointer_return   => [] => string_pointer;
+ my $ffi = FFI::Platypus->new;
+ $ffi->load_custom_type('::StringPointer' => 'string_pointer');
+ 
+ $ffi->attach(string_pointer_argument => ['string_pointer'] => 'void');
+ $ffi->attach(string_pointer_return   => [] => 'string_pointer');
  
  my $string = "foo";
  
@@ -123,10 +124,6 @@ strings.
 
 Main Platypus documentation.
 
-=item L<FFI::Platypus::Declare>
-
-Declarative interface for Platypus.
-
 =item L<FFI::Platypus::Type>
 
 Platypus types documentation.
diff --git a/lib/Module/Build/FFI.pm b/lib/Module/Build/FFI.pm
index eb8a5e4..e1b465c 100644
--- a/lib/Module/Build/FFI.pm
+++ b/lib/Module/Build/FFI.pm
@@ -12,7 +12,7 @@ use Config;
 use base qw( Module::Build );
 
 # ABSTRACT: Build Perl extensions in C with FFI
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
 
 
 __PACKAGE__->add_property( ffi_libtest_dir =>
@@ -303,7 +303,7 @@ Module::Build::FFI - Build Perl extensions in C with FFI
 
 =head1 VERSION
 
-version 0.42
+version 0.42_01
 
 =head1 SYNOPSIS
 
@@ -334,16 +334,7 @@ Put your .c and .h files in C<ffi> (C<ffi/example.c>):
    printf("hello world\n");
  }
 
-Attach it to Perl in your main module (C<lib/Foo/Bar.pm>) using
-the declarative interface:
-
- package Foo::Bar;
- 
- use FFI::Platypus::Declare qw( void );
- 
- attach hello_world => [] => void;
-
-or use the OO interface:
+Attach it to Perl in your main module (C<lib/Foo/Bar.pm>):
 
  package Foo::Bar;
  
@@ -388,10 +379,10 @@ can use to test your FFI module with.  You can use 
FFI::CheckLib to
 find the library from your test:
 
  use Test::More;
- use FFI::Platypus::Declare;
+ use FFI::Platypus;
  use FFI::CheckLib;
  
- lib find_lib lib => 'test', libpath => 'libtest';
+ FFI::Platypus->new->lib(find_lib lib => 'test', libpath => 'libtest');
 
 [version 0.18]
 
diff --git a/t/00_diag.t b/t/00_diag.t
index 342a0bc..13bcc33 100644
--- a/t/00_diag.t
+++ b/t/00_diag.t
@@ -65,6 +65,10 @@ $post_diag = sub {
     {
       diag sprintf("  %-20s %s", $key, $abi->{$key});
     }
+    spacer();
+    diag "Probes:";
+    my $probe = FFI::Platypus::ConfigData->config("probe");
+    diag sprintf("  %-20s %s", $_, $probe->{$_}) for keys %$probe;
   };
   diag "extended diagnostic failed: $@" if $@;
 };
diff --git a/xs/closure.c b/xs/closure.c
index 971d5e0..eac39c4 100644
--- a/xs/closure.c
+++ b/xs/closure.c
@@ -196,38 +196,54 @@ ffi_pl_closure_call(ffi_cif *ffi_cif, void *result, void 
**arguments, void *user
       switch(extra->return_type->ffi_type->type)
       {
         case FFI_TYPE_UINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
           ((uint8_t*)result)[3] = SvUV(sv);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+          ((uint8_t*)result)[7] = SvUV(sv);
 #else
           *((uint8_t*)result) = SvUV(sv);
 #endif
           break;
         case FFI_TYPE_SINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
           ((int8_t*)result)[3] = SvIV(sv);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+          ((int8_t*)result)[7] = SvIV(sv);
 #else
           *((int8_t*)result) = SvIV(sv);
 #endif
           break;
         case FFI_TYPE_UINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
           ((uint16_t*)result)[1] = SvUV(sv);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+          ((uint16_t*)result)[3] = SvUV(sv);
 #else
           *((uint16_t*)result) = SvUV(sv);
 #endif
           break;
         case FFI_TYPE_SINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
           ((int16_t*)result)[1] = SvIV(sv);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+          ((int16_t*)result)[3] = SvIV(sv);
 #else
           *((int16_t*)result) = SvIV(sv);
 #endif
           break;
         case FFI_TYPE_UINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+          ((uint32_t*)result)[1] = SvUV(sv);
+#else
           *((uint32_t*)result) = SvUV(sv);
+#endif
           break;
         case FFI_TYPE_SINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+          ((int32_t*)result)[1] = SvIV(sv);
+#else
           *((int32_t*)result) = SvIV(sv);
+#endif
           break;
         case FFI_TYPE_UINT64:
 #ifdef HAVE_IV_IS_64
diff --git a/xt/release/eol.t b/xt/author/eol.t
similarity index 99%
rename from xt/release/eol.t
rename to xt/author/eol.t
index 3f2e816..21395b5 100644
--- a/xt/release/eol.t
+++ b/xt/author/eol.t
@@ -12,3 +12,5 @@ use File::Spec;
 chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
 
 all_perl_files_ok(grep { -e $_ } qw( bin lib t Makefile.PL ));
+
+
diff --git a/xt/release/no_tabs.t b/xt/author/no_tabs.t
similarity index 99%
rename from xt/release/no_tabs.t
rename to xt/author/no_tabs.t
index 0a6d2b6..d62d42f 100644
--- a/xt/release/no_tabs.t
+++ b/xt/author/no_tabs.t
@@ -13,3 +13,4 @@ chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, 
File::Spec->updir));
 
 all_perl_files_ok( grep { -e $_ } qw( bin lib t Makefile.PL ));
 
+
diff --git a/xt/release/pod.t b/xt/author/pod.t
similarity index 99%
rename from xt/release/pod.t
rename to xt/author/pod.t
index 2603675..282ed97 100644
--- a/xt/release/pod.t
+++ b/xt/author/pod.t
@@ -13,3 +13,4 @@ chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, 
File::Spec->updir));
 
 all_pod_files_ok( grep { -e $_ } qw( bin lib ));
 
+
diff --git a/xt/release/pod_coverage.t b/xt/author/pod_coverage.t
similarity index 96%
rename from xt/release/pod_coverage.t
rename to xt/author/pod_coverage.t
index 07b26b1..bd70549 100644
--- a/xt/release/pod_coverage.t
+++ b/xt/author/pod_coverage.t
@@ -15,7 +15,7 @@ use FindBin;
 use File::Spec;
 
 my $config_filename = File::Spec->catfile(
-  $FindBin::Bin, 'release.yml'
+  $FindBin::Bin, File::Spec->updir, File::Spec->updir, 'author.yml'
 );
 
 my $config;
@@ -72,3 +72,4 @@ foreach my $class (@classes)
   };
 }
 
+
diff --git a/xt/release/pod_spelling_common.t b/xt/author/pod_spelling_common.t
similarity index 86%
rename from xt/release/pod_spelling_common.t
rename to xt/author/pod_spelling_common.t
index ad8dffd..75b9f8d 100644
--- a/xt/release/pod_spelling_common.t
+++ b/xt/author/pod_spelling_common.t
@@ -12,7 +12,7 @@ use FindBin;
 use File::Spec;
 
 my $config_filename = File::Spec->catfile(
-  $FindBin::Bin, 'release.yml'
+  $FindBin::Bin, File::Spec->updir, File::Spec->updir, 'author.yml'
 );
 
 my $config;
@@ -23,5 +23,7 @@ plan skip_all => 'disabled' if 
$config->{pod_spelling_common}->{skip};
 
 chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
 
-# FIXME test files in bin too.
+# TODO: test files in bin too.
 all_pod_files_ok;
+
+
diff --git a/xt/release/pod_spelling_system.t b/xt/author/pod_spelling_system.t
similarity index 92%
rename from xt/release/pod_spelling_system.t
rename to xt/author/pod_spelling_system.t
index 3773353..0c24c58 100644
--- a/xt/release/pod_spelling_system.t
+++ b/xt/author/pod_spelling_system.t
@@ -13,7 +13,7 @@ use FindBin;
 use File::Spec;
 
 my $config_filename = File::Spec->catfile(
-  $FindBin::Bin, 'release.yml'
+  $FindBin::Bin, File::Spec->updir, File::Spec->updir, 'author.yml'
 );
 
 my $config;
@@ -25,10 +25,7 @@ plan skip_all => 'disabled' if 
$config->{pod_spelling_system}->{skip};
 chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
 
 add_stopwords(@{ $config->{pod_spelling_system}->{stopwords} });
-add_stopwords(<DATA>);
-all_pod_files_spelling_ok;
-
-__DATA__
+add_stopwords(qw(
 Plicease
 stdout
 stderr
@@ -99,3 +96,7 @@ OpenVMS
 URI
 URL
 CGI
+));
+all_pod_files_spelling_ok;
+
+
diff --git a/xt/release/strict.t b/xt/author/strict.t
similarity index 64%
rename from xt/release/strict.t
rename to xt/author/strict.t
index 2dbad08..5bbb07b 100644
--- a/xt/release/strict.t
+++ b/xt/author/strict.t
@@ -11,5 +11,12 @@ use File::Spec;
 
 chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
 
+unshift @Test::Strict::MODULES_ENABLING_STRICT,
+  'sips',
+  'Test2::Bundle::SIPS',
+  'Test2::Bundle::Extended';
+note "enabling strict = $_" for @Test::Strict::MODULES_ENABLING_STRICT;
+
 all_perl_files_ok( grep { -e $_ } qw( bin lib t Makefile.PL ));
 
+
diff --git a/xt/release/version.t b/xt/author/version.t
similarity index 93%
rename from xt/release/version.t
rename to xt/author/version.t
index c3d96c4..31dfc98 100644
--- a/xt/release/version.t
+++ b/xt/author/version.t
@@ -28,7 +28,7 @@ plan skip_all => "test not built yet (run dzil test)"
   ||     -e dir( $FindBin::Bin)->parent->parent->file('Build.PL');
 
 my $config_filename = File::Spec->catfile(
-  $FindBin::Bin, 'release.yml'
+  $FindBin::Bin, File::Spec->updir, File::Spec->updir, 'author.yml'
 );
 
 my $config;
@@ -42,3 +42,4 @@ if($config->{version}->{dir})
 
 version_all_ok($config->{version}->{dir} ? ($config->{version}->{dir}) : ());
 done_testing;
+
diff --git a/xt/release/changes.t b/xt/release/changes.t
index 88cf462..24c81ca 100644
--- a/xt/release/changes.t
+++ b/xt/release/changes.t
@@ -25,3 +25,5 @@ do {
 changes_file_ok;
 
 done_testing;
+
+
diff --git a/xt/release/fixme.t b/xt/release/fixme.t
index 9dac4c6..dedc7f3 100644
--- a/xt/release/fixme.t
+++ b/xt/release/fixme.t
@@ -17,3 +17,4 @@ run_tests(
   warn  => 1,
 );
 
+

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-perl/packages/libffi-platypus-perl.git

_______________________________________________
Pkg-perl-cvs-commits mailing list
Pkg-perl-cvs-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits

Reply via email to