Commit Graph

3296 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
waalge e9bacf8f41 fix: nix builds
Required pinning hash of git dependency textplots
2025-02-15 10:00:24 -05:00
Calvin Koepke 90867f240b fix: better error logging when decoding tx_bytes by era 2025-02-14 17:01:30 -05:00
rvcas 21c6a6a71d
chore: remove stats from readme, it's cute but wastes space 2025-02-12 11:55:18 -05:00
rvcas bf4fc5eb87
chore: fix badge styles 2025-02-12 11:54:15 -05:00
KtorZ 7c3c5a500f
pin textplots-rs fork to a specific revision & version.
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-11 14:32:21 +01:00
KtorZ 3bce2e2d78
chore: Release
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-11 14:26:12 +01:00
KtorZ b26b599a97
Update blueprint test vectors following 58d782fa
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-11 14:21:52 +01:00
KtorZ 172f7e1e01
Fill-in CHANGELOG for #1074.
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-11 14:20:02 +01:00
KtorZ 3c2b631813
Add 'Collecting' step to 'check' command output + warning for suspicious test filter
Fixes #1092.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-11 14:17:28 +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
Matthias Benkort 94246bdb2b
Merge pull request #1093 from aiken-lang/benchmarks-wrapup
Wrapping-up benchmarks
2025-02-09 17:04:39 +01:00
KtorZ a6cdb5583d
Make nix build optional.
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:57:43 +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 451179fd49
Update CHANGELOG w.r.t benchmarks
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:28:42 +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 a7f4ecef9d
more aesthetic changes.
In particular, using a concrete enum instead of a string to avoid an
  unnecessary incomplete pattern-match, and remove superfluous comments.

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 d87e7f808f
remove duplicate entry in CHANGELOG
likely due to an wrong merge conflict resolution.

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 f85d9460f6
Merge branch 'fix/blueprint-pairs'
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-08 15:04:03 +01: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
KtorZ 774a249cd6
Fill-in CHANGELOG.
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-08 15:00:18 +01:00
KtorZ 9162df7c6a
fix blueprint schema definitions for pairs. 2025-02-08 14:56:43 +01:00
KtorZ d3885ac67a
prune orphan pair definitions after full blueprint generation.
This is to avoid pruning a definition which may end up needed later
  on. The issue can be seen when definition to a Pair is used *before*
  another Map definitions that uses this same Pair.

  Before this commit, the Map definition would simply remove the
  definition generated for the Pair, since it would be pointless (and it
  is a lot easier to generate those pointless definition than trying to
  remember we are currently generating definition for a Map).

  So now, we defer the removal of the orphan definition to after all
  defnitions have been generated by basically looking at a dependency
  graph. I _could have_ used pet-graph on this to solve it similar to
  how we do package dependencies; but given that we only really need to
  that for pairs, the problem is relatively simple to solve (though
  cumbersome since we need to traverse all defintions).

  Fixes #1086.
2025-01-30 15:51:43 +01:00
microproofs 3e57109c35
minor test rename in aiken.toml 2025-01-30 18:57:09 +07: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 cb69325af5 Move 'benchmarking' over to the left 2025-01-22 15:23:17 -08:00
Riley-Kilgore 5781d9d202 Fix changelog 2025-01-22 15:23:17 -08:00
Riley-Kilgore d8a235732b Update aiken-project toml to remove csv; update changelog 2025-01-22 15:23:17 -08:00
Riley-Kilgore 798e60fe78 Changes to lexer to keep clippy happy 2025-01-22 15:23:17 -08:00
Riley-Kilgore 434771a57d rename acceptance test in aiken.toml 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 3ee74a5ba8 Move acceptance test 117 to 118 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