packages feed

hermes-json-0.9.0.0: CHANGELOG.md

# Revision history for hermes-json

## 0.9.0.0 -- 2026-10-14

### Breaking
* Remove `parseScientific` from `Data.Hermes.Decoder.Value`. The `scientific`
  decoder now parses numbers in C++ and no longer uses a Haskell scanner.
* `scientific` rejects numbers with a leading `+` or leading zeros, matching
  aeson and the other number decoders.
* `withInputBuffer` frees the padded copy of the input when its callback
  returns. Pointers into the input must not be used after decoding.

### Changed
* Update simdjson to 5.0.4
* Primitive decoders reuse a scratch buffer for FFI results instead of
  allocating pinned memory on every call, which makes decoding faster and
  reduces allocation.
* `scientific` is faster and reports `INCORRECT_TYPE` for non-number values and
  `NUMBER_ERROR` for malformed numbers. Exponents with more than 18 significant
  digits are now an error instead of silently overflowing.
* `withRawByteString` and `withRawJsonByteString` return copies of the input
  bytes, so the result stays valid after decoding.
* `HermesEnv` holds a lock, so sharing one across threads is safe. A decode
  that finds the env busy uses a temporary env instead of waiting. Use one env
  per thread or a pool to keep reusing envs.

### Fixed
* `scientific` no longer fails on numbers followed by whitespace, such as
  `{"a": 1.5 }`.
* Input buffers are freed as soon as decoding finishes. They were previously
  freed by a GC finalizer, so decoders that allocate little on the Haskell heap
  could grow native memory without bound.

## 0.8.2.0 -- 2026-08-30

### Changed
* Require `text-iso8601 >= 0.2` to address HSEC-2026-0007, a denial of service
  via memory exhaustion. The test suite and benchmarks now also require
  `aeson >= 2.3.0.0`, which carries the fix for the same advisory.

## 0.8.1.0 -- 2026-08-30

### Changed
* Update simdjson to 4.6.9

### Added
* Add `objectFold` for folding over object fields with a dependent state -
  thanks to @mpscholten!
* Add `withRawJsonByteString` for access to the raw JSON of the current value -
  thanks to @mpscholten!

## 0.8.0.0 -- 2026-03-25

Maintenance release

### Changed
* Update simdjson to 4.4.2 - thanks to @sheaf!
* Support GHC 9.12 and 9.14

## 0.7.0.0 -- 2025-07-16

This is mainly a maintenance release, no new features or fixes.

### Changed
* Update simdjson to 3.13.0
* Support GHC 9.10.2

## 0.6.1.0 -- 2023-08-27

### Changed
* Bump upper bounds on dependencies

### Fixed
* Fix bug in `FieldsDecoder` `Alternative` instance that was causing seg faults
  on missing keys

### Added
* Add `liftObjectDecoder`
* Add `objectAsMapExcluding`
* Add `formatException`

## 0.6.0.0 -- 2023-08-22

### Breaking Changes:
* Drop support for GHC 8.10
* Drop support for text < 2.0
* Remove `withArray` and `withObject`

### Changed
* Update simdjson to 3.2.2
* Support GHC 9.6
* Replace attoparsec-iso8601 with text-iso8601
* Replace `Scientific` parser with Text version
* Remove `attoparsec` dependency
* Remove unnecessary allocation for array and object iterators
* Remove unnecessary allocation for objects and field lookups
* Remove unnecessary strictness in iterator loops
* Update benchmarks

### Fixed
* Fix bug where internal path was not being reset on each parse

### Added
* Add `object` which replaces obsolete `withObject`
* Add `uint` for decoding unsigned 64-bit integers (Word)
* Expose `listOfInt` and `listOfDouble` for users who don't rely on rewrite rules
* Add array and object reset behavior for better `Alternative` instance

## 0.5.0.0 -- 2023-03-08

* Convert `DecoderM` callbacks to `Decoder`. This is a breaking change.
* Add useful instances for the `Decoder` monad
* Remove some redundant functions
* Adjust `vector` bounds

## 0.4.0.0 -- 2023-03-07

* Update simdjson to 3.1.3
* Add `containers`, `primitive` and `vector` dependencies
* Add example of decoding `Data.Aeson.Value` in `hermes-aeson`
* Remove debug string and document location in errors
* Fix JSON pointer formatting
* Fix incorrect path in errors from `atPointer`
* Refactor `Decoder` to prevent passing opaque `Value`s
* Add general performance improvements
* Update benchmarks

## 0.3.0.0 -- 2023-03-01

* Remove MonadIO and MonadUnliftIO instances for `Decoder`
* Remove unliftio dependency
* Support system-cxx-std-lib for GHC >= 9.4
* Fix GitHub CI badge

## 0.2.0.1 -- 2022-10-10

* Add support for GHC 9.4.1
* Bump upper bound on `time`

## 0.2.0.0 -- 2022-02-22

* Add support for `text` 2.0

## 0.1.0.1 -- 2022-01-18

* Make `-march=native` opt-in

## 0.1.0.0 -- 2021-12-24

* First version. Released on an unsuspecting world.