Tags: prodogs/ffi
Tags
1.16.0 / 2023-09-23 ------------------- Fixed: * Fix an issue with signed bitmasks when using flags on the most significant bit. ffi#949 * Fix FFI::Pointer#initialize using NUM2LL instead of NUM2ULL. * Fix FFI::Type#inspect to properly display the constant name. ffi#1002 * Use libffi closure allocations on hppa-Linux. ffi#1017 Previously they would segfault. * Fix class name of Symbol#inspect. * Fix MSVC support of libtest. ffi#1028 * Fix attach_function of functions ending in ? or ! ffi#971 Added: * Convert all C-based classes to TypedData and use write barriers. ffi#994, ffi#995, ffi#996, ffi#997, ffi#998, ffi#999, ffi#1000, ffi#1001, ffi#1003, ffi#1004, ffi#1005, ffi#1006, ffi#1007, ffi#1008, ffi#1009, ffi#1010, ffi#1011, ffi#1012 This results in less pressure on the garbage collector, since the objects can be promoted to the old generation, which means they only get marked on major GC. * Implement `ObjectSpace.memsize_of()` of all C-based classes. * Make FFI Ractor compatible. ffi#1023 Modules extended per `extend FFI::Library` need to be frozen in order to be used by non-main Ractors. This can be done by calling `freeze` below of all C interface definitions. * In a Ractor it's possible to: * load DLLs and call its functions, access its global variables * use builtin typedefs * use and modify ractor local typedefs * define callbacks * receive async callbacks from non-ruby threads * use frozen FFI::Library based modules with all attributes (enums, structs, typedefs, functions, callbacks) * invoke frozen functions and callbacks defined in the main Ractor * use FFI::Struct definitions from the main Ractor * In a Ractor it's impossible to: * create new FFI::Library based modules * create new FFI::Struct definitions * use custom global typedefs * use non-frozen FFI::Library based modules * Allow type retrieval of attached functions+variables. ffi#1023 * Make FFI classes `GC.compact` friendly. ffi#1021 * Update libffi and disable custom trampoline when using libffi closure allocation. ffi#1020 This is because libffi changed the way how closures are allocated to static trampolines. * Add types.conf for loongarch64-linux. ffi#943 * Add types.conf for sw_64-linux (Shen Wei 64-bit, based on Alpha). ffi#1018 * Add support for aarch64-windows. ffi#1035 * Windows: Update LoadLibrary error message to include error code. ffi#1026 * Allow private release method for FFI::ManagedStruct and FFI::AutoPointer. ffi#1029 * Add support for passing ABI version to FFI.map_library_name. ffi#963 This adds the new class FFI::LibraryPath . * Add support for ruby-3.2 to windows binary gem. ffi#1047 * Enable debug symbols for `rake compile` builds to ease debugging. ffi#1048 Removed: * Remove allocator of AbstractMemory. ffi#1013 This disables AbstractMemory.new, which has no practical use. * Remove unused FFI::SizeTypes. ffi#1022
1.15.5 / 2022-01-10 ------------------- Fixed: * Fix long double argument or return values on 32bit i686. ffi#849 * FFI::ConstGenerator: avoid usage of the same binary file simultaneously. ffi#929 Added: * Add Windows fat binary gem for Ruby-3.1 Removed: * Remove Windows fat binary gem for Ruby < 2.4
1.15.0 / 2021-03-05 ------------------- Fixed: * Fix MSVC build * Fix async callbacks in conjunction with fork(). ffi#884 Added: * Allow to pass callbacks in varargs. ffi#885 * Name the threads for FFI callback dispatcher and async thread calls for easier debugging. ffi#883 The name can be retrieved by Thread.name and is shown by Thread.list.inspect etc. Even gdb shows the thread name on supported operating systems. * Add types.conf for powerpc64le-linux * Add types.conf for riscv64-linux * More release automation of ffi gems Changed: * Switch from rubygems-tasks to bundler/gem_helper Removed: * Remove unused VariadicInvoker#init
PreviousNext