The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Revision history for FFI-Platypus

0.31      2015-02-26 13:41:23 -0500
  - Fix bug involving wide custom arguments 
    "wide" meaning where a single Perl argument is translated
    into multiple machine code arguments.  (pipcet++ gh#43)

0.30      2015-02-25 17:50:54 -0500
  - You can now pass an opaque in place of a closure type (pipcet++ gh#40,gh#41)
  - FFI closures are now cached and can be reused if the same closure is passed
    repeatedly (pipcet++ gh#40,gh#42)
  - Passing non-reference to scalar as a pointer argument will now issue a warning
    (gh#5)

0.29      2015-02-24 08:50:34 -0500
  - Delayed loading of Win32::ErrorMode to avoid build prereq failure on Windows

0.28      2015-02-23 14:01:54 -0500
  - Fix Win32 probe prereq on non-Strawberry 5.20.x+
  - Fix for Solaris cc

0.27      2015-02-22 11:17:05 -0500
  - Interface to alternate ABIs / calling conventions
  - Added abi method
  - Added abis class method
  - Simplify Win32 probe
  - Added FFI::Platypus::Lang::Win32 which provides data types used by
    the Windows API.  Takes care of subtle differences between
    Win32 and Win64.
  - Fixed bugs specific to 5.8.x
  - Language plugins can now specify an ABI with abi class method
  - Default ABI for FFI::Platypus::Lang::Win32 is stdcall on 32bit windows

0.26      2015-02-18 17:47:43 -0500
  - Added support for pointers to longdouble (in C "long double *") type
  - Added support for array of longdouble (in C "long double []") type
  - Added tied array interface for record array members (see FFI::Platypus::Record::TieArray)
    Marked as EXPERIMENTAL
  - Array members of records can now be accessed (set/get) by element
  - Array members of records types are now documented (see FFI::Platypus::Record)
  - Bugfix: array wasn't being updated on return for variable length
    array types
  - Should now build with an Alien::FFI that was built with ALIEN_FORCE=1

0.25      2015-02-16 20:18:41 -0500
  - Probe for proper long double support instead of trusting ffi.h
  - This disables long double support on cygwin, which does not seem to
    work, at least in so far as it seems to work on other platforms
    patches to prove otherwise are welcome.

0.24      2015-02-16 15:38:58 -0500
  - Fixed Windows / Strawberry configuration issues

0.23      2015-02-16 05:44:39 -0500
  - Support for longdouble (in C "long double") type.
  - Support for complex_float (in C "float complex") type
  - Support for complex_double (in C "double complex") type
  - Fixes for Big Endian architectures (tested on Linux PowerPC)

0.22      2015-02-12 07:47:32 -0500
  - Variable length arrays
  - More recent version of Config::AutoConf required in the configure step
    (gh#33 zmughal)
  - Documentation improvements and additional examples, including a 
    crazy Java one

0.21      2015-02-09 06:23:03 -0500
  - Added FFI::Platypus#alignof method
  - Added FFI::Platypus::Record module
  - Added fixed length strings example: string(10)
  - Added ro and rw trait for strings

0.20      2015-02-05 14:06:11 -0500
  - Added optional wrapper argument to FFI::Platypus#attach
    and FFI::Platypus::Declare#attach
  - Added FFI::Platypus#find_lib method
  - FFI::CheckLib is now a runtime requirement for Platypus
  - Bumped Alien::FFI requirement to 0.06

0.19      2015-02-03 13:34:53 -0500
  - Accept additional extensions, in addition to dlext
    Example: on OS X both .bundle and .dylib can be used
    Example: although arguably wrong, on cygwin sometimes .so is used
  - Added Module::Build::FFI->ffi_dlext class method

0.18      2015-01-30 15:22:07 -0500
  - Improved support for C++ in Module::Build::FFI
  - Module::Build::FFI can now be subclassed to support foreign 
    languages other than C and C++.  See Module::Build::FFI::Rust as an 
    example.
  - Added a hook to allow different names for native types.  See 
    FFI::Platypus::Lang::Rust for an example.
  - Added a hook to allow mangling of symbol (function) names.  See 
    FFI::Platypus::Lang::CPP for an example with C++
  - Module::Build::FFI#ffi_include_dir can now be an array reference
  - Module::Build::FFI#ffi_source_dir can now be an array reference
  - Module::Build::FFI#ffi_libtest_dir can now be an array reference
  - Module::Build::FFI will build assembly source files (with .s
    extensions) in the libtest and ffi directories

0.17      2015-01-28 11:11:02 -0500
  - Allow integer and floating point type default to 0 when not provided
    without warning
  - You can now take the sizeof a custom type (it will be the size of
    the native type that is actually passed on the C argument stack).
  - Sizeof should be faster now as it doesn't look up the other meta
    information or create a hash to contain it
  - Added record type see FFI::Platypus::Type#Records
  - Added bool as a primitive type.

0.16      2015-01-23 17:31:00 -0500
  - Bumping Alien::FFI version requirement up to 0.04
    Thus indirectly Alien::Base to 0.07
    Believe this may fix a cpan testers failure that I am seeing 

0.15      2015-01-23 16:46:27 -0500
  - add FFI::Platypus#ignore_not_found attribute
  - add FFI::Platypus#package method
  - Module::Build::FFI was moved into this distribution
    (formerly distributed as part of FFI-Util)
  - added aliases: uchar, ushort, uint and ulong

0.14      2015-01-22 08:19:42 -0500
  - Fixed some broken links in the documentation

0.12      2015-01-21 23:22:16 -0500
  - First CPAN release
  - Improved documentation
  - Functionally identically to 0.11

0.11      2015-01-21 16:33:58 -0500
  - Release candidate 2
  - arguments are available during custom return type even when
    platform does not support alloca
  - More documentation and examples
  - FFI::Platypus::API now use prototypes so you can skip the ()

0.10      2015-01-20 04:06:17 -0500
  - Release candidate 1
  - Added custom Types API (see FFI::Platypus::API)
  - Added String Pointer custom type (FFI::Platypus::Type::StringPointer)
  - Added Pointer / Size Buffer custom type (FFI::Platypus::Type::PointerSizeBuffer)

0.09      2015-01-19 03:01:48 -0500
  - Third beta
  - moved cast and sizeof from FFI::Platypus::Memory
    into FFI::Platypus methods.
  - cast and size of functions for FFI::Platypus::Declare
  - attach_cast for faster casting
  - renamed FFI::Platypus::Declare#function to
    FFI::Platypus::Declare#attach to more closely match
    the OO interface
  - adjusted custom type interface
    - renamed ffi_to_perl native_to_perl
    - renamed perl_to_ffi perl_to_native
    - type argument is now part of the hash and is called
      native_type

0.08      2015-01-16 10:55:14 -0500
  - Second beta
  - add FFI::Platypus::Buffer
    stole the buffer functions from FFI::Util
    can do this with cast, but cast is slow
  - Fixed bug where cast didn't work with closures.
  - closure data now free'd when it the closure
    goes out of scope (GH#4)

0.07      2015-01-15 18:53:45 -0500
  - First (mostly complete) beta
  - workaround some issues with closures
  - much more comprehensive documentation

0.06      2015-01-14 17:13:57 -0500
  - fix typo in last version that broke 32 bit Perls.  oops.

0.05      2015-01-14 17:04:25 -0500
  - Forth (and mostly complete) alpha
  - custom types written in Perl are supported.
  - bug fixes for 32 bit Perls (with compilers that support int64_t)

0.04      2015-01-13 11:14:54 -0500
  - Third (and incomplete) alpha
  - all basic types supported everywhere
  - closures do not support non basic types or returning strings from a closure

0.03      2015-01-09 15:40:14 -0500
  - Second (and incomplete) alpha
  - closure support added (only integer arguments implmented).
  - memory leak related to closures will be fixed in the next alpha.

0.02      2015-01-07 17:40:35 -0500
  - Early (and incomplete) alpha

0.01      2015-01-07 17:21:27 -0500
  - Original (and incompatible) prototype