refactor(flat): simplify consClose to just delegate to dropBits
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
Automatically set required flags and Strict extension in the plugin
fix(ci): prevent haddock-site OOM failures on self-hosted runner
Limit haddock parallelism to 2 jobs and use the already-defined HADDOCK_PACKAGES list instead of `all` to skip unnecessary targets. Add concurrency group to prevent overlapping builds and a 2-hour timeout as a safety net.
PIR mutual recursion inlining optimization pass
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.
allow blueprint as input and output for the uplc executable
add Plutus Benchmarks (customSmallerIsBetter) benchmark result for 6f7019bc5d7e2998871da26cbef96c3ceb560f7b
Deploying to gh-pages from @ IntersectMBO/plutus@6f7019bc5d7e2998871da26cbef96c3ceb560f7b 🚀
Deploying to gh-pages from @ IntersectMBO/plutus@6f7019bc5d7e2998871da26cbef96c3ceb560f7b 🚀
add Plutus Benchmarks (customSmallerIsBetter) benchmark result for 5387a29d20852620c446da5c8a3938d158e06d08
Deploying to gh-pages from @ IntersectMBO/plutus@5387a29d20852620c446da5c8a3938d158e06d08 🚀
fix(flat): address PR review feedback on encoding tests
Rename testNewEncodings to testEncodingStability for clarity. Fix plutus-core ^>=1.59 version bound to ^>=1.60. Remove unnecessary -Wno-* flags and unused text dependency from flat-encoding-generator. Improve executable comment with golden testing context and Wikipedia reference.
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
chore(flat): add changelog entry for consClose fix
Make optimisation configurable in uplc executable (#7682)
Regenerate marlowe .flat files
chore(flat): add changelog entry for consClose fix
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): address PR review feedback on encoding tests
Rename testNewEncodings to testEncodingStability for clarity. Fix plutus-core ^>=1.59 version bound to ^>=1.60. Remove unnecessary -Wno-* flags and unused text dependency from flat-encoding-generator. Improve executable comment with golden testing context and Wikipedia reference.
fix(flat): address PR review feedback on encoding tests
Rename testNewEncodings to testEncodingStability for clarity. Fix plutus-core ^>=1.59 version bound to ^>=1.60. Remove unnecessary -Wno-* flags and unused text dependency from flat-encoding-generator. Improve executable comment with golden testing context and Wikipedia reference.
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.