FunctionWrappers.jl: Type stable and efficient wrapper of arbitrary functions
Proof of principle implementation of JuliaLang/julia#13984.
Limitations
-
Does not handle more than 128 arguments without jlcall wrapper
128 is an arbitrary limit. Should be high enough for all practical cases
-
Does not support vararg argument types
-
Wrapper Object cannot be serialized by
dump.c
and therefore the precompilation ofFunctionWrappers
is done using a runtime branch and by making the wrapper type mutable.
@cfunction
Compared to This does not require LLVM trampoline support, which is not currently supported by LLVM
on all the architectures julia runs on (JuliaLang/julia#27174).
Other than this issue @cfunction
should cover all of the use cases.