3 ms·
What's the FFI overhead like? And can you pass SML function pointers into C code as callbacks?
by hawk_ 4y ago
What's the FFI overhead like? And can you pass SML function pointers into C code as callbacks?
- cannam 4y ago> What's the FFI overhead like? I don't have measurements to hand, but vaguely speaking, low. Low enough to be worth using for even quite modest calls into vector functions or optimised libraries. > And can you pass SML function pointers into C code as callbacks? Yes. At least, you can declare a function statically for export as a callback. You can't pass arbitrary function values. You can call C/C++ from SML, and call SML from C/C++ from SML - though some neat potential uses are ruled out as MLton (unlike Poly/ML) doesn't support native threads and you can't call back from a different thread from the caller. You can also compile to a library using MLton and use that from a C/C++ program - again only from a single thread, but it doesn't have to be the program's main thread.