Home / Input Output / plutus
Mar 25, 5-6 PM (2)
Mar 25, 6-7 PM (1)
Mar 25, 7-8 PM (0)
Mar 25, 8-9 PM (1)
Mar 25, 9-10 PM (1)
Mar 25, 10-11 PM (0)
Mar 25, 11-12 AM (0)
Mar 26, 12-1 AM (0)
Mar 26, 1-2 AM (0)
Mar 26, 2-3 AM (0)
Mar 26, 3-4 AM (0)
Mar 26, 4-5 AM (0)
Mar 26, 5-6 AM (0)
Mar 26, 6-7 AM (0)
Mar 26, 7-8 AM (0)
Mar 26, 8-9 AM (0)
Mar 26, 9-10 AM (0)
Mar 26, 10-11 AM (1)
Mar 26, 11-12 PM (7)
Mar 26, 12-1 PM (2)
Mar 26, 1-2 PM (3)
Mar 26, 2-3 PM (0)
Mar 26, 3-4 PM (0)
Mar 26, 4-5 PM (0)
Mar 26, 5-6 PM (2)
Mar 26, 6-7 PM (0)
Mar 26, 7-8 PM (0)
Mar 26, 8-9 PM (0)
Mar 26, 9-10 PM (0)
Mar 26, 10-11 PM (0)
Mar 26, 11-12 AM (0)
Mar 27, 12-1 AM (0)
Mar 27, 1-2 AM (0)
Mar 27, 2-3 AM (0)
Mar 27, 3-4 AM (0)
Mar 27, 4-5 AM (0)
Mar 27, 5-6 AM (0)
Mar 27, 6-7 AM (0)
Mar 27, 7-8 AM (0)
Mar 27, 8-9 AM (2)
Mar 27, 9-10 AM (0)
Mar 27, 10-11 AM (0)
Mar 27, 11-12 PM (0)
Mar 27, 12-1 PM (0)
Mar 27, 1-2 PM (0)
Mar 27, 2-3 PM (2)
Mar 27, 3-4 PM (2)
Mar 27, 4-5 PM (0)
Mar 27, 5-6 PM (0)
Mar 27, 6-7 PM (0)
Mar 27, 7-8 PM (1)
Mar 27, 8-9 PM (0)
Mar 27, 9-10 PM (0)
Mar 27, 10-11 PM (1)
Mar 27, 11-12 AM (0)
Mar 28, 12-1 AM (0)
Mar 28, 1-2 AM (0)
Mar 28, 2-3 AM (0)
Mar 28, 3-4 AM (0)
Mar 28, 4-5 AM (0)
Mar 28, 5-6 AM (0)
Mar 28, 6-7 AM (0)
Mar 28, 7-8 AM (0)
Mar 28, 8-9 AM (0)
Mar 28, 9-10 AM (0)
Mar 28, 10-11 AM (0)
Mar 28, 11-12 PM (0)
Mar 28, 12-1 PM (0)
Mar 28, 1-2 PM (0)
Mar 28, 2-3 PM (0)
Mar 28, 3-4 PM (0)
Mar 28, 4-5 PM (0)
Mar 28, 5-6 PM (0)
Mar 28, 6-7 PM (0)
Mar 28, 7-8 PM (0)
Mar 28, 8-9 PM (0)
Mar 28, 9-10 PM (0)
Mar 28, 10-11 PM (0)
Mar 28, 11-12 AM (0)
Mar 29, 12-1 AM (0)
Mar 29, 1-2 AM (0)
Mar 29, 2-3 AM (1)
Mar 29, 3-4 AM (0)
Mar 29, 4-5 AM (0)
Mar 29, 5-6 AM (0)
Mar 29, 6-7 AM (0)
Mar 29, 7-8 AM (0)
Mar 29, 8-9 AM (0)
Mar 29, 9-10 AM (0)
Mar 29, 10-11 AM (0)
Mar 29, 11-12 PM (0)
Mar 29, 12-1 PM (0)
Mar 29, 1-2 PM (0)
Mar 29, 2-3 PM (0)
Mar 29, 3-4 PM (0)
Mar 29, 4-5 PM (0)
Mar 29, 5-6 PM (0)
Mar 29, 6-7 PM (0)
Mar 29, 7-8 PM (0)
Mar 29, 8-9 PM (0)
Mar 29, 9-10 PM (0)
Mar 29, 10-11 PM (0)
Mar 29, 11-12 AM (0)
Mar 30, 12-1 AM (0)
Mar 30, 1-2 AM (0)
Mar 30, 2-3 AM (0)
Mar 30, 3-4 AM (0)
Mar 30, 4-5 AM (0)
Mar 30, 5-6 AM (0)
Mar 30, 6-7 AM (0)
Mar 30, 7-8 AM (0)
Mar 30, 8-9 AM (0)
Mar 30, 9-10 AM (0)
Mar 30, 10-11 AM (0)
Mar 30, 11-12 PM (0)
Mar 30, 12-1 PM (0)
Mar 30, 1-2 PM (1)
Mar 30, 2-3 PM (3)
Mar 30, 3-4 PM (7)
Mar 30, 4-5 PM (5)
Mar 30, 5-6 PM (2)
Mar 30, 6-7 PM (1)
Mar 30, 7-8 PM (0)
Mar 30, 8-9 PM (0)
Mar 30, 9-10 PM (0)
Mar 30, 10-11 PM (6)
Mar 30, 11-12 AM (1)
Mar 31, 12-1 AM (3)
Mar 31, 1-2 AM (0)
Mar 31, 2-3 AM (2)
Mar 31, 3-4 AM (0)
Mar 31, 4-5 AM (0)
Mar 31, 5-6 AM (0)
Mar 31, 6-7 AM (0)
Mar 31, 7-8 AM (2)
Mar 31, 8-9 AM (1)
Mar 31, 9-10 AM (1)
Mar 31, 10-11 AM (3)
Mar 31, 11-12 PM (0)
Mar 31, 12-1 PM (7)
Mar 31, 1-2 PM (0)
Mar 31, 2-3 PM (0)
Mar 31, 3-4 PM (0)
Mar 31, 4-5 PM (0)
Mar 31, 5-6 PM (0)
Mar 31, 6-7 PM (0)
Mar 31, 7-8 PM (0)
Mar 31, 8-9 PM (0)
Mar 31, 9-10 PM (0)
Mar 31, 10-11 PM (0)
Mar 31, 11-12 AM (1)
Apr 01, 12-1 AM (0)
Apr 01, 1-2 AM (0)
Apr 01, 2-3 AM (0)
Apr 01, 3-4 AM (0)
Apr 01, 4-5 AM (0)
Apr 01, 5-6 AM (1)
Apr 01, 6-7 AM (0)
Apr 01, 7-8 AM (0)
Apr 01, 8-9 AM (0)
Apr 01, 9-10 AM (0)
Apr 01, 10-11 AM (1)
Apr 01, 11-12 PM (2)
Apr 01, 12-1 PM (1)
Apr 01, 1-2 PM (2)
Apr 01, 2-3 PM (0)
Apr 01, 3-4 PM (0)
Apr 01, 4-5 PM (0)
Apr 01, 5-6 PM (0)
80 commits this week Mar 25, 2026 - Apr 01, 2026
fix(Compiler/Expr): handle (:)-chain list representation in compileHaskellList
compileHaskellList previously assumed GHC always uses the `build` form
for multi-element lists. However, GHC may inline `build` into an explicit
(:)-chain for types with many constructors (e.g. Marlowe's Value with 12
and Observation with 11 constructors). The old single-element pattern
`(App (App (App (Var _con) _ty) e) _)` silently discarded the tail,
returning only the first branch.

This produced a 1-branch equalsInteger chain where 11 or 12 branches
were expected, causing 53/206 Marlowe Semantics benchmark cases to hit
the fallthrough `error` at runtime.

The fix adds a recursive `consumeCons` that walks the full (:)-chain
spine, collecting all elements before the terminal `[] @ty`.

Also inlines `where` bindings in IsData/Budget/SoP.hs test and
regenerates Marlowe flat files and golden budgets.
chore(deps): bump benchmark-action/github-action-benchmark
Bumps [benchmark-action/github-action-benchmark](https://github.com/benchmark-action/github-action-benchmark) from 1.21.0 to 1.22.0.
- [Release notes](https://github.com/benchmark-action/github-action-benchmark/releases)
- [Changelog](https://github.com/benchmark-action/github-action-benchmark/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benchmark-action/github-action-benchmark/compare/v1.21.0...v1.22.0)

---
updated-dependencies:
- dependency-name: benchmark-action/github-action-benchmark
  dependency-version: 1.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
fix(Compiler/Expr): replace caseInteger list-indexing fallback with equalsInteger chain
When compiling caseInteger in non-BuiltinCasing mode (SumsOfProducts),
the fallback used PlutusTx.List.!! which built a linked list of branches
at runtime and indexed into it with a Y-combinator. This caused a 3-5x
execution cost regression for unsafeFromBuiltinData on multi-constructor
types (reported by the Hydra team, see #7691).

Replace the fallback with mkEqualsIntegerChain, which generates a flat
chain of equalsInteger/ifThenElse comparisons in PIR. This produces UPLC
equivalent to the pre-caseInteger code path with no runtime allocation.

See Note [caseInteger non-BuiltinCasing fallback] in Expr.hs.
Add Flat encoding test coverage across all packages (#7678)
* 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): 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.

* Replace flat-encoding-generator with golden tests

The encoding stability tests now use tasty-golden instead of
hardcoded inline byte sequences. This addresses review feedback
about the generator executable being redundant when --accept
can regenerate golden files directly.

- Convert testEncodingStability (flat/test) to goldenVsStringDiff
- Convert test_flatStaticEncoding (TPLC) to goldenVsStringDiff
- Remove flat-encoding-generator executable
- Add tasty-golden dependency to flat-test

* Rename golden file for consistent naming

Both golden files now use encoding-stability.golden.