packages feed

mfmts-1.2.0.0: CHANGELOG.md

[`mfmts`](http://hackage.haskell.org/package/mfmts) change log:
===============================================================

Major release 1.2
-----------------

## Version 1.2.0.0 (07-08-26)

This version introduces the new XCodec changes and renames modules to match the
rest of the ipfshs project. It also creates a unified module for CID constants
in `MultiFormats.CID.Constants` and cleans up the naming of each exported name.

Another addition is the introduction of the `deepseq` library and implementing
`NFData` for the various mutltiformats modules. Strict evaluation is introduced
in several areas of the project in order to increase performance.

The `MultiFormats.MultiCodec` has been regenerated against multicodec commit
[833c740](https://github.com/multiformats/multicodec/commit/833c740d685f2114cd2d05406823168e3eb28502).

The `Show` instances for `MultiCodec`, `MultiHash` and `CID` were revamped to
be easier to read and copy from a terminal window.

Major release 1.1
-----------------

## Version 1.1.0.0 (05-19-2026)

### Cabal
- Upgrade major versions for `text` and `containers` versions.
- Add `tested-with` line for GHC 9.6.7.
- Remove the `Dev` flag.

### Builds / CI
- Use `ghcup` to install the correct Haskell tooling instead of outdated
`cabal-install` package in all CI scripts.
- Combine documentation generation and packaging into a single script that
uploads everything to a candidate hackage page.
- Add script for running the `ipfshs` unit testing package for mfmts.

### `MultiFormats.CID` module changes
- The data struct `CIDData` and the newtype `CID` have been flattened into a
single `CID` data struct.
- With `CIDData` being removed, the module `MultiFormats.CID.Internal` has also
been removed and merged with the main `MultiFormats.CID` module.
- The getter functions for `CID` (`getDataCodec`, `getHashCodec`,
`getHashDigest`, and `getVersion`) have been replaced with data member
functions: `cidDataCodec`, `cidHashCodec`, `cidHashDigest`, and `cidVersion`.
- The hash digest stored with the `CID` as `cidHashDigest` has had its type
changed from `Data.ByteString` to `Data.ByteString.Builder`.
- Since the hash digest is now a `Builder`, its byte length is now stored as a
data member, `cidHashSize`, rather than from bytestring `length` on the old
`ByteString` type.
- Like the hash digest the `serializier` now outputs `CID` data as bytestring
`Builder`.
- The `extractor` method for `CID` now works on `BinaryTranscoder` data so that
it can support `ByteString`, `LazyByteString`, and `ShortByteString`
generically.
- The `parser` method has been upgraded to work with `Text` instead of `String`
inputs.
- The `Show` instance has been improved and written to show with newlines.

### `MultiFormats.CID.Internal` moves to `MultiFormats.CID.Component`
With this release, the CID internal submodule has been reorganized into
components of the CID metadata processing. So it is implemented in parts
implementing type-classes from `MultiFormats.CID.Parser`,
`MultiFormats.CID.Serializer` and `MultiFormats.CID.Extractor`.

### `MultiFormats.CID.Serializer` type-class changes
This update changes the type signature of the `serializier` method from
`a -> Okay ByteString` to `a -> Okay Builder`. The bytestring `Builder` type
supports *O(1)* concatination, so this should provide a significant performance
increase.

### `MultiFormats.CID.Extractor` type-class changes
This module also has a method type change; `extractor` previously had a
signature of `ByteString -> Okay (a, ByteString)`, and now has changed to
`(BinaryTranscoder t) => t -> Okay (a, t)` where `a` is the type being extracted
from the transcoder data.

### `MultiFormats.CID.Parser` type-class changes
The parsing method has been upgraded to work on `Text` data rather than `String`
inputs, and this should provide a performance increase in some areas. So, the
`parser` method has changed from `String -> Okay a` to `Text -> Okay a`, where
`a` is some data to be parsed from input.

### `MultiFormats.MultiCodec` module changes
- The `Show` instance has been improved.
- The moudle has been regenerated against multicodec commit
[`45c88b89ab909c0fac7c86dafe43ad72d1e8e8a9`](
https://github.com/multiformats/multicodec/commit/45c88b89ab909c0fac7c86dafe43ad72d1e8e8a9
).

### `MultiFormats.MultiHash` module changes
- Hash function performance issues were addressed; internally
`multiHashFunction` now uses the `Foreign.Marshal.Array` module to copy directly
from the pointer directly into a malloc'd buffer rather than from using `pack`
and `unpack`.
- The `Show` instance has been improved

### `MultiFormats.VarInt` module changes
- The function `extractVarInt` now has the signature
`(BinaryTranscoder t) => t -> Okay (VarInt, t)` to support the changes to the
`extractor` method in the CID module.
- The `serializeVarInt` function also changed to `VarInt -> Okay Builder` to
support the changes to the CID `serializer`.

Major release 1.0
-----------------

## Version 1.0.0.1 (04-01-2026)

This version aims to fix the issues with the hackage page and provide CI via
sourcehut builds.

- Set correct PVP bounds for cabal dependencies.
- Update `crypton` to ^>= 1.1, removing deprecated dependencies.
- Added CI/CD for builds.sr.ht:
  * Add `.builds/nudge-parents.yml` to automatically update this submodule in
  other sourcehut repositories.
  * Add `.builds/upload-candidate-docs.yml` to generate and upload documentation
  to Hackage.
  * Add `.builds/upload-candidate-package.yml` to generate and upload a package
  candidate to Hackage.

## Version 1.0.0.0 (03-12-2026)

Introducing this package to Hackage! This release introduces the basic structure
for the project and provides the following libraries:

- `mfmts-varint` for processing variable length integer inputs.
- `mfmts-multicodec` for providing a lookup method for codec values/names.
- `mfmts-multibase` for converting data to/from multibase encodings.
- `mfmts-multihash` for identifing hash functions from multicodecs.
- `mfmts-cid` for encoding/decoding multiformat content idenitifiers.