Libraries included with the Ivory language repository:
ivory-stdlib: common operators and control structures
ivory-bitdata: tools for bit-precise operations
ivory-hw: hardware IO support
ivory-stdlib package contains many useful operators and control structures which are not part of the Ivory language. It is the policy of the Ivory language designers to only export primitives to the user. Useful functions which are implemented in terms of Ivory primitives are found in the standard library.
ivory-bitdata package is an interface for implementing safe bit-precise operations on top of the Ivory core language. This library provides a quasiquoter for specifying the layout of bits in registers and a typed interface for modifying register contents.
ivory-hw package is the basis for hardware IO in Ivory.
ivory-hw uses external C definitions unsafe primitives writing to arbitrary memory locations. Safety is provided by checks that memory access is in bounds at code generation time. Memory bounds are defined statically in
Ivory.HW.STM32F4 according to the STM32F4 microcontroller memory map.
We are investigating solutions to a generalized safe
ivory-hw library, parameterized by memory map rather than statically bound to a particular architecture.