Remix.run Logo
cestith 6 hours ago

I haven’t done nearly as much of this as you.

One or two calls into a library with a simple C interface isn’t that bad with Inline. You just use Inline to handle the Perl to C to Perl part, and actually do the interfacing in the inline C. It’s a lot more mess if you’re doing complex things and bringing complex data structures back to Perl, or having Perl make a lot of intermediate decisions and doing a lot of round trips. So if you use Perl to get the data ready to pass in, pass it in, do all the work in C that you need the library for, then pass the results back to Perl once it’s not terrible.

I’ve tried not to get into XS, so I couldn’t really compare.

Using Inline::C with your own C code in places where Perl is too much overhead is certainly easier than wrapping a complex existing library with a lot of interactions across the boundary.

FFI::Platypus or something like it really is the way of the future though for existing C calling convention libraries in other languages.