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
Add IndexByteString cost model visualization page
Add interactive visualization for the IndexByteString builtin function to the cost-models site. This provides a visual baseline of the current constant-cost model (13169 picoseconds CPU) before the denotation change in #7699 that removes the redundant double bounds check. Relates to #7469
test(CallTrace): regenerate golden eval files from clean build
Previous golden files were generated from a dirty cabal cache, missing source locations for cross-module call traces. Clean nix rebuild correctly resolves the source spans.
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.
Upgrade to agda 2.8 and agda-stdlib 2.3
Remove double range check in indexByteString
Use BS.indexMaybe instead of a manual bounds check followed by BS.index (which checks again internally). This eliminates one redundant bounds check per call. Fixes #7469
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.
test(IsData/Budget): add GHC 9.12 golden files
chore: add changelog entry for caseInteger SoP fallback fix
test(IsData/Budget): regenerate golden UPLC with correct formatting
test(IsData/Budget): generate baseline golden files with caseInteger disabled
Temporarily set `if False` in unsafeFromDataClause to bypass caseInteger and generate golden files from the old equalsInteger/ifThenElse code path. These serve as the equivalence target for the Expr.hs fix.
test(IsData/Budget): add SoP mode budget test for unsafeFromBuiltinData
Adds a minimal test that compiles unsafeFromBuiltinData on a 3-constructor type in the default SumsOfProducts mode (no BuiltinCasing pragma). This captures the caseInteger fallback regression for comparison.
Deploying to gh-pages from @ IntersectMBO/plutus@0c08eee6a86ca93455440627772a2328390a4ad3 🚀
Deploying to gh-pages from @ IntersectMBO/plutus@0c08eee6a86ca93455440627772a2328390a4ad3 🚀
Deploying to gh-pages from @ IntersectMBO/plutus@0c08eee6a86ca93455440627772a2328390a4ad3 🚀
Remove broken link to archived plutus-apps repo (#7696)
The `input-output-hk/plutus-apps` repository has been archived, causing the Broken Links CI workflow to fail.
Deploying to gh-pages from @ IntersectMBO/plutus@57a912cf9191f4e7267977a9cd1c48950a632fd0 🚀
Deploying to gh-pages from @ IntersectMBO/plutus@57a912cf9191f4e7267977a9cd1c48950a632fd0 🚀
Remove broken link to archived plutus-apps repo
The `input-output-hk/plutus-apps` repository has been archived, causing the Broken Links CI workflow to fail.
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.
Deploying to gh-pages from @ IntersectMBO/plutus@45751ab34a33bcbd0ee623871948aac44ef84086 🚀
Deploying to gh-pages from @ IntersectMBO/plutus@45751ab34a33bcbd0ee623871948aac44ef84086 🚀
Deploying to gh-pages from @ IntersectMBO/plutus@45751ab34a33bcbd0ee623871948aac44ef84086 🚀