MatrixAI / Haskell-Demo

Haskell Demo Project using Nix
https://matrix.ai
Apache License 2.0
5 stars 4 forks source link

Cabal foreign-library support (using Haskell to create a shared library for other languages) #12

Open CMCDragonkai opened 5 years ago

CMCDragonkai commented 5 years ago

If we ever want to use Haskell to write a shared object/library that is meant to be consumed by another language (like C or something that also has FFI). Then we can use the foreign-library feature of Cabal.

The feature is explained here: https://www.haskell.org/cabal/users-guide/developing-packages.html#foreign-libraries

And there's a tutorial about it: https://qnikst.github.io/posts/2018-05-02-cabal-foreign-library.html

However hpack currently doesn't support it yet: https://github.com/sol/hpack/issues/258

This may be useful for cases like using Haskell code within a kernel module.

minimapletinytools commented 4 years ago

I added a demo of this using foreign-library feature here: https://github.com/pdlla/haskell-ffi-cabal-foreign-library-examples

As mentioned, hpack does not support it yet, however, it still works with stack as long as you write your own .cabal file (see stack branch, which will get merged eventually).