Commit Graph

2531 Commits

Author SHA1 Message Date
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 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
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 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 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 8764d37d76 Formatting 2025-01-22 15:23:17 -08:00
Riley-Kilgore 9a3513b245 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
Riley-Kilgore f569f213b2 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 1075be1b71
Minor fix to optimization to actually detect vars that are just forced builtins 2025-01-17 11:34:41 +07:00
microproofs 91b6e6da31
Oops left a todo 2025-01-16 09:33:59 +07:00
microproofs ade50dd462
Clippy fix 2025-01-15 18:28:41 +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 6d2e38851e
Push down functions that aren't dependent on the group in front. 2025-01-12 00:39:04 +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 d559e384ec
Handle case where write_bits is used without being applied 2025-01-11 19:08:43 +07:00
microproofs e437d70ae2
Clippy fix 2025-01-11 19:08:42 +07:00
microproofs a3a3185e5e
Conformance tests should be using NamedDebruijn comparisons not name. Also no inline remover needs to run separately from other uplc transformations 2025-01-11 19:08:42 +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 19d0ec23cf
Oops did wrong comparison check on number of consecutive applies 2025-01-11 19:08:42 +07:00
microproofs 7462f1d52f
DecodeUtf8 is not error safe 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 33392f1532
Add case constr for applies greater than 2 optimization 2025-01-11 19:08:41 +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
microproofs c130796f49
Forgot this so I was reminded when trying to deserialize Bullet 2025-01-11 19:06:43 +07:00
Sebastian Nagel d15bd5150b
fix: Completion cli documentation
Encountered this copy & paste error when using aiken.
2025-01-08 09:49:47 +01: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 44d261a9aa
chore: update snapshots 2024-12-25 23:35:18 -05:00
rvcas 9385f637f9
feat: export now supports return type closes #968 2024-12-25 23:34:06 -05:00
rvcas 3e2ca757cd
fix: remove unwrap which is causing panics closes #1073 2024-12-25 23:14:18 -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 b1977214ca
disable katex conversion on non-windows builds.
I am not going to spend time figuring out how to get katex working on Windows. If someone wants, feel free.
2024-12-13 16:43:30 +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
KtorZ dc09949739
Add couple of tests covering the new Katex rendering in docs.
Had a doubt about the Regex behaviour, so wanted to convince myself it
  does what it should. All good.
2024-12-13 13:46:39 +01:00
adrian052 51af046fcb
Switched to KaTeX for LaTeX rendering and used cmark-provided delimiters 2024-12-13 13:46:39 +01:00
adrian052 5925dd3bfa
Implement support for custom LaTeX markers and MathJax integration 2024-12-13 13:46:39 +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
KtorZ 1f1e68712c
add type signatures for new builtins. 2024-12-07 14:25:12 +01:00
KtorZ 092b1e56dd
Merge branch 'waalge/new-include-validator-template' 2024-12-07 13:44:24 +01:00
KtorZ 75c88be091
Fix validator placeholder template
- Remove escape sequences for curly braces, not actually needed
  - Make indentation 2-space
  - Make it compile without errors
  - Also add some example for 'else'
2024-12-07 13:42:53 +01:00
Matthias Benkort 44c894518b
Apply suggestions from code review 2024-12-07 13:31:48 +01:00
Matthias Benkort 85b6caf9e9
Update crates/aiken/src/cmd/new.rs 2024-12-07 13:28:36 +01:00
microproofs ddc58b9a65
Cargo fmt fix 2024-12-07 12:30:14 +07:00
microproofs 4d7a24234b
Clippy fix 2024-12-07 12:27:35 +07:00
microproofs 17fdbd356a
Add new conformance tests 2024-12-07 12:23:51 +07:00
microproofs 5f1f37919f
Passing conformance tests 2024-12-07 12:23:22 +07:00
microproofs a1804863dc
Remaining builtin 2024-12-06 12:17:48 +07:00
microproofs b507992172
Clippy fix 2024-12-06 11:43:05 +07:00
microproofs 86951ef19a
One last builtin to do. Also switch to using bitvec for faster and more accurate shifting 2024-12-06 11:33:45 +07:00
microproofs 91d4ecc350
Unused import 2024-12-05 11:03:42 +07:00
microproofs 9867de38b6
A few more left to finish 2024-12-05 11:03:41 +07:00
microproofs c3b6bc5bff
Implementation of a few more of the new builtins 2024-12-05 11:03:41 +07:00
microproofs 5cf3275793
Detect difference in cost model length to maintain compatability with mainnet and testnet 2024-12-05 11:03:41 +07:00
microproofs 4839273449
Continue working on new builtin cost model updates 2024-12-05 11:03:41 +07:00
microproofs befbb6ec18
Start adding implementation for new builtins 2024-12-05 11:03:41 +07:00
hade 49aa5e01a0
feat: update change#2 costmodels 2024-12-05 11:03:41 +07:00
Kasey 86ec3b2924
Fix: issue crash in code gen with incorrect column length in decision trees (#1069)
* Fix: Deeply nested assignments would offset the new columns count calculation. Now we track relevant columns and their path to ensure each row has wildcards if they don't contain the relevant column

* Add test plus clippy fix

* Clippy fix

* New version clippy fix
2024-12-05 11:02:19 +07:00
KtorZ a9675fedc6
Fix deserialization of SerializedProgram into wrong Plutus version wrappers. 2024-12-03 22:22:11 +01:00
Simon Gellis 6f1477cef7 Allow tildes in identifier names 2024-11-25 16:20:35 -05:00
waalge 5a8ef1aef0 add: template from docs 2024-11-23 17:05:42 +00:00
KtorZ e2fb28b4ce
chore: Release 2024-11-19 15:55:23 +01:00
KtorZ e12d7e807d
Move JSON-schema help for check behind dedicated flag
1. A new option `show_json_schema` which, when enabled, will print the JSON schema of the command output if the target isn't an ANSI-capable terminal.
   2. Some modifications to the help message and error handling for the new option `show_json_schema`.

   This is now done to avoid flooding the help screen with an entire
   JSON schema. Plus, it makes the schema more easily exportable as an
   actual JSON schema.
2024-11-19 15:48:39 +01:00
KtorZ 7a93c55d0b
Minor fixes on the telemetry output for terminal. 2024-11-19 15:00:03 +01:00
KtorZ b5047d623a
Update to pallas=0.31.0 2024-11-19 14:53:36 +01:00
microproofs eec08fcbd9
Fix scoped path for list with tail cases only plus wild card fallback 2024-11-18 12:22:08 -05:00
microproofs 18054eed1a
chore: Release 2024-11-13 15:17:53 -05:00
Kasey 4ea6fdffe8
Aiken UPLC Optimization overhaul (#1052)
* Refactor and structuring optimizations to be less computationally heavy

* Forgot to commit the new file containing the optimization do over

* Point to correct functions in shrinker2

* Split out inline_constr_ops since it adds in builtins that can then be swept up by the builtin force reduction

* Fix: issue where identity reducer was always returning true

* Forward inlining on lambdas produces better results. This is due to a forward pass being able to apply an argument that may have no_inline at the top where as vice-versa would reduce the arg first.

* Clippy and test fixes

* Clear no_inlines when inlining a function

* Convert shrinker2 to replace shrinker and update tests
2024-11-13 15:08:36 -05:00
KtorZ 10c1b46bf7
Bump minimum rust version everywhere to 1.70.0 2024-11-13 19:38:57 +01:00