refactor(uplc-evaluator): normalize measurement structure (#7551)
Home /
Input Output /
plutus
Jan 22, 5-6 PM (1)
Jan 22, 6-7 PM (0)
Jan 22, 7-8 PM (2)
Jan 22, 8-9 PM (1)
Jan 22, 9-10 PM (0)
Jan 22, 10-11 PM (0)
Jan 22, 11-12 AM (3)
Jan 23, 12-1 AM (0)
Jan 23, 1-2 AM (0)
Jan 23, 2-3 AM (0)
Jan 23, 3-4 AM (0)
Jan 23, 4-5 AM (0)
Jan 23, 5-6 AM (0)
Jan 23, 6-7 AM (0)
Jan 23, 7-8 AM (0)
Jan 23, 8-9 AM (0)
Jan 23, 9-10 AM (3)
Jan 23, 10-11 AM (1)
Jan 23, 11-12 PM (8)
Jan 23, 12-1 PM (0)
Jan 23, 1-2 PM (8)
Jan 23, 2-3 PM (7)
Jan 23, 3-4 PM (1)
Jan 23, 4-5 PM (0)
Jan 23, 5-6 PM (0)
Jan 23, 6-7 PM (0)
Jan 23, 7-8 PM (0)
Jan 23, 8-9 PM (0)
Jan 23, 9-10 PM (0)
Jan 23, 10-11 PM (0)
Jan 23, 11-12 AM (0)
Jan 24, 12-1 AM (0)
Jan 24, 1-2 AM (0)
Jan 24, 2-3 AM (0)
Jan 24, 3-4 AM (0)
Jan 24, 4-5 AM (0)
Jan 24, 5-6 AM (0)
Jan 24, 6-7 AM (0)
Jan 24, 7-8 AM (0)
Jan 24, 8-9 AM (0)
Jan 24, 9-10 AM (0)
Jan 24, 10-11 AM (0)
Jan 24, 11-12 PM (0)
Jan 24, 12-1 PM (0)
Jan 24, 1-2 PM (0)
Jan 24, 2-3 PM (0)
Jan 24, 3-4 PM (0)
Jan 24, 4-5 PM (0)
Jan 24, 5-6 PM (0)
Jan 24, 6-7 PM (0)
Jan 24, 7-8 PM (0)
Jan 24, 8-9 PM (0)
Jan 24, 9-10 PM (0)
Jan 24, 10-11 PM (0)
Jan 24, 11-12 AM (0)
Jan 25, 12-1 AM (0)
Jan 25, 1-2 AM (0)
Jan 25, 2-3 AM (0)
Jan 25, 3-4 AM (0)
Jan 25, 4-5 AM (0)
Jan 25, 5-6 AM (0)
Jan 25, 6-7 AM (0)
Jan 25, 7-8 AM (0)
Jan 25, 8-9 AM (0)
Jan 25, 9-10 AM (0)
Jan 25, 10-11 AM (0)
Jan 25, 11-12 PM (0)
Jan 25, 12-1 PM (0)
Jan 25, 1-2 PM (0)
Jan 25, 2-3 PM (0)
Jan 25, 3-4 PM (0)
Jan 25, 4-5 PM (0)
Jan 25, 5-6 PM (0)
Jan 25, 6-7 PM (0)
Jan 25, 7-8 PM (0)
Jan 25, 8-9 PM (0)
Jan 25, 9-10 PM (0)
Jan 25, 10-11 PM (0)
Jan 25, 11-12 AM (0)
Jan 26, 12-1 AM (0)
Jan 26, 1-2 AM (0)
Jan 26, 2-3 AM (0)
Jan 26, 3-4 AM (0)
Jan 26, 4-5 AM (0)
Jan 26, 5-6 AM (0)
Jan 26, 6-7 AM (0)
Jan 26, 7-8 AM (0)
Jan 26, 8-9 AM (3)
Jan 26, 9-10 AM (1)
Jan 26, 10-11 AM (1)
Jan 26, 11-12 PM (1)
Jan 26, 12-1 PM (1)
Jan 26, 1-2 PM (1)
Jan 26, 2-3 PM (1)
Jan 26, 3-4 PM (0)
Jan 26, 4-5 PM (0)
Jan 26, 5-6 PM (0)
Jan 26, 6-7 PM (0)
Jan 26, 7-8 PM (0)
Jan 26, 8-9 PM (0)
Jan 26, 9-10 PM (0)
Jan 26, 10-11 PM (0)
Jan 26, 11-12 AM (1)
Jan 27, 12-1 AM (0)
Jan 27, 1-2 AM (2)
Jan 27, 2-3 AM (0)
Jan 27, 3-4 AM (0)
Jan 27, 4-5 AM (0)
Jan 27, 5-6 AM (0)
Jan 27, 6-7 AM (0)
Jan 27, 7-8 AM (0)
Jan 27, 8-9 AM (0)
Jan 27, 9-10 AM (0)
Jan 27, 10-11 AM (11)
Jan 27, 11-12 PM (11)
Jan 27, 12-1 PM (5)
Jan 27, 1-2 PM (1)
Jan 27, 2-3 PM (3)
Jan 27, 3-4 PM (1)
Jan 27, 4-5 PM (1)
Jan 27, 5-6 PM (0)
Jan 27, 6-7 PM (0)
Jan 27, 7-8 PM (0)
Jan 27, 8-9 PM (0)
Jan 27, 9-10 PM (0)
Jan 27, 10-11 PM (0)
Jan 27, 11-12 AM (0)
Jan 28, 12-1 AM (0)
Jan 28, 1-2 AM (0)
Jan 28, 2-3 AM (0)
Jan 28, 3-4 AM (0)
Jan 28, 4-5 AM (0)
Jan 28, 5-6 AM (0)
Jan 28, 6-7 AM (0)
Jan 28, 7-8 AM (0)
Jan 28, 8-9 AM (2)
Jan 28, 9-10 AM (2)
Jan 28, 10-11 AM (1)
Jan 28, 11-12 PM (1)
Jan 28, 12-1 PM (1)
Jan 28, 1-2 PM (0)
Jan 28, 2-3 PM (0)
Jan 28, 3-4 PM (2)
Jan 28, 4-5 PM (0)
Jan 28, 5-6 PM (0)
Jan 28, 6-7 PM (0)
Jan 28, 7-8 PM (0)
Jan 28, 8-9 PM (0)
Jan 28, 9-10 PM (0)
Jan 28, 10-11 PM (0)
Jan 28, 11-12 AM (2)
Jan 29, 12-1 AM (0)
Jan 29, 1-2 AM (0)
Jan 29, 2-3 AM (0)
Jan 29, 3-4 AM (0)
Jan 29, 4-5 AM (0)
Jan 29, 5-6 AM (0)
Jan 29, 6-7 AM (0)
Jan 29, 7-8 AM (0)
Jan 29, 8-9 AM (0)
Jan 29, 9-10 AM (1)
Jan 29, 10-11 AM (0)
Jan 29, 11-12 PM (0)
Jan 29, 12-1 PM (2)
Jan 29, 1-2 PM (0)
Jan 29, 2-3 PM (0)
Jan 29, 3-4 PM (0)
Jan 29, 4-5 PM (0)
Jan 29, 5-6 PM (0)
94 commits this week
Jan 22, 2026
-
Jan 29, 2026
Test using global shift in dischargeValue
refactor(uplc-evaluator): normalize measurement structure
Move deterministic budget values (cpu_budget, memory_budget, memory_bytes) to the top level of JSON output. Keep only variable timing data in the timing_samples array. This eliminates redundant data that was repeated identically in every measurement sample. Previous structure stored budget in each sample, wasting space and obscuring the deterministic nature of budget values. New structure clearly separates deterministic (budget) from variable (timing) data.
Disable for wasm everything that is disabled for windows
test(uplc-evaluator): add budget determinism and error handling tests
Add explicit tests verifying the deterministic nature of CEK evaluation and proper error type mapping for runtime failures. - Budget determinism: verify all samples have identical cpu/memory budget - Evaluation error: verify runtime errors produce evaluation_error type - Adjust range assertions for real (small) values vs mock ranges
feat(uplc-evaluator): implement real CEK evaluation replacing mock
Replace random mock measurements with actual UPLC evaluation using the CEK machine from plutus-core. Programs are parsed, converted to NamedDeBruijn representation, and evaluated with budget tracking. Key changes: - Parse textual UPLC via UntypedPlutusCore.Parser - Evaluate with runCekDeBruijn using tallying mode - Extract deterministic CPU/memory budgets from ExBudget - Collect 15 timing samples with criterion-measurement - Map parse errors to syntax_error, runtime errors to evaluation_error
Deploying to gh-pages from @ IntersectMBO/plutus@81fa23bb452a54efd4cd3e9b5c2d214cdfb7397f 🚀
Deploying to gh-pages from @ IntersectMBO/plutus@74a494bf902056c0ff2e49dc4930f1f87090cf4d 🚀
add Plutus Benchmarks (customSmallerIsBetter) benchmark result for 74a494bf902056c0ff2e49dc4930f1f87090cf4d
feat(nix): expose uplc-evaluator executable in nix packages (#7549)
Add uplc-evaluator to exposed-haskell-packages in nix/outputs.nix to make it available via nix build/run commands. This allows users to easily build and use the uplc-evaluator service: nix build .#uplc-evaluator nix run .#uplc-evaluator -- --help The executable provides an asynchronous file-based interface for benchmarking UPLC programs, as specified in plutus-benchmark/uplc-evaluator/SPEC.md.
feat(nix): expose uplc-evaluator executable in nix packages
Add uplc-evaluator to exposed-haskell-packages in nix/outputs.nix to make it available via nix build/run commands. This allows users to easily build and use the uplc-evaluator service: nix build .#uplc-evaluator nix run .#uplc-evaluator -- --help The executable provides an asynchronous file-based interface for benchmarking UPLC programs, as specified in plutus-benchmark/uplc-evaluator/SPEC.md.
Deploying to gh-pages from @ IntersectMBO/plutus@74a494bf902056c0ff2e49dc4930f1f87090cf4d 🚀
feat(uplc-evaluator): implement file-based benchmarking interface (#7546)
Fix uplc-evaluator-integration-tests to work in nix builds
The test harness was searching for the uplc-evaluator executable only in hardcoded dist-newstyle paths with specific GHC versions. This failed in nix builds where the executable is made available via build-tool-depends in PATH. Solution: Use System.Directory.findExecutable to locate uplc-evaluator in PATH. This works for both: - cabal builds: cabal test adds build-tools to PATH - nix builds: nix adds dependencies to PATH via build-tool-depends This eliminates the need to maintain a list of hardcoded paths for different platforms and GHC versions.
Deploying to gh-pages from @ IntersectMBO/plutus@d548debc10f30d1ca8d9df6be80b2ac489b9d593 🚀
docs(changelog): add entry for dischargeCekValue fix
Document the variable capture bug fix in the changelog.
test(cek): add comprehensive discharge tests for free variables
Add 8 test cases covering variable capture scenarios in dischargeCekValue: - Free variables under 1, 2, and 3 lambdas - Deeply indexed free variables - Multiple free variables in the same term - Nested environment structures Tests verify that free variables are correctly shifted to prevent capture when terms are discharged from the evaluation environment. Tests for #7526
fix(cek): prevent variable capture in dischargeCekValue
Add shiftTermBy function to correctly shift free variables when discharging values from the environment. Previously, free variables in discharged terms could be captured by outer lambdas, causing incorrect variable references in the output term. The fix tracks binding depth during discharge and shifts free variables (those with indices beyond the current binding depth) by the appropriate amount to maintain correct scoping. Resolves #7526
Deploying to gh-pages from @ IntersectMBO/plutus@37b8de97ac70dcaec9080ac6790ca1e876076c30 🚀
add Plutus Benchmarks (customSmallerIsBetter) benchmark result for 37b8de97ac70dcaec9080ac6790ca1e876076c30
fix(cabal): adjust test-suite configuration for uplc-evaluator
Deploying to gh-pages from @ IntersectMBO/plutus@d548debc10f30d1ca8d9df6be80b2ac489b9d593 🚀
Update lodash-es to 4.17.23 in docusaurus (#7547)
Update lodash-es to 4.17.23 in docusaurus