# Change log for the `llvm-extra` package ## 0.11 * `Memory`: turn methods `load` and `store` into top-level functions based on `decompose` and `compose`. Deriving `decompose` and `compose` from `load` and `store`, respectively, requires `alloca` which will blast your stack when used in a loop. ## 0.10 * `Storable`: We do not support storing tuple types directly anymore. This would require the `storable-tuple` package. That package ships orphan `Storable` instances with a memory layout that does not match your system's ABI. Instead, we support the `Tuple` wrapper from `storable-record`. * `Memory`: Attention! Memory layout is no longer compatible with `Foreign.Storable`. E.g. `Bool` now takes 1 byte space like LLVM does, but no longer 4 byte like `Foreign.Storable`. A `Foreign.Storable`-compliant layout is provided by `LLVM.Extra.Storable` now. * `Marshal`: Now based on `Memory.load` and `Memory.store`. Does not need `Proxy` anymore. * `Class` -> `Tuple`, `Tuple.Vector` class added. Pro: `valueOf vector` is no longer restricted to `IsPrimitive` elements. Cons: type inference works less well than before ## 0.9 * `Extension`: Move to new package `llvm-extension`. We now implement advanced instructions using generic LLVM intrinsics. ## 0.8.1 * `FastMath`: support for simplified arithmetic primitives under the assumption of the absence of corner cases.