Add a section to the readme about alternative libraries
This commit is contained in:
parent
aa93014f83
commit
0f6bd7f856
1 changed files with 29 additions and 0 deletions
29
README.md
29
README.md
|
|
@ -590,6 +590,35 @@ This functionality can be extended by specifying new types as implementations of
|
||||||
the multimethod `reify-symbolspec`, although it's recommended that for any
|
the multimethod `reify-symbolspec`, although it's recommended that for any
|
||||||
library authors who do so, namespaced keywords be used to name types.
|
library authors who do so, namespaced keywords be used to name types.
|
||||||
|
|
||||||
|
## Alternatives
|
||||||
|
This library is not the only Clojure library providing access to native code. In
|
||||||
|
addition the following libraries exist:
|
||||||
|
|
||||||
|
- [dtype-next](https://github.com/cnuernber/dtype-next)
|
||||||
|
- [tech.jna](https://github.com/techascent/tech.jna)
|
||||||
|
- [clojure-jna](https://github.com/Chouser/clojure-jna)
|
||||||
|
|
||||||
|
Dtype-next has support for Java versions 8-16 and GraalVM, but is focused
|
||||||
|
strongly on array-based programming, and doesn't provide facilities for
|
||||||
|
callbacks, as well as being focused on keeping memory in the native side rather
|
||||||
|
than marshaling data to and from Clojure-native structures. In Java 16, this
|
||||||
|
uses the first iteration of Panama, while in other Java versions it uses JNA.
|
||||||
|
|
||||||
|
Tech.jna and clojure-jna both use the JNA library in all cases, and neither
|
||||||
|
provide support for dealing with struct types or callbacks.
|
||||||
|
|
||||||
|
An additional alternative to coffi is to directly use the JNI, which is the
|
||||||
|
longest-standing method of wrapping native code in the JVM, but comes with the
|
||||||
|
downside that it requires you to write both native and Java code to use, even if
|
||||||
|
you only intend to use it from Clojure.
|
||||||
|
|
||||||
|
If your application needs to be able to run in earlier versions of the JVM than
|
||||||
|
17, or you don't want to use incubator functionality, you should consider these
|
||||||
|
other options. Dtype-next provides the most robust support for native code, but
|
||||||
|
if you are wrapping a simple library then the other libraries may be more
|
||||||
|
appealing, as they have a smaller API surface area and it's easier to wrap
|
||||||
|
functions.
|
||||||
|
|
||||||
## Known Issues
|
## Known Issues
|
||||||
The project author is aware of these issues and plans to fix them in a future
|
The project author is aware of these issues and plans to fix them in a future
|
||||||
release:
|
release:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue