## 0.2.1 [2022.09.24] * Add `sizeAndAlignmentOfCType` to `Foreign.LibFFI.Base`, which can be used to retrieve the size and alignment of a `CType`. ## 0.2 [2022.08.11] * The `libffi` library now uses `bracket` internally and should now be exception-safe. * There is a now a `ghc-bundled-libffi` `cabal` flag that makes this library statically link against GHC's bundled copy of `libffi` rather than attempt to link against the system `libffi`. On the vast majority of GHCs, this is the most reasonable option, as linking against the system `libffi` is inherently fragile. As a result, `+ghc-bundled-libffi` is now the defalut setting. See the [`README`](https://github.com/remiturk/libffi/blob/master/README.md#notes-on-ghcs-bundling-of-libffi) for more discussion on this point. * The definition of `Arg` has changed: ```diff -newtype Arg = Arg { unArg :: IO (Ptr CType, Ptr CValue, IO ()) } +newtype Arg = Arg { unArg :: forall a. (Ptr CType -> Ptr CValue -> IO a) -> IO a } ``` * The definition of `RetType` has changed: ```diff -data RetType a = RetType (Ptr CType) ((Ptr CValue -> IO ()) -> IO a) +newtype RetType a = RetType { unRetType :: (Ptr CType -> Ptr CValue -> IO ()) -> IO a } ``` ## 0.1 [2009.03.17] * Initial release.