Home / Input Output / plutus
Mar 16, 6-7 PM (3)
Mar 16, 7-8 PM (0)
Mar 16, 8-9 PM (1)
Mar 16, 9-10 PM (2)
Mar 16, 10-11 PM (1)
Mar 16, 11-12 AM (1)
Mar 17, 12-1 AM (0)
Mar 17, 1-2 AM (3)
Mar 17, 2-3 AM (0)
Mar 17, 3-4 AM (1)
Mar 17, 4-5 AM (1)
Mar 17, 5-6 AM (0)
Mar 17, 6-7 AM (0)
Mar 17, 7-8 AM (0)
Mar 17, 8-9 AM (2)
Mar 17, 9-10 AM (1)
Mar 17, 10-11 AM (2)
Mar 17, 11-12 PM (0)
Mar 17, 12-1 PM (1)
Mar 17, 1-2 PM (3)
Mar 17, 2-3 PM (2)
Mar 17, 3-4 PM (3)
Mar 17, 4-5 PM (1)
Mar 17, 5-6 PM (1)
Mar 17, 6-7 PM (1)
Mar 17, 7-8 PM (0)
Mar 17, 8-9 PM (1)
Mar 17, 9-10 PM (1)
Mar 17, 10-11 PM (4)
Mar 17, 11-12 AM (1)
Mar 18, 12-1 AM (0)
Mar 18, 1-2 AM (0)
Mar 18, 2-3 AM (0)
Mar 18, 3-4 AM (0)
Mar 18, 4-5 AM (0)
Mar 18, 5-6 AM (1)
Mar 18, 6-7 AM (1)
Mar 18, 7-8 AM (1)
Mar 18, 8-9 AM (0)
Mar 18, 9-10 AM (1)
Mar 18, 10-11 AM (0)
Mar 18, 11-12 PM (1)
Mar 18, 12-1 PM (3)
Mar 18, 1-2 PM (3)
Mar 18, 2-3 PM (3)
Mar 18, 3-4 PM (5)
Mar 18, 4-5 PM (3)
Mar 18, 5-6 PM (1)
Mar 18, 6-7 PM (1)
Mar 18, 7-8 PM (0)
Mar 18, 8-9 PM (0)
Mar 18, 9-10 PM (2)
Mar 18, 10-11 PM (1)
Mar 18, 11-12 AM (1)
Mar 19, 12-1 AM (0)
Mar 19, 1-2 AM (1)
Mar 19, 2-3 AM (0)
Mar 19, 3-4 AM (0)
Mar 19, 4-5 AM (1)
Mar 19, 5-6 AM (0)
Mar 19, 6-7 AM (0)
Mar 19, 7-8 AM (0)
Mar 19, 8-9 AM (0)
Mar 19, 9-10 AM (0)
Mar 19, 10-11 AM (2)
Mar 19, 11-12 PM (1)
Mar 19, 12-1 PM (2)
Mar 19, 1-2 PM (0)
Mar 19, 2-3 PM (0)
Mar 19, 3-4 PM (1)
Mar 19, 4-5 PM (0)
Mar 19, 5-6 PM (1)
Mar 19, 6-7 PM (2)
Mar 19, 7-8 PM (2)
Mar 19, 8-9 PM (1)
Mar 19, 9-10 PM (1)
Mar 19, 10-11 PM (0)
Mar 19, 11-12 AM (1)
Mar 20, 12-1 AM (0)
Mar 20, 1-2 AM (0)
Mar 20, 2-3 AM (0)
Mar 20, 3-4 AM (0)
Mar 20, 4-5 AM (0)
Mar 20, 5-6 AM (0)
Mar 20, 6-7 AM (0)
Mar 20, 7-8 AM (1)
Mar 20, 8-9 AM (1)
Mar 20, 9-10 AM (0)
Mar 20, 10-11 AM (3)
Mar 20, 11-12 PM (0)
Mar 20, 12-1 PM (0)
Mar 20, 1-2 PM (3)
Mar 20, 2-3 PM (1)
Mar 20, 3-4 PM (6)
Mar 20, 4-5 PM (3)
Mar 20, 5-6 PM (1)
Mar 20, 6-7 PM (2)
Mar 20, 7-8 PM (0)
Mar 20, 8-9 PM (1)
Mar 20, 9-10 PM (0)
Mar 20, 10-11 PM (0)
Mar 20, 11-12 AM (0)
Mar 21, 12-1 AM (0)
Mar 21, 1-2 AM (0)
Mar 21, 2-3 AM (0)
Mar 21, 3-4 AM (0)
Mar 21, 4-5 AM (0)
Mar 21, 5-6 AM (0)
Mar 21, 6-7 AM (0)
Mar 21, 7-8 AM (0)
Mar 21, 8-9 AM (0)
Mar 21, 9-10 AM (0)
Mar 21, 10-11 AM (0)
Mar 21, 11-12 PM (0)
Mar 21, 12-1 PM (0)
Mar 21, 1-2 PM (0)
Mar 21, 2-3 PM (0)
Mar 21, 3-4 PM (0)
Mar 21, 4-5 PM (0)
Mar 21, 5-6 PM (0)
Mar 21, 6-7 PM (0)
Mar 21, 7-8 PM (0)
Mar 21, 8-9 PM (0)
Mar 21, 9-10 PM (0)
Mar 21, 10-11 PM (0)
Mar 21, 11-12 AM (0)
Mar 22, 12-1 AM (0)
Mar 22, 1-2 AM (0)
Mar 22, 2-3 AM (0)
Mar 22, 3-4 AM (0)
Mar 22, 4-5 AM (0)
Mar 22, 5-6 AM (0)
Mar 22, 6-7 AM (0)
Mar 22, 7-8 AM (0)
Mar 22, 8-9 AM (0)
Mar 22, 9-10 AM (0)
Mar 22, 10-11 AM (0)
Mar 22, 11-12 PM (0)
Mar 22, 12-1 PM (0)
Mar 22, 1-2 PM (0)
Mar 22, 2-3 PM (0)
Mar 22, 3-4 PM (0)
Mar 22, 4-5 PM (0)
Mar 22, 5-6 PM (0)
Mar 22, 6-7 PM (0)
Mar 22, 7-8 PM (0)
Mar 22, 8-9 PM (0)
Mar 22, 9-10 PM (0)
Mar 22, 10-11 PM (0)
Mar 22, 11-12 AM (0)
Mar 23, 12-1 AM (0)
Mar 23, 1-2 AM (0)
Mar 23, 2-3 AM (0)
Mar 23, 3-4 AM (0)
Mar 23, 4-5 AM (0)
Mar 23, 5-6 AM (0)
Mar 23, 6-7 AM (0)
Mar 23, 7-8 AM (0)
Mar 23, 8-9 AM (0)
Mar 23, 9-10 AM (1)
Mar 23, 10-11 AM (0)
Mar 23, 11-12 PM (1)
Mar 23, 12-1 PM (1)
Mar 23, 1-2 PM (0)
Mar 23, 2-3 PM (1)
Mar 23, 3-4 PM (0)
Mar 23, 4-5 PM (0)
Mar 23, 5-6 PM (2)
Mar 23, 6-7 PM (0)
106 commits this week Mar 16, 2026 - Mar 23, 2026
fix(flat): use ensureBits in consClose for correct bounds checking
The previous divMod fix handled multi-byte advances correctly but
the bounds check (currPtr > endPtr) missed the case where
currPtr == endPtr with usedBits > 0. Rewrite consClose to use
ensureBits + dropBits_, matching the pattern dropBits already uses.

This ensures consClose itself rejects overruns rather than relying
on downstream decoders to catch the corrupted state.
Add Flat encoding test coverage across all packages
Pay down test coverage debt for Flat serialization instances.
This ensures encoding stability is verified by tests before
we attempt to fix the Generic derivation bug in a follow-up PR.

Adds roundtrip and stable byte encoding tests for:
- Flat library types (Maybe, Either, NonEmpty, Complex, Ratio,
  Set, Tree, Map, Seq, DList, Filler, PreAligned, and
  monoid/semigroup wrappers)
- TPLC types (Version, Name, Kind, DeBruijn, NamedDeBruijn,
  SrcSpan, SrcSpans, DefaultFun, DefaultUni, and all newtype
  wrappers including TyName, Unique, TyDeBruijn, etc.)
- PIR types (Recursivity, Strictness)
- UPLC types (Binder variants, FakeNamedDeBruijn, minimal
  Program encoding)
- Value types (K encodes as ByteString, Quantity as Integer)

Also adds a standalone encoding generator executable
(cabal run flat-encoding-generator) for reproducing expected
byte constants.
fix(flat): handle multi-byte advance in consClose decoder
consClose only advanced currPtr by at most 1 byte, so when
constructor_bits + usedBits >= 16 (e.g., 9-bit tag after 7 used
bits), usedBits overflowed to 8+. This corrupted the decoder state,
causing the Filler decoder to loop infinitely and consume all memory.

Use divMod to correctly advance by any number of bytes, matching the
pattern already used by dropBits_.

Fixes #7542
fix(flat): handle multi-byte advance in consClose decoder
consClose only advanced currPtr by at most 1 byte, so when
constructor_bits + usedBits >= 16 (e.g., 9-bit tag after 7 used
bits), usedBits overflowed to 8+. This corrupted the decoder state,
causing the Filler decoder to loop infinitely and consume all memory.

Use divMod to correctly advance by any number of bytes, matching the
pattern already used by dropBits_.

Fixes #7542
Add Flat encoding test coverage across all packages
Pay down test coverage debt for Flat serialization instances.
This ensures encoding stability is verified by tests before
we attempt to fix the Generic derivation bug in a follow-up PR.

Adds roundtrip and stable byte encoding tests for:
- Flat library types (Maybe, Either, NonEmpty, Complex, Ratio,
  Set, Tree, Map, Seq, DList, Filler, PreAligned, and
  monoid/semigroup wrappers)
- TPLC types (Version, Name, Kind, DeBruijn, NamedDeBruijn,
  SrcSpan, SrcSpans, DefaultFun, DefaultUni, and all newtype
  wrappers including TyName, Unique, TyDeBruijn, etc.)
- PIR types (Recursivity, Strictness)
- UPLC types (Binder variants, FakeNamedDeBruijn, minimal
  Program encoding)
- Value types (K encodes as ByteString, Quantity as Integer)

Also adds a standalone encoding generator executable
(cabal run flat-encoding-generator) for reproducing expected
byte constants.