• Add support for ghc 9.4
  • Drop support for ghc < 8.10
  • Remove all warnings (TypeOperators, Non canonical instances, Star type, spurious imports)


  • Add support for ghc 9.2
  • Drop support for ghc < 8.8
  • Fix segfault bug introduce in 0.0.27 for ghc < 9.2 when converting word32 to word8 in some not too used code


  • Add some primitive support for ghc 9.2
  • Simplify code to use base code instead of raw primops which are completely unstable


  • add support for ghc 9.0
  • Add instance of Additive for Rational


  • Add support for ghc 8.8
  • Improve IPv4 type parser
  • Disable ghcjs as its not supported


  • Fix fail instances
  • Fix overflow in IPv4 addresses
  • Fix generic findIndex
  • Start dropping some old compat code


  • Really fix windows 32 build


  • Misc update to basement
  • Add instance for Bits for Word, From Word128 Word256, Integral for Zn
  • Fix windows 32 bits build


  • Remove couple of warnings
  • Add compatibility with ghc 8.6
  • Fix subtraction of Word128 and Word256 by using 2-complement representation instead of 1-complement


  • Reduce algorithm duplication between native and foreign backend
  • Improve Unicode cases algorithm and increase testing
  • Add CSV Builder
  • Add a BitOps & FiniteBitOps classes to have better types than the Data.Bits.Bits class
  • Improve BlockN operations
  • Improve ListN operations
  • Allow compilation with gauge 0.1
  • Add support for haskell-ci


  • Add Block, UArray, String Builder
  • Improve concat for Block andd UArray
  • Add unicode case mapping
  • Re-add compatibility with ghc 7.8


  • Add missing lowlevel Block functionality
  • Cleanup UArray to use more functions from Block
  • Push Xoroshiro down to basement
  • Add instances for foundation's numerical classes for C types
  • Update benchmarks to gauge 0.2.0
  • Add documentation to some block & uarray functions


  • Add Terminal capabilities: ANSI Escape, UTF8 codepage initialization, get dimensions
  • Checks: Output now has colors
  • Hashable: Add Word128 & Word256 & Boxed Array instances
  • Semigroup: Compatibility with GHC 8.4
  • Drop criterion for benchmark, now use Gauge
  • Remove more UnboxedTuples from Foundation for easier loading with bytecode interpreter
  • Reduce overhead of profiling common primitive operation like size and offset addition by preventing auto-caf in abstraction module
  • Optimise UTF8 validation
  • Optimise String toList (allow fusion)
  • Optimise String reversal
  • Merge different version of lowlevel array algorithms with one backed by a class.
  • Zn64/Zn : Add Num, Additive, Subtractive, NormalForm, Arbitrary instances


  • Re-organize type sized structure and add UVect and Vect
  • Cleanup constraint in ListN, and add couple of combinators
  • Add ExceptT
  • Add some exception combinators (try,finally) that works with foundation classes.
  • Tidy mutable algorithm for sorting removing redundant code
  • Add primitive to convert Double/Float to Word64/Word32
  • Cleanup withPtr / getAddr code to be safer


  • Add Bits instance for Natural compat with 7.8



  • Add bounded Natural (Zn & Zn64)
  • Add Word128 and Word256


  • Add From/Into type class


  • Add breakEnd, spanEnd, revFindIndex
  • Improve arrays sorting
  • Add arrays fromListN implementation
  • Add arrays convertion primitive


  • Cleanup API
  • Implement unsnoc


  • Improve random generation with XorShift
  • Improve ghc 8.2 support (warning removals)
  • Remove dependency on QuickCheck
  • Split lowlevel modules into basement package
  • Fix compilation with musl
  • Improve native array safety when using through pointer


  • remove foldText


Block: * Optimise fold

UArray: * Re-organise type to be more modular for later change * Remove the pinned array explicit status in favor of asking the runtime system directly on demand. * Optimise fold operations * Optimise all&any * Optimise isPrefixOf * Optimise isSuffixOf * Optimise finding byte * Add an optimise function to break on line (CRLF & LF) as part of a stream

String: * Optimise length * Optimise all&any * Optimise foldr * Remove many unboxed tuples (next, prev, ..) in favor of a strict unpack constructor * Optimise lines using array breakLine

Collection: * add stripPrefix & stripSuffix

Tests: * Improve performance

Misc: * Cleanup Offset/Size types with the C boundary * Faster Offset/Size convertions * Add Base64 support * Add LE/BE instance for NormalForm * Add UUID generation and parsing


  • Fix build windows building & time subsystem
  • Add BlockN: Typed-fixed length block of memory
  • Add Base64
  • Add 'or' and 'and'


  • Add Hlint support (configuration file), and default travis job
  • Property report error through with the ASCII, UTF16, UTF32 string decoders
  • Fix issue with OSX < Sierra
  • Improve Parser and fix backtracking issue
  • Strictify UArray to contains a strict ByteArray#
  • Improve any & all for most collection types
  • Improve minimum & maximum for most collection types
  • Add foldl1 & foldr1
  • Add takeWhile & dropWhile
  • Remove foldl
  • Add basic String builder
  • Add String replace function
  • Add conduit sourceList
  • Improve performance of String uncons, unsnoc, filter and fromBytes UTF8 (validate)
  • Improve UArray filter
  • Fix compilation issue on windows with clock_gettime which is not available though all possible compilation mode


  • Cleanup collection APIs that take a lone Int (length, take, drop, splitAt, ..) to take a CountOf
  • Rename Size to CountOf
  • Add basic time functions
  • Add os dependent timing capability
  • Add simple pattern matching for test names with checks.
  • add '--list-tests' for checks
  • Optimise Eq and Ord for blocks and uarray


  • Introduce Block & MutableBlock which represent a chunk of memory without slices and are faster/leaner in many cases.
  • Cleanup String code and some primitives boundaries
  • Fix storable alignment tests
  • Add These data type (either a, b or both)
  • Implement checks command line
  • Improve checks terminal output
  • drop support for GHC 7.4 and GHC 7.6
  • Improve performance of copy out of block and uarray


  • Add MonadReader and MonadState
  • Improve performance of numerical read parsers (integral, double)
  • Improve precision of double read parser
  • Add Textual conduit combinator (fromBytes, toBytes, lines)
  • Add DList
  • Fix building on latest Win32, RHEL 5.8
  • Add NormalForm
  • Export some functions in Internal module to manipulate unboxed mutable array


  • Improve Checks: random seed, new properties and improved printing
  • Add ability to parse Natural, Integer, and Double from String
  • Temporarily remove compilation of experimental network resolution introduced in 0.0.5 for windows building.
  • Cleanup Offset and Size fixing some bug in String module


  • Fix build on Centos 6.x / older linux distribution
  • Improve test checks generators


  • Generalize monadic map (mapM, mapM_)
  • HostName type
  • Network address / name resolution
  • Fix compilation on FreeBSD & OpenBSD
  • Initial re-implementation for property tests and tests orchestration
  • Fix bug in splitElem, and breakElem
  • Improve splitOn to return empty elements
  • Fix API bug for snoc and cons in Chunked UArray
  • Add UUID
  • Check API
  • Fix compilation on !x86


  • Add Conduit for all your streaming needs
  • Expose Sequential from Foundation
  • Export internal withPtr for optimisation
  • Export ifThenElse
  • Use the proper String type for error instead of [Char]
  • Add any and all to Collection
  • Add defaulting to Integer and Double for numerical types
  • Add negation for Double and Float (and their associated C types)
  • Add/Export system bindings (Posix file/memory handling, Linux Inotify)
  • Add Big Endian (BE) / Little Endian (LE) wrapping types
  • Add a way to transform an UArray into Hexadecimal/Base16
  • Add IPv4 and IPv6 types



  • Add MonadCatch and MonadThrow classes
  • Add Transformer base class (MonadTrans)
  • Add IdentityT, StateT, ReaderT


  • Fix build on !x86



  • Add Bifunctor
  • Implement Better storable type class (#111)
  • Expose Nthable for GHC >= 7.10 (product type getter)
  • Split basic function from Sequential to Collection
  • show return a Foundation String now instead of [Char]

Numerical: * Overhaul of numerical classes (Integral, Rational, Divisible, ..) * add IntegralRounding (i.e. rounding from floating types) * Expose IEEE manipulation stuff * Expose all trigonometry functions in Foundation.Math.Trigonometry * Export Natural (Unsigned Integer)

Collection: * Add partition * Add isPrefixOf and isSuffixOf * Add ArrayBuilder machinery * Add String parser * Add minimum and maximum to Collection. * Export Foldable and Collection in Foundation * add head,last,tail,init

Types: * Basic ArrayUArray support (Array of unboxed Array) * Add instance for Float and Double for numerical * Boxed array: add native slicing in the type * add NonEmpty type * Add some Data declaration for based type

Hashing: * Hashing: add FNV, SipHash hash functions family * Hashable: add support to hash types

Random support: * Add support for system entropy * Add pseudo random generation capability using a ChaCha core.


  • Initial version