Home /
Input Output /
plutus
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 (1)
Mar 23, 4-5 PM (0)
Mar 23, 5-6 PM (2)
Mar 23, 6-7 PM (0)
Mar 23, 7-8 PM (0)
Mar 23, 8-9 PM (0)
Mar 23, 9-10 PM (2)
Mar 23, 10-11 PM (0)
Mar 23, 11-12 AM (1)
Mar 24, 12-1 AM (1)
Mar 24, 1-2 AM (0)
Mar 24, 2-3 AM (2)
Mar 24, 3-4 AM (1)
Mar 24, 4-5 AM (1)
Mar 24, 5-6 AM (1)
Mar 24, 6-7 AM (0)
Mar 24, 7-8 AM (0)
Mar 24, 8-9 AM (0)
Mar 24, 9-10 AM (0)
Mar 24, 10-11 AM (2)
Mar 24, 11-12 PM (1)
Mar 24, 12-1 PM (0)
Mar 24, 1-2 PM (1)
Mar 24, 2-3 PM (0)
Mar 24, 3-4 PM (2)
Mar 24, 4-5 PM (0)
Mar 24, 5-6 PM (2)
Mar 24, 6-7 PM (2)
Mar 24, 7-8 PM (1)
Mar 24, 8-9 PM (0)
Mar 24, 9-10 PM (2)
Mar 24, 10-11 PM (1)
Mar 24, 11-12 AM (1)
Mar 25, 12-1 AM (0)
Mar 25, 1-2 AM (1)
Mar 25, 2-3 AM (0)
Mar 25, 3-4 AM (0)
Mar 25, 4-5 AM (0)
Mar 25, 5-6 AM (0)
Mar 25, 6-7 AM (0)
Mar 25, 7-8 AM (0)
Mar 25, 8-9 AM (0)
Mar 25, 9-10 AM (2)
Mar 25, 10-11 AM (0)
Mar 25, 11-12 PM (0)
Mar 25, 12-1 PM (0)
Mar 25, 1-2 PM (1)
Mar 25, 2-3 PM (0)
Mar 25, 3-4 PM (0)
Mar 25, 4-5 PM (2)
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)
65 commits this week
Mar 21, 2026
-
Mar 28, 2026
chore: add changelog entry for caseInteger SoP fallback fix
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.
chore: add changelog entry for caseInteger SoP fallback fix
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.
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.
chore: add changelog entry for caseInteger SoP fallback fix
chore: add changelog entry for caseInteger SoP fallback fix
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.
chore: add changelog entry for caseInteger SoP fallback fix
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 case-of-constant reduction to CaseReduce
Add normalising decision procedure for case-of-case
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): 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.
test(IsData/Budget): regenerate golden UPLC with correct formatting
test(IsData/Budget): add GHC 9.12 golden files
Add generalized views with convenient syntax and Inhabitant class
Add normalising decision procedure for case-reduce
test(IsData/Budget): regenerate golden UPLC with correct formatting
Add normalising decision procedure for case-reduce
Certifier can now report execution costs before/after each pass