Go to file
retropikzel af1d808ea5 Updated readme 2024-05-18 16:43:17 +03:00
doc Started adding documentation 2024-05-01 11:21:28 +03:00
retropikzel/pffi/v0-1-0 Make many implementations pass all tests, clean up repo 2024-05-18 16:40:39 +03:00
scripts Moved tests to their own files 2024-05-18 15:25:02 +03:00
test Remove pointer->bytevector and bytevector->pointer stuff 2024-05-18 15:39:16 +03:00
.gitignore Moved tests to their own files 2024-05-18 15:25:02 +03:00
Makefile Make many implementations pass all tests, clean up repo 2024-05-18 16:40:39 +03:00
README.md Updated readme 2024-05-18 16:43:17 +03:00
VERSION Moved tests to their own files 2024-05-18 11:20:28 +03:00
composition.scm Added some more implementations to test 2024-05-17 11:36:40 +03:00
documentation.md Added pffi-lambda 2024-05-15 19:48:36 +03:00
guix-chicken-init.sh Added init script for chicken-install stuff for guix 2024-05-17 17:34:02 +03:00
kawa.jar Added most of Kawa support 2024-05-06 20:45:31 +03:00
manifest.scm Make many implementations pass all tests, clean up repo 2024-05-18 16:40:39 +03:00
test-all.sh Moved tests to their own files 2024-05-18 11:20:28 +03:00
test-chicken.sh Moved tests to their own files 2024-05-18 11:20:28 +03:00
test-cyclone.sh Moved tests to their own files 2024-05-18 11:20:28 +03:00
test-gambit.sh Moved tests to their own files 2024-05-18 11:30:21 +03:00
test-gerbil.sh Moved tests to their own files 2024-05-18 11:20:28 +03:00
test-guile.sh Moved tests to their own files 2024-05-18 11:20:28 +03:00
test-kawa.sh Moved tests to their own files 2024-05-18 11:20:28 +03:00
test-racket.sh Moved tests to their own files 2024-05-18 11:20:28 +03:00
test-sagittarius.sh Started moving tests to their own files 2024-05-18 10:55:55 +03:00
test-stklos.sh Moved tests to their own files 2024-05-18 11:20:28 +03:00
test.scm Started moving tests to their own files 2024-05-18 10:46:28 +03:00

README.md

Portable Foreign Function Interface for R7RS schemes

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

Support 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