Skip to content

libffi 3.8.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Aug 22:12
· 2 commits to master since this release

New features

  • FFI_TYPE_VECTOR (SIMD) type support with libffi-computed layout, for aarch64 and x86-64 (#1000, closes #773).
  • ffi_call_plan_size — report the total memory a reusable call plan owns, for embedders that account for the memory held by long-lived plans.
  • powerpc64 ELFv2 _Complex long double support for both IBM-128 (double-double) and IEEE-128 formats (#1003, closes #1001).

Fixes

  • powerpc64 big-endian ELFv2 closures returning 5-, 6-, or 7-byte structs: missing return jump-table entries produced a wrong result and leaked a libffi code pointer.
  • ia64 return-value jump-table desync after the FFI_TYPE_LAST bump, which corrupted small-struct and HFA returns.
  • powerpc Darwin closure returns broken by #951 (#1002).
  • i386 FreeBSD/OpenBSD small structs now returned in registers (1, 2, 4, or 8 bytes), matching the platform ABI and fixing a segfault on struct returns through ffi_call and closures.

Performance

  • Cache the static trampoline "unsupported" verdict on hosts whose page size exceeds the trampoline table mapping, avoiding redundant re-initialization on every closure allocation (e.g. 64K-page aarch64).