diku-dk / futhark

:boom::computer::boom: A data-parallel functional programming language
http://futhark-lang.org
ISC License
2.4k stars 167 forks source link

Provide packed API functions #2158

Open athas opened 4 months ago

athas commented 4 months ago

Some of the functions exposed by the C API have a variable number of parameters, depending on the underlying Futhark program:

This is inconvenient for some users, particularly those making use of run-time linking (dlopen()), as it is difficult to invoke a function with a dynamically known number of arguments. It is also slightly inconvenient for other FFIs in some cases.

As a solution, we could expose "packed" variants of these functions (does a better name exist?) where each sequence of variable-length parameters is replaced with a single array that contains pointers to those values.

athas commented 3 months ago

In order to not complicate the code generator for this relatively niche use case, the best way to implement this would be to have a separate facility (which can be part of futhark) for generating packed wrapper code from a manifest file.