## Changelog for binary-0.8.7.0

# binary

## binary-0.8.7.0

- MonadFail compatibility in base-4.13 (
`fail`

is not method of `Monad). `Binary NonEmpty`

`fail`

s non empty lists, not`error`

s

## binary-0.9.0.0 & binary-0.10.0.0

`0.8.5.0`

was first released as version`0.9.0.0`

. It didn't have any breaking changes though, so it was again released as version`0.8.5.0`

according to PVP.`0.8.6.0`

was first released as version`0.10.0.0`

.

## binary-0.8.6.0

- Add binary instance for Data.Functor.Identity from base, #146.
- Don't use * when we have TypeOperators, #148.

## binary-0.8.5.0

- Add Binary instances for Typeable TypeReps, #131.

## binary-0.8.4.1

- Fix compilation with bytestring < 0.10.4.

## binary-0.8.4.0

`binary`

supports GHC >= 7.4.2- Performance improvements for
`Alternative`

functions. - put/get functions for IEEE-754 floats and doubles, #119.
- Fix performance bugs, #115.
- Binary instances for datatypes in
`Data.Monoid`

and`Data.Semigroup`

, #114.

## binary-0.8.3.0

- Replace binary's home grown
`Builder`

with`Data.ByteString.Builder`

.`Data.Binary.Builder`

now exports`Data.ByteString.Builder.Builder`

. - Add
`putList :: [a] -> Put`

to the`Binary`

class. This is used to be able to use the list writing primitives of the new Builder. This brought a number of speedups; Encoding a String is now 70% faster. [Word8] is 76% faster, which also makes Integer 34% faster. Similar numbers for all [IntXX] and [WordXX]. - Fail gracefully within
`Get`

when decoding`Bool`

and`Ordering`

. Previously when decoding invalid data these instances would fail with`error`

. - Add Binary instance for
`Complex a`

. - Add Monoid and Semigroup instance for
`Put`

.

## binary-0.8.2.1

- Fix compilation error when using older GHC versions and clang. clang barfs on some of its CPP input (#105).

## binary-0.8.2.0

- When using GHC >= 8,
`Data.Binary.Get.Get`

implements MonadFail and delegates its`fail`

to`MonadFail.fail`

.

## binary-0.8.1.0

- Add binary instance for
`Data.ByteString.Short`

. - Add get/put functions for all Int sizes to
`Data.Binary.Builder`

,`Data.Binary.Get`

and`Data.Binary.Put`

.

## binary-0.8.0.1

- Address compiler warnings.

## binary-0.8.0.0

- Added binary instance for
`Version`

from`Data.Version`

. - Added binary instance for
`Void`

from GHC 7.10.1. - Added binary instance for
`(Data.Fixed a)`

from GHC 7.8.1. - Added semigroup instance for
`Data.Binary.Builder`

from GHC 8.0.

## binary-0.7.6.1

- Fix compilation for GHC == 7.2.*.

## binary-0.7.6.0

- Added binary instance for GHC.Fingerprint (from GHC >= 7.4).

## binary-0.7.5.0

- Fix performance bug that was noticable when you get a big strict ByteString and the input to the decoder consists of many small chunks.
- Fix memory leak when decoding Double and Float.
- Commit 497a181c083fa9faf7fa3aa64d1d8deb9ac76ecb

- We now require QuickCheck >= 2.8. Remove our version of arbitrarySizedNatural.

## binary-0.7.4.0

- Some invalid UTF-8 strings caused an exception when decoded. Those errors will now now fail in the Get monad instead. See #70. Patch contributed by @ttuegel.

## binary-0.7.3.0

- Add Binary instance for Natural (only with base > 4.8).

## binary-0.7.2.3

- Remove INLINEs from GBinary/GSum methods. These interact very badly with the GHC 7.9.x simplifier. See also;

## binary-0.7.2.2

- Make import of GHC.Base future-proof (https://github.com/kolmodin/binary/pull/59).

## binary-0.7.2.1

- Fix to compile on GHC 6.10.4 and older (https://github.com/kolmodin/binary/issues/55).

## binary-0.7.2.0

- Add
`isolate :: Int -> Get a -> Get a`

. - Add
`label :: String -> Get a -> Get a`

.

## binary-0.7.1.0

- Add
`lookAheadE :: Get (Either a b) -> Get (Either a b)`

. - Add MonadPlus instance for Get.

## binary-0.7.0.1

- Updates to documentation.

## binary-0.7.0.0

- Add
`lookAhead :: Get a -> Get a`

. - Add
`lookAheadM :: Get (Maybe a) -> Get (Maybe a)`

. - Add Alternative instance for Get (provides
`<|>`

). - Add
`decodeOrFail :: Binary a => L.ByteString -> Either (L.ByteString, ByteOffset, String) (L.ByteString, ByteOffset, a)`

- Add
`decodeFileOrFail :: Binary a => FilePath -> IO (Either (ByteOffset, String) a)`

. - Remove
`Ord`

class constraint from`Set`

and`Map`

Binary instances.

## binary-0.6.4

- Add
`runGetOrFail :: Get a -> L.ByteString -> Either (L.ByteString, ByteOffset, String) (L.ByteString, ByteOffset, a)`

.

## binary-0.6.3

- Documentation tweeks, internal restructuring, more tests.

## binary-0.6.2

`some`

and`many`

more efficient.- Fix bug where
`bytesRead`

returned the wrong value. - Documentation improvements.

## binary-0.6.1

- Fix bug where a decoder could return with
`Partial`

after the previous reply was`Nothing`

.