llvm-hs-pure

Pure Haskell LLVM functionality (no FFI).

http://github.com/llvm-hs/llvm-hs/

Version on this page:4.1.0.0
LTS Haskell 18.0:9.0.0
Stackage Nightly 2021-06-19:9.0.0
Latest on Hackage:9.0.0

See all snapshots llvm-hs-pure appears in

BSD-3-Clause licensed by Anthony Cowley, Stephen Diehl, Moritz Kiefer, Benjamin S. Scarlet
Maintained by Anthony Cowley, Stephen Diehl, Moritz Kiefer
This version can be pinned in stack with:llvm-hs-pure-4.1.0.0@sha256:8ab220584b2a7cf150b34dcca884a905c4d87c6af2393f187b2de4e82e068a5f,3093

llvm-hs-pure is a set of pure Haskell types and functions for interacting with LLVM http://llvm.org/. It includes an ADT to represent LLVM IR (http://llvm.org/docs/LangRef.html). The llvm-hs package builds on this one with FFI bindings to LLVM, but llvm-hs-pure does not require LLVM to be available.

Changes

4.1.0 (2017-05-17)

  • Switch AST to ByteString/ShortByteString reflecting LLVM’s use of C-style strings.
  • preferredAlignment is now a Word32 instead of Maybe Word32. To recover the old behavior set it to the same value as abiAlignment.
  • GlobalAlias now expects the element type of a pointer type instead of the pointer type itself. The address space is passed separately via the addrSpace field. This makes GlobalAlias consistent with GlobalVariable.
  • The FloatingPointType constructor now takes a FloatingPointType argument instead of a width and a FloatingPointFormat to more closely match the LLVM IR language reference.
  • The IsString instance of Name now throws an error on non-ASCII strings instead of silently discarding the upper bytes. There is also a new mkName function with the same behavior for easier discoverability. Non-ASCII names need to be encoded using an arbitrary encoding to to a ShortByteString which can then be used as a Name.

4.0.0 (initial release, changes in comparison to llvm-general)

  • Move modules from LLVM.General* to LLVM.*
  • Support for LLVM 4.0
  • Improved support for LLVM’s exception handling instructions
  • -fshared-llvm is now supported on windows (thanks to @RyanGLScott)
  • Default to -fshared-llvm
  • Expose LLVM.Internal.* modules.