[GR-60209] Implement new foreign configuration file syntax. #11023
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implements a new, more user-friendly FFM API configuration file syntax.
Before this change, the configuration file syntax was based on the reverse-engineered
toString
representation of the function descriptors and memory layouts which turned out to be very tricky to use.We therefore decided to introduce a syntax that aligns with the
MemoryLayout
factory methods.The configuration file is still a JSON file. We now use a more JSON-style way to define a function descriptor:
The syntax for a single
returnType
orparameterType
is:Example:
Furthermore, for direct upcalls it is now possible to skip declaration of
returnType
andparameterTypes
if the Java signature can be represented asFunctionDescriptor
without ambiguity. This is the case if the Java signature does not contain anyMemorySegment
parameter or return type. For example:Java:
Configuration File:
This will register both overloads of
MyClass.foo
for direct upcalls.An appropriate update of the docs (i.e.
ForeignInterface.md
) will follow in a separate PR.