Make sizes of off-diagonal inputs similar to on-diagonal ones
Home /
Input Output /
plutus
May 21, 3-4 AM (0)
May 21, 4-5 AM (0)
May 21, 5-6 AM (0)
May 21, 6-7 AM (0)
May 21, 7-8 AM (1)
May 21, 8-9 AM (4)
May 21, 9-10 AM (1)
May 21, 10-11 AM (2)
May 21, 11-12 PM (0)
May 21, 12-1 PM (4)
May 21, 1-2 PM (3)
May 21, 2-3 PM (0)
May 21, 3-4 PM (1)
May 21, 4-5 PM (1)
May 21, 5-6 PM (0)
May 21, 6-7 PM (0)
May 21, 7-8 PM (0)
May 21, 8-9 PM (0)
May 21, 9-10 PM (0)
May 21, 10-11 PM (0)
May 21, 11-12 AM (0)
May 22, 12-1 AM (7)
May 22, 1-2 AM (0)
May 22, 2-3 AM (0)
May 22, 3-4 AM (0)
May 22, 4-5 AM (0)
May 22, 5-6 AM (0)
May 22, 6-7 AM (0)
May 22, 7-8 AM (0)
May 22, 8-9 AM (1)
May 22, 9-10 AM (1)
May 22, 10-11 AM (1)
May 22, 11-12 PM (2)
May 22, 12-1 PM (0)
May 22, 1-2 PM (3)
May 22, 2-3 PM (0)
May 22, 3-4 PM (0)
May 22, 4-5 PM (0)
May 22, 5-6 PM (0)
May 22, 6-7 PM (0)
May 22, 7-8 PM (0)
May 22, 8-9 PM (0)
May 22, 9-10 PM (0)
May 22, 10-11 PM (0)
May 22, 11-12 AM (0)
May 23, 12-1 AM (0)
May 23, 1-2 AM (0)
May 23, 2-3 AM (0)
May 23, 3-4 AM (0)
May 23, 4-5 AM (0)
May 23, 5-6 AM (0)
May 23, 6-7 AM (0)
May 23, 7-8 AM (0)
May 23, 8-9 AM (0)
May 23, 9-10 AM (0)
May 23, 10-11 AM (0)
May 23, 11-12 PM (0)
May 23, 12-1 PM (0)
May 23, 1-2 PM (0)
May 23, 2-3 PM (0)
May 23, 3-4 PM (0)
May 23, 4-5 PM (0)
May 23, 5-6 PM (0)
May 23, 6-7 PM (0)
May 23, 7-8 PM (0)
May 23, 8-9 PM (0)
May 23, 9-10 PM (0)
May 23, 10-11 PM (0)
May 23, 11-12 AM (0)
May 24, 12-1 AM (0)
May 24, 1-2 AM (0)
May 24, 2-3 AM (0)
May 24, 3-4 AM (0)
May 24, 4-5 AM (0)
May 24, 5-6 AM (0)
May 24, 6-7 AM (0)
May 24, 7-8 AM (0)
May 24, 8-9 AM (0)
May 24, 9-10 AM (0)
May 24, 10-11 AM (0)
May 24, 11-12 PM (0)
May 24, 12-1 PM (0)
May 24, 1-2 PM (0)
May 24, 2-3 PM (0)
May 24, 3-4 PM (0)
May 24, 4-5 PM (0)
May 24, 5-6 PM (0)
May 24, 6-7 PM (0)
May 24, 7-8 PM (0)
May 24, 8-9 PM (0)
May 24, 9-10 PM (0)
May 24, 10-11 PM (0)
May 24, 11-12 AM (0)
May 25, 12-1 AM (0)
May 25, 1-2 AM (0)
May 25, 2-3 AM (0)
May 25, 3-4 AM (0)
May 25, 4-5 AM (0)
May 25, 5-6 AM (0)
May 25, 6-7 AM (0)
May 25, 7-8 AM (0)
May 25, 8-9 AM (0)
May 25, 9-10 AM (1)
May 25, 10-11 AM (1)
May 25, 11-12 PM (2)
May 25, 12-1 PM (0)
May 25, 1-2 PM (0)
May 25, 2-3 PM (0)
May 25, 3-4 PM (0)
May 25, 4-5 PM (0)
May 25, 5-6 PM (0)
May 25, 6-7 PM (0)
May 25, 7-8 PM (0)
May 25, 8-9 PM (0)
May 25, 9-10 PM (0)
May 25, 10-11 PM (0)
May 25, 11-12 AM (0)
May 26, 12-1 AM (0)
May 26, 1-2 AM (0)
May 26, 2-3 AM (0)
May 26, 3-4 AM (0)
May 26, 4-5 AM (0)
May 26, 5-6 AM (0)
May 26, 6-7 AM (0)
May 26, 7-8 AM (1)
May 26, 8-9 AM (0)
May 26, 9-10 AM (1)
May 26, 10-11 AM (1)
May 26, 11-12 PM (2)
May 26, 12-1 PM (0)
May 26, 1-2 PM (3)
May 26, 2-3 PM (4)
May 26, 3-4 PM (0)
May 26, 4-5 PM (1)
May 26, 5-6 PM (1)
May 26, 6-7 PM (1)
May 26, 7-8 PM (1)
May 26, 8-9 PM (0)
May 26, 9-10 PM (1)
May 26, 10-11 PM (1)
May 26, 11-12 AM (1)
May 27, 12-1 AM (0)
May 27, 1-2 AM (1)
May 27, 2-3 AM (0)
May 27, 3-4 AM (0)
May 27, 4-5 AM (0)
May 27, 5-6 AM (0)
May 27, 6-7 AM (0)
May 27, 7-8 AM (0)
May 27, 8-9 AM (0)
May 27, 9-10 AM (0)
May 27, 10-11 AM (0)
May 27, 11-12 PM (1)
May 27, 12-1 PM (6)
May 27, 1-2 PM (4)
May 27, 2-3 PM (2)
May 27, 3-4 PM (0)
May 27, 4-5 PM (0)
May 27, 5-6 PM (0)
May 27, 6-7 PM (0)
May 27, 7-8 PM (0)
May 27, 8-9 PM (0)
May 27, 9-10 PM (0)
May 27, 10-11 PM (0)
May 27, 11-12 AM (1)
May 28, 12-1 AM (2)
May 28, 1-2 AM (1)
May 28, 2-3 AM (0)
May 28, 3-4 AM (0)
73 commits this week
May 21, 2026
-
May 28, 2026
Use deriving for Functor and Foldable instances of NonEmptySep
Define semantic versions of value and pure, make reduction semantics work on closed terms only (consistent with pdf spec)
Refactor builtin signatures to use sums
Add Spec.Data.Value.Budget — non-builtin valueOf evidence
Adds `Spec.Data.Value.Budget` with the lookup matrix for `valueOf` across S1 / S3 / S8 / S100 value shapes at ada / middle / last / miss positions, plus the standalone `unsafeDataAsValue` baseline per shape. Generated 96 golden files (eval / pir / uplc per bundle, 32 bundles total) capture CPU and Memory cost evidence. Companion to the merge PR for `valueOf` rewrite. This branch is kept separate so the goldens — which only regenerate on upstream plugin or cost-model changes, not on actual regressions — don't bloat the main PR's diff or CI. For IntersectMBO/plutus-private#2242.
Add valueOf golden coverage in Spec.Data.Budget
Adds a PIR-readable snapshot and four budget snapshots for the new `valueOf` implementation, registered alongside the existing golden coverage for `gt`, `geq`, and `currencySymbolValueOf`. Scenarios: - valueOf_hit_first: ada-like first-position lookup, exercises short-circuit on the first outer step. - valueOf_hit_middle: key at the middle of the outer map. - valueOf_hit_last: key at the last entry, full outer scan. - valueOf_miss: absent key, full scan with no inner walk. These tests catch regressions in `valueOf` compilation and cost that would otherwise surface only through downstream callers (`currencySymbolValueOf`, `assetClassValueOf`, `geq`, etc.).
Fuse unionWith and checkBinRel in V1.Data.Value
Drop the internal unionVal and checkPred helpers; inline the merge logic into unionWith and checkBinRel respectively. The previous chain built a Map CurrencySymbol (Map TokenName (These Integer Integer)) intermediate via unionVal, then re-walked it to apply f -- three outer passes for a single conceptual merge. The fused unionWith now runs Map.union once and a single outer Map.map, collapsing the These shape inline per currency-symbol entry. The Map TokenName (These Integer Integer) stage is gone; the outer Map.map runs once instead of twice. checkBinRel is refactored along the same shape with Map.union + Map.all, which gives geq / leq / gt / lt short-circuit termination on the first failing pair. Adds Spec.Data.Value.test_unionWith: a QuickCheck property that compiles unionWith via TH, evaluates on the CEK machine, and compares against the host-Haskell unionWith for the same inputs. Differential test against the Plinth compiler: any divergence is a compilation bug, not a semantics bug. The Spec.Data.Budget gt / geq budget goldens are regenerated: short-circuit checkBinRel reduces gt4 / geq4 by ~46% (the worst-case adverse input); other shapes drop 0.7-3% from removing one outer pass over the These intermediate. The remaining diff is the cost-model anchor; that component is unrelated to this change. Budget evidence (union matrix vs builtin, unsafeDataAsValue baseline) lives on the companion experimental branch yura/issue-2243-fused-unionwith-evidence, stacked on the sibling valueOf-evidence branch. For IntersectMBO/plutus-private#2243.
Make evaluateCekLikeInProd INLINE
Add Spec.Data.Value.Budget — non-builtin valueOf evidence
Adds `Spec.Data.Value.Budget` with the lookup matrix for `valueOf` across S1 / S3 / S8 / S100 value shapes at ada / middle / last / miss positions, plus the standalone `unsafeDataAsValue` baseline per shape. Generated 96 golden files (eval / pir / uplc per bundle, 32 bundles total) capture CPU and Memory cost evidence. Companion to the merge PR for `valueOf` rewrite. This branch is kept separate so the goldens — which only regenerate on upstream plugin or cost-model changes, not on actual regressions — don't bloat the main PR's diff or CI. For IntersectMBO/plutus-private#2242.
Optimal non-builtin valueOf in plutus-ledger-api Data.Value
Rewrites `PlutusLedgerApi.V1.Data.Value.valueOf` so the non-builtin lookup path walks the underlying `BuiltinList` directly via `unsafeDataAsMap` / `unsafeDataAsB` / `unsafeDataAsI`, compares keys with `equalsByteString`, and short-circuits on the first match. No `Maybe` is materialised: the "absent" answer is `0`, returned in-place by the `nilCase` of each traversal. Avoids `withCurrencySymbol`'s continuation + `Map.lookup`'s `Maybe`-wrapping, and bypasses the `ToData k`/`UnsafeFromData a` dictionary work that `AssocMap.lookup` does per element. Semantics preserved. Adds `Spec.Data.Value.test_valueOf`: a QuickCheck property that compiles `valueOf` via TH, evaluates it on the CEK machine, and compares the result against the host-Haskell `valueOf` for the same inputs. Differential test against the Plinth compiler — any divergence is a compilation bug, not a semantics bug. Budget evidence (lookup matrix, `unsafeDataAsValue` baseline) lives on the companion experimental branch `yura/issue-2242-valueof-evidence`, kept out of this PR to avoid carrying ~96 golden files that would only ever regenerate on upstream plugin/cost-model changes. For IntersectMBO/plutus-private#2242.
Add Spec.Data.Value.Budget — non-builtin valueOf evidence
Adds `Spec.Data.Value.Budget` with the lookup matrix for `valueOf` across S1 / S3 / S8 / S100 value shapes at ada / middle / last / miss positions, plus the standalone `unsafeDataAsValue` baseline per shape. Generated 96 golden files (eval / pir / uplc per bundle, 32 bundles total) capture CPU and Memory cost evidence. Companion to the merge PR for `valueOf` rewrite. This branch is kept separate so the goldens — which only regenerate on upstream plugin or cost-model changes, not on actual regressions — don't bloat the main PR's diff or CI. For IntersectMBO/plutus-private#2242.
Optimal non-builtin valueOf in plutus-ledger-api Data.Value
Rewrites `PlutusLedgerApi.V1.Data.Value.valueOf` so the non-builtin lookup path walks the underlying `BuiltinList` directly via `unsafeDataAsMap` / `unsafeDataAsB` / `unsafeDataAsI`, compares keys with `equalsByteString`, and short-circuits on the first match. No `Maybe` is materialised: the "absent" answer is `0`, returned in-place by the `nilCase` of each traversal. Avoids `withCurrencySymbol`'s continuation + `Map.lookup`'s `Maybe`-wrapping, and bypasses the `ToData k`/`UnsafeFromData a` dictionary work that `AssocMap.lookup` does per element. Semantics preserved. Adds `Spec.Data.Value.test_valueOf`: a QuickCheck property that compiles `valueOf` via TH, evaluates it on the CEK machine, and compares the result against the host-Haskell `valueOf` for the same inputs. Differential test against the Plinth compiler — any divergence is a compilation bug, not a semantics bug. Budget evidence (lookup matrix, `unsafeDataAsValue` baseline) lives on the companion experimental branch `yura/issue-2242-valueof-evidence`, kept out of this PR to avoid carrying ~96 golden files that would only ever regenerate on upstream plugin/cost-model changes. For IntersectMBO/plutus-private#2242.
Improved off-diagonal costing for equalsByteString
add Plutus Benchmarks (customSmallerIsBetter) benchmark result for 22a716e4e432655b1d587975db73eeb408ea34bc
Move evaluateCekLikeInProd to plutus-ledger-api
add Plutus Benchmarks (customSmallerIsBetter) benchmark result for 4a1910d4b9c97674f7289761488853ef68dce2e1
Deploying to gh-pages from @ IntersectMBO/plutus@22a716e4e432655b1d587975db73eeb408ea34bc 🚀
add Plutus Benchmarks (customSmallerIsBetter) benchmark result for 545960f9cacbd4499ea9de02e61d75b102ab5a2d
Deploying to gh-pages from @ IntersectMBO/plutus@4a1910d4b9c97674f7289761488853ef68dce2e1 🚀
Deploying to gh-pages from @ IntersectMBO/plutus@18a657e5b2274d06d286792728423c2da82831cd 🚀