Revision history for FFI-Platypus 0.80 2019-02-01 15:36:50 -0500 - Fix incompatability with parallel bsd make 0.79 2019-01-31 20:58:07 -0500 - Fix probe runner builder bug (gh#112, gh#113) 0.78 2019-01-30 10:28:22 -0500 - Production release identical to 0.77_03 0.77_03 2019-01-29 21:44:29 -0500 - Remove Java gcj examples. The gcj compiler has been deprecated, unmaintained, and removed from the gcc collection for quite a while now. - Fix problem diagnostic window on Windows during probe 0.77_02 2019-01-29 11:30:56 -0500 - Fix regressions in 0.77_01 0.77_01 2019-01-28 15:47:07 -0500 - Honor compiler and linker flag overrides provided on the command-line for FFI::Probe::Runner::Builder, make ffi and make ffi-test (gh#104) 0.76_01 2019-01-20 20:14:45 -0500 - function method can now take a wrapper code reference as its last argument in the same way as attach. 0.75_01 2019-01-19 04:45:19 -0500 - Add strndup to FFI::Platypus::Memory 0.74 2019-01-19 04:42:22 -0500 - Production release identical to 0.73_01 0.73_01 2019-01-13 18:31:33 -0500 - Remove dependency on Win32::ErrorMode on Windows 0.72_01 2019-01-11 22:17:11 -0500 - Remove dependency on Config::AutoConf 0.71_01 2019-01-10 23:29:06 -0500 - Merge FFI-Build into this distribution - Add FFI::Probe 0.70_01 2019-01-10 15:34:57 -0500 - prereq fix: IPC::Cmd as a configure requires since it doesn't come with Perl 5.8.x 0.69_01 2019-01-09 15:59:43 -0500 - require Alien::FFI in fallback mode 0.68_01 2019-01-05 21:12:47 -0500 - Improve platform probing of complex type - Allow override of platform probing using FFI_PLATYPUS_PROBE_OVERRIDE 0.67_01 2019-01-05 09:16:22 -0500 - Better support for complex types: pointers to complex types and complex type and pointers to complex as return value 0.66_01 2019-01-04 20:16:59 -0500 - EXPERIMENTAL ExtUtils::MakeMaker fixes for dynamic prereqs on windows - restore FFI_PLATYPUS_DEBUG_FAKE32 - restore FFI_PLATYPUS_NO_ALLOCA 0.65_01 2019-01-04 13:38:58 -0500 - EXPERIMENTAL ExtUtils::MakeMaker fixes for parallel and freebsd build 0.64_01 2019-01-03 03:16:57 -0500 - EXPERIMENTAL ExtUtils::MakeMaker fixes for MSWin32 / cygwin 0.63_01 2019-01-02 11:23:48 -0500 - EXPERIMENTAL ExtUtils::MakeMaker release 0.62_01 2019-01-01 04:23:23 -0500 - New type: array of string "string [x]" and "string []" are supported - NULL terminated arrays are supported as return types for string and opaque arrays "opaque []" and "string []" 0.61_01 2018-12-31 19:56:20 -0500 - New type: pointers to string "string *" are supported. - FFI::Platypus::Type::StringPointer is now deprecated. 0.60_01 2018-12-30 14:55:15 -0500 - sticky/unstick functions can safely be called multiple times - Removed some extra lookups from closure calls, should be faster now. 0.59 2018-12-16 16:33:37 -0700 - Workaround for possibly buggy pack/unpack on Perl 5.8.8 gh#91 Fixes FFI::Platypus::Type::StringArray 0.58 2018-11-20 14:31:10 -0500 - Add unstick method to FFI::Platypus::Closure 0.57_01 2018-11-04 15:36:33 -0500 - Major refactor of the internals of the type system. The API is the same but some type meta-data (which was never guaranteed to stay the same) may have changed. * The internal representation of types is much smaller (4 bytes for simple types), which can save a lot of memory if you have lots of types. * Fixed width strings example: `string(32)` are now internally treated the same as a record with no class `record(32)`. Previously these were separate types but worked identically, this removes duplicate code. * Fixed width string arguments to a closure are now read-only, Usually you should be copying these arguments anyway. * Removed the internal type "exotic float" which includes `long double`, `complex float` and `complex double`. These are now grouped internally with other scalar types. - Merge FFI::Platypus::Type::StringArray into this distribution 0.56 2018-09-03 09:17:42 -0400 - lib method accepts code reference which will be called immediately and results added to lib list 0.55 2018-08-29 10:37:36 -0400 - Production release identical to 0.54_03 0.54_03 2018-08-28 10:46:04 -0400 - Additional test diagnostics. 0.54_02 2018-08-28 05:30:04 -0400 - record as closure argument is now read-only. This makes sense since such records are actually copies. For when you need a non-copy use an opaque type instead. This allows records with rw strings (although they will be ro in the closure). 0.54_01 2018-08-16 03:27:31 -0400 - Experimental: allow record as closure argument Records with string_rw are not supported, and will likely crash your script if you try to use them. Support for such records is probably not in the cards, but a future version may disallow them to avoid crashes. - Closure objects now have a sticky method, similar to what is already available in the discouraged FFI::Platypus::Declare interface 0.53 2018-08-15 20:38:29 -0400 - Production release identical to 0.52_04 0.52_04 2018-08-15 05:52:15 -0400 - Work-around for Strawberry Perl 5.14.4 unicode bug (see gh#85) 0.52_03 2018-08-14 15:28:19 -0400 - Major refactoring of test suite 0.52_02 2018-08-14 08:05:07 -0400 - Added standard RTLD_ constants to FFI::Platypus::DL - Fixed long standing but till now unused bug on Windows where dlopen was returning a handle for libraries that weren't actually being loaded. 0.52_01 2018-08-13 20:39:32 -0400 - Testing: moved libtest to t/ffi, using the same convention as FFI::Build - Added FFI::Platypus::DL. Previously this had been (under a different name) a private interface to libdl used by FFI::Platypus under the covers. On Windows it is an emulation layer over the native equivalents. 0.51 2018-08-09 03:14:15 -0400 - update the package method to work with FFI-Build 0.50 2018-06-01 07:58:33 -0400 - Additional diagnostics 0.49_05 2018-05-29 12:44:45 -0400 - Require Alien::FFI 0.20 for bugfixes 0.49_04 2018-05-27 07:36:58 -0400 - Additional diagnostics - Added a FAQ section. Some other minor documentation enhancements. 0.49_03 2018-05-19 10:09:15 -0400 - The previous version contained build files that would break the install unless you were building on my machine. This is what the previous version should have been. 0.49_02 2018-05-18 22:08:43 -0400 - Fix version mismatch error with XS 0.49_01 2018-05-18 16:16:13 -0400 - Move the source repository for this project into the GitHub org Perl5-FFI The new URL is https://github.org/Perl5-FFI/FFI-Platypus - Remove dependency on JSON::PP, use Data::Dumper for build configuration. This may improve startup performance. 0.48 2018-02-20 09:37:32 -0500 - setting lib => undef is now the same as setting it to [undef] in the constructor (previously lib => undef was ignored) 0.47 2017-03-23 18:26:01 -0400 - Fix installer bug where My::ShareConfig was accidentally declared as a prereq 0.46 2017-03-23 15:47:29 -0400 - Remove some internal use of Module::Build with the intent of one day migrating to EUMM or some other installer - Remove Module::Build::FFI. It now has its own distribution. - Prefix the lang attribute with an equal '=' sign to indicate a fully qualified class name instead of one under FFI::Platypus::Lang 0.45 2016-10-24 07:59:57 -0400 - Remove check for Threaded Perl / OpenBSD, as the issue there has been reported fixed 0.44 2016-10-20 14:31:23 -0400 - You can now control which implementation of strdup FFI::Platypus::Memory uses via the FFI_PLATYPUS_MEMORY_STRDUP_IMPL environment variable. 0.43 2016-07-08 03:28:57 -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 0.41 2016-04-09 16:03:07 -0400 - For the return value undef can be passed in to mean 'void'. - Fixed installer bug where ABI probe would silently fail if /tmp was mounted noexec - Avoid unnecessary downgrade on when Perl is compiled to use longdouble 0.40 2015-08-29 08:45:19 -0400 - Closure declerations ignore white space between () and -> 0.39 2015-08-24 03:23:10 -0400 - Fixed spurious warning: auto loading of record class (via FFI::Platypus::Record) was ALWAYS warning, when it should have only been warning on load failure. 0.38 2015-08-13 17:13:07 -0400 - closure method now comes with a more useful diagnostic thinks to Carp::croak - Added a check for standard C headers. This seems to help the configure stage find ptrdiff_t, which was frequently not detected correctly (at least on Linux). - Improved thread safety by using MY_CXT for some very infrequently used global variables. - Added IRC meta data information for metacpan.org. Please join us at #native on irc.perl.org! - Many minor documentation corrections and tweaks. Most significant is that Convert::Binary::C can now be recommended as it is once again properly maintained. - Added tests for threads and forks. If these tests fail in your environment please let me know! 0.37 2015-05-29 14:28:21 -0400 - Added compatability back in for older version of constant (newer one is not available on CPAN yet) 0.36 2015-05-29 13:40:32 -0400 - Explicitly require constant pragma version 1.32 0.35 2015-05-29 12:06:39 -0400 - FFI::Platypus::Record uses constant to create size of alignment constants instead of creating them with a sub reference (this usage was deprecated in Perl 5.22) 0.34 2015-05-07 09:27:04 -0400 - Require Alien::FFI which is more reliable at configure time on some platforms 0.33 2015-03-23 21:55:02 -0400 - Additional fix for Microsoft Visual C++ that didn't get folded into the previous release. - Fixed segfault during global destruction (gh#53) 0.32 2015-03-18 13:02:53 -0400 - Make sure -L flags from Alien::FFI come before those in perl Config For more reliable builds - Support for Microsoft Visual C++ (you will probably also need Alien::FFI 0.09 or beter) 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