BSD Ports

devel/libffi 3.8.0 NetBSD

Foreign function interface

System
NetBSD
Repository
pkgsrc
Maintainer
[email protected]
Last update
Commit
82345ea19a
License
mit
Categories
devel
Package size
40.2 KiB, 155.9 KiB installed

Description

The libffi library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run-time.

Some programs may not know at the time of compilation what arguments are to be passed to a function. For instance, an interpreter may be told at run-time about the number and types of arguments used to call a given function. Libffi can be used in such programs to provide a bridge from the interpreter program to compiled code.

Ffi stands for Foreign Function Interface. A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language. The libffi library really only provides the lowest, machine dependent layer of a fully featured foreign function interface. A layer must exist above libffi that handles type conversions for values passed between the two languages.

In the other systems

SystemPortVersion
NetBSDdevel/libffi3.8.0
FreeBSDdevel/libffi3.8.0
OpenBSDdevel/libffi3.8.0
DragonFlydevel/libffi3.4.6
MidnightBSDdevel/libffi3.7.1
HardenedBSDdevel/libffi3.8.0
GhostBSDdevel/libffi3.8.0
OPNsensedevel/libffi3.5.2

Install

Binary package:

pkgin install libffi

From pkgsrc:

cd /usr/pkgsrc/devel/libffi && make install clean

Packages

The version each package repository carries. “-” means the repository builds no package of it, “n/a” that there is no such repository.

RepositoryVersion
NetBSD 10.1 x86_643.8.0
NetBSD 10.1 aarch643.5.2
SmartOS / illumos x86_643.8.0
macOS 15 arm643.8.0

Dependencies

Commit history 3

DateCommitCreditsLog message
82345ea19a adam libffi: updated to 3.8.0
3.8.0 New features FFI_TYPE_VECTOR (SIMD) type support with libffi-computed layout, for aarch64 and x86-64. 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. 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. …
08af1b8c9a adam libffi: updated to 3.7.1
3.7.1 Fix aarch64 ffi_call memory corruption when passing many large structs by value. Fix i386 thiscall/fastcall closure stack cleanup for 64-bit integer and struct arguments. Fix aarch64 int128 argument split between x7 and the stack on Darwin Fix aarch64 clang-cl link failure for HFA helper functions Build a generic ffi_call_plan fallback on Windows x86-64. Add Windows ARM64 (MSVC) build and continuous integration support.
ddb4a50a4d adam libffi: updated to 3.7.0
3.7.0 adds three new public interfaces (ffi_call_plan_alloc, ffi_call_plan_invoke, ffi_call_plan_free) additively, with no existing interface removed or changed. Per the libtool rules: increment current, reset revision, increment age (11:1:3 -> 12:0:4). This keeps the change ABI backward-compatible; the soname stays libffi.so.8 (current - age = 8).