Updat documentation

This commit is contained in:
retropikzel 2025-01-02 19:10:18 +02:00
parent 6a04d574bb
commit 7256027b9f
2 changed files with 2 additions and 110 deletions

View File

@ -1,4 +1,4 @@
# Portable Foreign Function Interface for R7RS schemes # Portable Foreign Function Interface for R8RS schemes
Foreign function interface that is supported on multiple R7RS Sceheme implementations. Foreign function interface that is supported on multiple R7RS Sceheme implementations.
@ -6,7 +6,7 @@ Note that this software is in **alpha** stage. That said the interface should no
Any help in form of constructive advice and bug reports are appreciated. Any help in form of constructive advice and bug reports are appreciated.
[Documentation](https://retropikzel.neocities.org/r7rs-pffi/) or run mkdocs serve or see docs/. Run mkdocs serve or see docs/.
[Issue trackers](https://sr.ht/~retropikzel/r7rs-pffi/trackers) [Issue trackers](https://sr.ht/~retropikzel/r7rs-pffi/trackers)

View File

@ -1,111 +1,3 @@
# Portable Foreign Function Interface for R7RS schemes # Portable Foreign Function Interface for R7RS schemes
Foreign function interface that is supported on multiple R7RS Sceheme implementations. 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](https://retropikzel.neocities.org/r7rs-pffi/) or run mkdocs serve or see docs/.
[Issue tracker](https://todo.sr.ht/~retropikzel/r7rs-pffi)
[Maling lists](https://sr.ht/~retropikzel/r7rs-pffi/lists)
For documentation see [retropikzel.neocities.org/r7rs-pffi](retropikzel.neocities.org/r7rs-pffi)
or run mkdocs serve or see or docs/ directory.
# Goals
- Support only R7RS implementations
- Needs to have cond-expand and library support atleast (propably much more)
- 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 support all R7RS implementations
- To have every possible FFI feature
- Compiling of C code at any point
- That is no stubs, no C code generated by the library and so on
# Support tiers
## Tier 1
- [Chicken](https://www.call-cc.org/)
- Still needs work
- [Guile](https://www.gnu.org/software/guile/)
- Good support, recommended
- [Kawa](https://www.gnu.org/software/kawa/index.html)
- 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
- Good support (otherwise), recommended
- [Sagittarius](https://bitbucket.org/ktakashi/sagittarius-scheme/wiki/Home)
- Good support, recommended
- [Racket](https://racket-lang.org/)
- Good support, recommended
- [Gambit](https://gambitscheme.org)
- Still needs work
## Tier 2
These implementations do not have callback support on their FFI. If I'm wrong please let me know!
- [STKlos](https://stklos.net/)
- Still needs work
- [Cyclone](https://justinethier.github.io/cyclone/)
- Still needs work
## Tier 3
Support waiting for the implementation.
- [LIPS](https://lips.js.org/)
- Waiting for implementation to have cond-expand and library support
- Will only work on nodejs
- [Biwascheme](https://www.biwascheme.org/)
- Waiting for implementation to have cond-expand and library support
- Will only work on nodejs
## Tier 4
Support needs to be investigated.
- [Gerbil](https://cons.io/)
- [Ypsilon](http://www.littlewingpinball.com/doc/en/ypsilon/)
- [Larceny](https://larcenists.org/)
- [Mosh](https://mosh.monaos.org)
- [Skint](https://github.com/false-schemers/skint)
## Tier 5
Support maybe possible/dreaming about.
- [Airship](https://gitlab.com/mbabich/airship-scheme)
- [Other gambit targets](https://gambitscheme.org/)
- Gambit compiles to different targets other than C too, for example Javascript. It would be cool
and interesting to see if this FFI could also support some of those
## Tier 6
Not supported currently, and may never be.
- [Chibi](https://synthcode.com/scheme/chibi)
- FFI requires C code
- [MIT-Scheme](https://www.gnu.org/software/mit-scheme/)
- FFI requires C code
- [tr7](https://gitlab.com/jobol/tr7)
- FFI requires C code
- [Gauche](https://practical-scheme.net/gauche/)
- FFI requires C code
- [s7](https://scheme.fail://ccrma.stanford.edu/software/snd/snd/s7.html)
- No library support
- Might have other things missing too
- [Loko](https://scheme.fail/)
- Desires no C interop, I can respect that