Commit Graph

1198 Commits

Author SHA1 Message Date
Pi Lanningham 17a75d2481 Return an EvalResult alongside the redeemer
This refactors things so that eval_phase_two can expose logs even when the script succeeds.

It also enriches traces to be either Logs or Labels, so that we can tell the difference between the two when inspecting the traces.
2025-02-17 19:58:26 -05:00
KtorZ 3bce2e2d78
chore: Release
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-11 14:26:12 +01:00
KtorZ 58d782fa78
Scope type-aliases per module in blueprint.
Similarly to how we're already doing it for non-alias types.

  Fix #1074.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-11 12:55:45 +01:00
KtorZ d53f770d90
minor tweaks and proof-reading.
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:53:58 +01:00
KtorZ 8edd8d37db
fix benchmark output when either the sampler or bench fails
This is likely even better than what was done for property testing. We
  shall revise that one perhaps one day.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:23:01 +01:00
KtorZ b4aa877d6a
rework benchmarks output
Going for a terminal plot, for now, as this was the original idea and it is immediately visual. All benchmark points can also be obtained as JSON when redirecting the output, like for tests. So all-in-all, we provide a flexible output which should be useful. Whether it is the best we can do, time (and people/users) will tell.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:22:58 +01:00
KtorZ 41440f131b
rework sizing of benchmarks, taking measures at different points
The idea is to get a good sample of measures from running benchmarks
  with various sizes, so one can get an idea of how well a function
  performs at various sizes.

  Given that size can be made arbitrarily large, and that we currently
  report all benchmarks, I installed a fibonacci heuristic to gather
  data points from 0 to the max size using an increasing stepping.

  Defined as a trait as I already anticipate we might need different
  sizing strategy, likely driven by the user via a command-line option;
  but for now, this will do.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:02 +01:00
KtorZ 2dbc33e91f
fuse together bench & test runners, and collect all bench measures.
This commit removes some duplication between bench and test runners,
  as well as fixing the results coming out of running benchmarks.

  Running benchmarks is expected to yield multiple measures, for each of
  the iteration. For now, it'll suffice to show results for each size;
  but eventually, we'll possibly try to interpolate results with
  different curves and pick the best candidate.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:02 +01:00
KtorZ 37f721ff06
fixup aesthetics
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:01 +01:00
KtorZ 2a1253cb52
Add additional test to check for Sampler alias formatting.
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:01 +01:00
KtorZ 428d30c3bb
refactor and fix benchmark type-checking
Fixes:

  - Do not allow bench with no arguments; this causes a compiler panic
    down the line otherwise.

  - Do not force the return value to be a boolean or void. We do not
    actually control what's returned by benchmark, so anything really
    works here.

  Refactor:

  - Re-use code between test and bench type-checking; especially the
    bits related to gathering information about the via arguments.
    There's quite a lot and simply copy-pasting everything will likely
    cause issues and discrepency at the first change.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:01 +01:00
KtorZ 0a4d60b821
minor aesthetic changes in test framework.
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:01 +01:00
KtorZ 497f663513
actually fail if a (seeded) sampler return None
This is not supposed to happen, as only replayed sampler/fuzzer can
  stop.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:01 +01:00
KtorZ 782c3274f8
remove unnecessary intermediate variables
Introduced in some previous commits, so basically reverting that.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:00 +01:00
microproofs c382e6fba8 Add a debug flag for uplc eval 2025-02-09 08:39:38 -05:00
KtorZ 55cc1b932e
Run formatter across the codebase (rust 1.84.1)
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-08 15:03:26 +01:00
microproofs 7d6925545c
Fix: additional tipo case when using Pairs type inside of a redeemer or datum type 2025-01-30 18:54:14 +07:00
Riley-Kilgore 798e60fe78 Changes to lexer to keep clippy happy 2025-01-22 15:23:17 -08:00
Riley-Kilgore 79ac1b2bfa Fix benchmarking and cleanup for PR 2025-01-22 15:23:17 -08:00
Riley-Kilgore 07679b8acc Ran fmt 2025-01-22 15:23:17 -08:00
Riley-Kilgore bd44b22d59 Addressed comments on benchmarking PR 2025-01-22 15:23:17 -08:00
Riley-Kilgore df05ae7e5d Uh, formatting again.. 2025-01-22 15:23:17 -08:00
Riley-Kilgore d73ee3dfe7 Formatting 2025-01-22 15:23:17 -08:00
Riley-Kilgore 84a0abeb0f Old Fuzzer, new Sampler 2025-01-22 15:23:17 -08:00
Riley-Kilgore c0fabcd26a Added benchmark keyword and unified Samplers and Fuzzers as Generator 2025-01-22 15:23:17 -08:00
Riley-Kilgore d353e07ea1 Formatting 2025-01-22 15:23:17 -08:00
Riley-Kilgore 699628df62 Added ScaledFuzzer capabilities 2025-01-22 15:23:17 -08:00
Riley-Kilgore f55419e8fb Fixed basic benchmarking functionality 2025-01-22 15:23:17 -08:00
Riley-Kilgore e97e85a272 Dump (benchmarking wip) 2025-01-22 15:23:17 -08:00
KtorZ be770acb54 add some regression tests for the new unused fields warning. 2025-01-22 18:07:57 -05:00
KtorZ 05264bc423 Trigger warning when destructuring records using unnamed fields
Comes with a helpful hint and a LSP quickfix, so that it's most
  convenient.
2025-01-22 18:07:57 -05:00
microproofs b25afa2d0d
chore: Release 2025-01-21 23:48:15 +07:00
microproofs a9bedda5ed
Update script context handler to do less work with only fallback. Also optimize wrapped builtins too. 2025-01-15 18:27:43 +07:00
microproofs 09ddec6b41
New optimization to split independent lam function applications to enable case constr to optimize further 2025-01-11 19:09:00 +07:00
microproofs f7f68fbafc
Add writeBits back in and use the optimizer to utilize the list conversion 2025-01-11 19:08:42 +07:00
microproofs 2c214186b6
Make sure clean up doesn't add case and constr to comp time eval. Also had fun with test_1 mint script context validator 2025-01-11 19:08:42 +07:00
microproofs c1ed0dcbb5
Remove some prints and switch an uneeded isize to usize since it can't be negative 2025-01-11 19:08:41 +07:00
microproofs 19b4b9df0f
Inline now handles (if cond then body else error) patterns.
This allows conditions like ```expect x == 1``` to match performance with ```x == 1 && ...```

Also change builtins forcing to accommodate the new case-constr apply optimization
2025-01-11 19:08:41 +07:00
rvcas b3de1b048b
fix: blueprint still needs to load older plutus versions 2025-01-02 13:37:17 -05:00
KtorZ 620fe6b299
Preserve holes discard names in function captures
Fixes #1080
2025-01-02 12:57:32 +01:00
rvcas 5f8b252783
fix: adjust comment formatting in pipelines closes #985 2024-12-30 22:33:13 -05:00
rvcas c1871768f8
feat: remove plutus v1,v2 from aiken.toml closes #1032 2024-12-25 22:52:08 -05:00
KtorZ 22172069f8
chore: Release 2024-12-13 16:44:12 +01:00
KtorZ da1c478b2f
chore: Release 2024-12-13 15:22:10 +01:00
KtorZ 67bf64967b
rename 'constr_{fields,index}' to 'unconstr_{field,index}'
Better match the conventions so far used across the existing builtins.
2024-12-13 15:18:20 +01:00
microproofs f0fc7b4d5f
Clippy fix 2024-12-13 14:18:18 +07:00
microproofs 463b88413e
feat: new builtins constr_index and constr_fields for alternative fast ways to take apart Data 2024-12-13 14:15:19 +07:00
microproofs ebc7d89d5d
Comment out ExpModInteger since it's not live on testnets yet 2024-12-08 14:29:58 +07:00
KtorZ 1105dbf3c6
enable new builtins (*with gotcha)
We still need to adjust the writeBits one to work around its list<int> argument.
2024-12-07 15:43:38 +01:00
KtorZ d3344528b3
add type signatures for new builtins. 2024-12-07 15:43:38 +01:00