Changelog of @hackage/mfmts 1.1.0.0

mfmts change log:

Major release 1.1

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

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.