Go to file
Retropikzel f335b2ce4c Added most of the support for mosh, some bugs remain and couple of unimplemented procedures. Got Gerbil to load files. 2024-11-07 16:34:22 +00:00
docs Lots of fixes 2024-10-04 15:48:19 +03:00
old-tests Move to running tests with scheme_runner 2024-09-03 15:15:15 +03:00
retropikzel Added most of the support for mosh, some bugs remain and couple of unimplemented procedures. Got Gerbil to load files. 2024-11-07 16:34:22 +00:00
site Fixing file structure 2024-09-22 18:03:48 +03:00
.gitignore Fixing file structure 2024-09-22 18:03:48 +03:00
Dockerfile.jenkins Making the build work 2024-09-26 19:33:39 +03:00
Jenkinsfile Lots of fixes 2024-10-04 15:48:19 +03:00
LICENSE Fix tests, add pffi-os-name 2024-07-31 21:14:38 +03:00
Makefile Added most of the support for mosh, some bugs remain and couple of unimplemented procedures. Got Gerbil to load files. 2024-11-07 16:34:22 +00:00
README.md - Add pffi-init to each implementations file 2024-11-06 19:08:33 +00:00
composition.scm Move to running tests with scheme_runner 2024-09-03 15:15:15 +03:00
gerbil.pkg Added most of the support for mosh, some bugs remain and couple of unimplemented procedures. Got Gerbil to load files. 2024-11-07 16:34:22 +00:00
jenkins_entrypoint.sh Making the build work 2024-09-26 19:29:27 +03:00
kawa.jar Added most of Kawa support 2024-05-06 20:45:31 +03:00
mkdocs.yml Update readme, improve documentation 2024-08-25 16:39:05 +01:00
package.scm Add package.scm 2024-09-20 10:39:14 +03:00
test.scm Added most of the support for mosh, some bugs remain and couple of unimplemented procedures. Got Gerbil to load files. 2024-11-07 16:34:22 +00:00

README.md

Portable Foreign Function Interface for R7RS schemes

Foreign function interface that is supported on multiple R7RS Sceheme implementations.

Note that this software is in alpha stage. That said the interface should not be changing anymore.

Any help in form of constructive advice and bug reports are appreciated.

Documentation or run mkdocs serve or see docs/.

Issue trackers

Maling lists

For documentation see retropikzel.neocities.org/r7rs-pffi or run mkdocs serve or see or docs/ directory.

For status of what tests pass on which implementations see Jenkins.

Goals

  • Support only R7RS implementations
  • Same interface on all implementations
    • Some things that are procedures on one implementation are macros on other, but they must behave the same

Non goals

  • To have every possible FFI feature
  • Compiling of used library C code at any point
    • That is no stubs, no C code generated by the library and so on
    • The pffi library itself may require compilation on installation

Known issues that are worked on

  • Passing struct does not work on Chicken
    • For example SDL2-ttf TTF_RenderUTF8_Solid wants the color to be passed as struct.
    • Not a problem on Guile, Sagittarius or Racket
    • Cyclone status unknown, assumed same as Chicken

Status

Currently the interface of the library is in okay shape. It propably will not change much but no guarantees are being made just yet.

Usable

Work in progress

  • Cyclone
    • No callbacks implemented yet
  • Kawa
    • No callbacks implemented yet
    • Needs at least java version 22
    • Needs jvm flags:
      • --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
  • Gambit
  • Mosh
  • STKlos

Design/exploration

Will/can not be supported

  • Loko
    • Desires no C interop, I can respect that