Improve API between (py)cardium and epicardium (datastructure)
Currently, the same memory location is used for calling and returning. This requires the caller to use the API synchronously.
Ideally we would have an asynchronous API.
First high-level decisions about the design of the API need to be made:
- Will the API support out-of-order execution of calls? This requires a more flexible data structure for passing calls and returns.
- Do we impose a limit on the size of arguments? (This would make the overall design of the API much easier. If we try to provide arbitrary-size arguments, we need to either implement something like a heap, have variable sized elements in our datastructure (which requires more computing time during calling/returning) or pass pointers to other address spaces which cannot be guaranteed to live long enough.)