#closures #ffi #libffi #c

sys deno-libffi-sys

Raw Rust bindings for libffi

7 releases

0.0.7 Aug 9, 2021
0.0.6 Aug 9, 2021
0.0.3 Jul 18, 2021

#11 in #closure

Download history 2/week @ 2024-01-01 10/week @ 2024-01-08 4/week @ 2024-02-12 35/week @ 2024-02-19 49/week @ 2024-02-26 18/week @ 2024-03-04 19/week @ 2024-03-11 16/week @ 2024-03-18 21/week @ 2024-03-25

87 downloads per month
Used in 2 crates (via deno-libffi)

MIT/Apache

2.5MB
66K SLoC

C 33K SLoC // 0.2% comments GNU Style Assembly 14K SLoC // 0.2% comments M4 9K SLoC // 0.2% comments Shell 8K SLoC // 0.2% comments Rust 798 SLoC // 0.0% comments Bitbake 436 SLoC // 0.1% comments Automake 248 SLoC // 0.1% comments Python 200 SLoC Perl 171 SLoC // 0.4% comments C++ 128 SLoC // 0.1% comments Visual Studio Project 126 SLoC // 0.0% comments Visual Studio Solution 33 SLoC

Contains (autotools obfuscated code, 715KB) libffi/configure, (obscure autoconf code, 13KB) libffi/configure.ac

libffi-sys-rs: Low-level Rust bindings for libffi

GitHub Workflow Status Crates.io License: MIT License: Apache 2.0

The C libffi library provides two main facilities: assembling calls to functions dynamically, and creating closures that can be called as ordinary C functions. This is an undocumented wrapper, generated by bindgen, intended as the basis for higher-level bindings, but you can see the libffi documentation.

See the libffi crate for a higher-level API.

Usage

libffi-sys can either build its own copy of the libffi C library from github or it can link against your system’s C libffi. By default it builds its own because many systems ship with an old C libffi; this requires that you have a working make, C compiler, automake, and autoconf first. If your system libffi is new enough (v3.2.1 as of October 2019), you can instead enable the system feature flag to use that. If you want this crate to build a C libffi for you, add

[dependencies]
libffi-sys = "1.1.1"

to your Cargo.toml. If you want to use your system C libffi, then

[dependencies.libffi-sys]
version = "1.1.1"
features = ["system"]

to your Cargo.toml instead.

This crate supports Rust version 1.32 and later.

Dependencies