Libraries included with the Ivory language repository:
The 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.
The 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.
See some examples of the bitdata library in the ivory-bsp-stm32f4 package.
The 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.