2.3 KiB
2.3 KiB
Portable Foreign Function Interface for R7RS schemes
For documentation see Wiki
For bugs you can use the Bugs
All tests pass
- Sagittarius
- Guile
- Kawa
- Needs atleast java 21
- Needs jvm flags
- java --add-exports java.base/jdk.internal.foreign.abi=ALL-UNNAMED --add-exports java.base/jdk.internal.foreign.layout=ALL-UNNAMED --add-exports java.base/jdk.internal.foreign=ALL-UNNAMED --enable-native-access=ALL-UNNAMED --enable-preview -jar kawa.jar FILENAME.scm
- Racket
- Chicken
Not all tests pass
Waiting for the implementation
- LIPS
- Waiting for implementation to have cond-expand and library support
- Will only work on nodejs
Not supported
- Chibi
- FFI requires C code
- MIT-Scheme
- FF requires C code
- tr7
- FFI requires C code
- Gauche
- FFI requires C code
Hacking
main.sld is the real main which is copied to main.scm
Documentation
On some implementations these are procedures, on some macros.
pffi-shared-object-auto-load
Arguments:
- object-name (symbol)
- The name of the dynamic library file you want to load without the "lib" in fron of it or .so/.dll at the end
- addition-paths (list (string)...)
- Any additional paths you want to search for the library
Returns:
- (object) Shared object, the type depends on the implementation
pffi-shared-object-load
It is recommended to use the pffi-shared-object-auto-load instead of this directly.
Arguments:
- headers (list (string) ...) Headers that need to be included
- Example (list "curl/curl.h")
- path (string) The full path to the shared object you want to load, including any "lib" infront and .so/.dll at the end
- Example "libcurl.so"
Returns:
- (object) Shared object, the type depends on the implementation