foreign-c/README.md

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

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