KtorZ
bfcfc5c41b
Implement reification from Maps.
2024-03-03 19:33:25 +01:00
KtorZ
14f1025f0b
Display counterexamples as Aiken values instead of raw UPLC.
2024-03-03 19:33:24 +01:00
KtorZ
3762473a60
Add preliminary plumbing to run property test through the CLI.
...
This is very very rough at the moment. But it does a couple of thing:
1. The 'ArgVia' now contains an Expr/TypedExpr which should unify to a Fuzzer. This is to avoid having to introduce custom logic to handle fuzzer referencing. So this now accepts function call, field access etc.. so long as they unify to the right thing.
2. I've done quite a lot of cleanup in aiken-project mostly around the tests and the naming surrounding them. What we used to call 'Script' is now called 'Test' and is an enum between UnitTest (ex-Script) and PropertyTest. I've moved some boilerplate and relevant function under those module Impl.
3. I've completed the end-to-end pipeline of:
- Compiling the property test
- Compiling the fuzzer
- Generating an initial seed
- Running property tests sequentially, threading the seed through each step.
An interesting finding is that, I had to wrap the prop test in a similar wrapper that we use for validator, to ensure we convert primitive types wrapped in Data back to UPLC terms. This is necessary because the fuzzer return a ProtoPair (and soon an Array) which holds 'Data'.
At the moment, we do nothing with the size, though the size should ideally grow after each iteration (up to a certain cap).
In addition, there are a couple of todo/fixme that I left in the code as reminders of what's left to do beyond the obvious (error and success reporting, testing, etc..)
2024-03-03 19:33:24 +01:00
rvcas
0ccfe60072
feat: support nested void matching
2024-02-13 21:29:24 -05:00
microproofs
056e3d76ea
change check_validator_args to check type after each arg
2024-02-07 12:48:07 -05:00
microproofs
6c6be3f53d
got past the errors and warnings
2024-02-07 12:37:37 -05:00
microproofs
b807d58e89
fix first compiler pass of errors
2024-02-07 12:37:37 -05:00
microproofs
dc195b22d4
missed another hoist over
2024-02-07 12:36:35 -05:00
microproofs
d1c784ed49
few more hoist over fixes
2024-02-07 12:36:35 -05:00
microproofs
3938d74bb6
missed a hoist over
2024-02-07 12:36:35 -05:00
microproofs
6b97ab71fe
fix up code gen tests
2024-02-07 12:36:35 -05:00
microproofs
4ab3b61200
In most cases the context isn't need so I made the code more explicit about that
2024-02-07 12:36:35 -05:00
microproofs
575dde9885
fix: issue with reordering statements caused clause props to not be updated
2024-02-07 12:36:35 -05:00
microproofs
806a74c192
fix all current errors
2024-02-07 12:36:35 -05:00
microproofs
9f96e4bc5a
fix first compiler pass of errors
2024-02-07 12:36:35 -05:00
KtorZ
a12c374258
Start turning AirTree statements into expressions (let)
...
Still many places to fix, WIP.
2024-02-07 12:36:35 -05:00
microproofs
e25be7643e
discards will now check for type too.
2024-02-07 11:48:52 -05:00
microproofs
a83220c8d9
fix: module_name was being overrided by the moduleselect field
2024-01-30 23:52:50 -05:00
microproofs
78d2049d7b
fix: Using the wrong match string for discards in FieldsExpose
...
Also need to return a lambda wrapped term from list_access_to_uplc under all conditions
2024-01-25 14:18:36 -05:00
microproofs
51f1f2b67f
change redundant if branches
2024-01-24 16:29:40 -05:00
microproofs
eda4e259d6
minor fix and some refactoring on the if statements
2024-01-24 16:29:40 -05:00
microproofs
82fc82ceee
fix: used wrong index in tupleAcessor
2024-01-24 16:29:40 -05:00
microproofs
956c3d6cf0
feat: refactor code gen to avoid builtin errors when tracing is turned on
2024-01-24 16:29:40 -05:00
KtorZ
2b4137dc24
Revert "minor refactor"
...
This reverts commit 21f0b3a6220fdafb8f6aad6855de89d8cdde0e1b.
Rationale:
The absence of clause guard was here done *on purpose*. Indeed,
introducing a clause guard here forces either duplication or the use
of a wildcard which is not "future proof".
Should we make a change to that one day (e.g. add a new variant to
TraceLevel), we won't get any compiler warning and we'll very likely
forget to update that particular section of the code.
So as much as possible, enforce complete pattern-match on variants
make for code that is easier to maintain in the long-run.
2024-01-19 14:31:09 +01:00
microproofs
af90b38bf8
minor refactor
2024-01-19 14:31:04 +01:00
KtorZ
59c784778e
Convert span's start to line number + col
...
This requires to make line numbers a first-class citizen in the module
hierarchy but it is fortunately not _too involved_.
2024-01-19 14:30:15 +01:00
KtorZ
e67d5863a1
Introduce 'compact' trace level verbosity
...
For now, it only shows the span start. We'll change that in the next commit to show a line number and a column.
2024-01-19 14:30:15 +01:00
microproofs
f79b37d551
Replace 'bool' with 'TraceLevel' in codegen
...
Co-authored-by: KtorZ <matthias.benkort@gmail.com>
2024-01-19 14:30:15 +01:00
microproofs
d26524048e
fix: headlist builtin on assoc lists
...
implement chooseunit for 0 args
2024-01-13 19:29:34 -05:00
microproofs
c7af27a6ba
fix: generic edge case with tuples that allowed 2 tuples and 3 tuples to use the same monomorphized function.
...
Also massively reduced the space taken up by generics in scripts when using generics with list and tuples
2024-01-13 17:46:32 -05:00
microproofs
4a8fecb70a
fix: satisfy clippy's demands
2024-01-11 14:53:02 -05:00
microproofs
2216f387c3
refactor: change codegen uplc to have more type safety
...
Also refactor list_access_to_uplc
2024-01-08 18:08:50 -05:00
KtorZ
30a6b77116
Get rid of 'VoidMsg' in favor of an 'Option'.
2024-01-04 16:03:51 -05:00
microproofs
c50a9cb5bd
refactor: convert msgs to use AirMsg type instead of AirTree
2024-01-04 16:03:51 -05:00
microproofs
394cac86b8
feat: expect on a type now can take in a msg when in trace mode
2024-01-04 16:03:51 -05:00
microproofs
4fc65cc600
feat: change expect from data on constrs to take in a message term
2024-01-04 16:03:51 -05:00
microproofs
c7a1ff0959
refactor how tracing is popped off to be in one location in uplc_gen
2024-01-04 16:03:51 -05:00
microproofs
355e38d6e2
feat: expects now print the line of code that failed
2024-01-04 16:03:51 -05:00
microproofs
412945af3a
update aiken code gen test
2024-01-04 16:03:51 -05:00
microproofs
aa51ce3e3e
feat: add code messages when using expects on constrs
2024-01-04 16:03:51 -05:00
microproofs
71cfb6f6af
feat: Add specific messages for using expect with booleans
...
TODO: fill out the rest of the expects with messages
2024-01-04 16:03:51 -05:00
microproofs
825e65d7a3
fix: zero arg functions were being compiled without the trace messages
...
Now traces are added before evaluating
2023-12-06 10:31:48 -05:00
microproofs
45177cd08b
fix: add missing type checks for the new bls primitives
2023-11-23 13:00:24 -05:00
microproofs
8b89ba3b93
feat: implement bls primitives in code gen
2023-11-15 15:55:56 -05:00
microproofs
4eebd4628b
chore: fix comment
2023-11-06 15:37:04 -05:00
microproofs
7427bac4a0
chore: remove unused code
2023-11-06 15:37:04 -05:00
microproofs
598ec5eaef
Use a better algorithm for inlining single occurrences
2023-11-06 15:37:04 -05:00
microproofs
4dd17dacf3
chore: rename uplc builder builtins
2023-10-22 17:08:48 -04:00
microproofs
c764a6f99c
fix: reset option should not reset special functions in only a multivalidator
2023-10-07 19:42:24 -04:00
microproofs
4649a5a9d2
fix: don't reset the used special functions
2023-10-07 19:42:24 -04:00
microproofs
8964675670
feat: Add tracing for common multivalidator issues
2023-10-07 19:42:24 -04:00
microproofs
7a6ddc45a0
feat: Rework codegen traces to prevent repeated messages from taking up uplc script space
2023-10-07 19:42:24 -04:00
microproofs
44021cde19
Detect when fields_expose is unnecessary in clause_pattern
2023-10-07 19:42:24 -04:00
microproofs
8a1c824dd7
chore: add specific error for when the validator returns false
2023-10-04 11:08:22 -04:00
microproofs
add513790d
hotfix: cyclic functions hoisted as a dependency used the wrong key to modify its own cyclic_calls
2023-09-29 22:01:43 -04:00
microproofs
47596f0324
feat: Remove tuple_index and record_access in favor of faster more direct functions for
...
accessing an item in a tuple or a field in a record
2023-09-28 01:05:05 -04:00
microproofs
1bcc9e8524
fix: expect on tuples from data now checks for no more items after the last
2023-09-26 12:49:50 -04:00
microproofs
1ca3499128
chore: rename type
2023-09-25 21:16:19 -04:00
microproofs
1cab479b81
fix: dependency hoisting for cyclic functions
...
Add more tests
2023-09-25 21:16:19 -04:00
microproofs
2f80d07132
fix: minor stuff including fixing the var name used in modify_cyclic_calls
...
and carefully controling the functions we add to sorted dependencies
2023-09-25 21:16:19 -04:00
microproofs
f4310bcf33
feat: finished up mutual recursion
...
Now we "handle" vars that call the cyclic function.
That includes vars in the cyclic function as well as in other functions
"handle" meaning we modify the var to be a call that takes in more arguments.
2023-09-25 21:16:19 -04:00
microproofs
ae3053522e
feat: Update cyclic functions to be aware of being in a cycle.
...
Finish the creation of cyclic functions
The last part is to update vars that call into a function in the cycle
2023-09-25 21:16:19 -04:00
microproofs
0b38855ce4
add new enum for hoistablefunctions
2023-09-25 21:16:19 -04:00
microproofs
ced818c455
checkpoint commit
2023-09-25 21:16:19 -04:00
microproofs
0fb9837ddf
chore: change UserFunction to HoistableFunction to prepare for mututal recursion
2023-09-25 21:16:19 -04:00
microproofs
74b8ab62b2
chore: add comments
2023-09-25 21:16:19 -04:00
microproofs
a4aa51ed2d
WIP: first part of mutual recursion is done.
...
This involves creating the function definition and detecting cycles.
The remaining part is to "fix" the call sites
of the mutually recursive functions
2023-09-25 21:16:19 -04:00
rvcas
d808197507
chore: clippy fix
2023-09-13 18:17:59 -04:00
microproofs
a45001376d
fix: is_record was used incorrectly in code gen,
...
the real solution was to look up the datatype and check constructors length
2023-09-13 00:33:02 -04:00
microproofs
d042d55d42
fix clippy warnings in code gen
2023-09-12 21:25:05 -04:00
rvcas
6b70292dfb
chore: cargo fmt
2023-09-06 21:10:50 -04:00
microproofs
baa6917af5
Fix: Change type map length assert to check for greater than equals instead of equals to argument length
2023-08-29 21:59:15 -04:00
waalge
d4b9f22ac3
rm unnecessary mut
2023-08-26 16:30:44 +00:00
microproofs
084b900b2a
change: traverse_with_tree now has a boolean to determine when with is called
...
fix: Opaque types are now properly handled in code gen (i.e. code gen functions, in datums/redeemers, in from data casts)
chore: add specific nested opaque type tests to code gen
2023-08-19 20:07:37 -04:00
rvcas
f5a49c4df4
fix: aliased import of single type throws compiler error closes #707
2023-08-16 23:15:51 -04:00
microproofs
a45e04fd9b
fix: using the wrong var for pattern matching
2023-08-16 21:59:25 -04:00
microproofs
2456801b17
fix list clauses with guards and add more tests
2023-08-16 21:59:25 -04:00
microproofs
2f7784f31e
chore: update changelog
...
expecting a type on List<Data> from data now only checks that type is a list and not each element
2023-08-10 23:01:46 -04:00
microproofs
eda388fb29
test(aiken-lang): add a new test for list edge case in when clause patterns
2023-08-08 20:47:35 -04:00
microproofs
252f68de17
fix clippy
2023-08-07 19:08:18 -04:00
Pi Lanningham
f464eb3702
Cargo fmt + clippy, with latest rust
2023-08-07 19:00:39 -04:00
microproofs
90c7753201
update tests for new recursion optmization
2023-08-07 19:00:39 -04:00
Pi Lanningham
fc948f0029
Add the same optimization to dependent functions
...
I originally didn't add this because I thought this was mutually
recursive functions, which I couldn't picture how that would work;
I refactored all this logic into modify_self_calls, which maybe needs a
better name now.
Perf gain on some stdlib tests (line concat tests) is 93%!!
2023-08-07 19:00:39 -04:00
Pi Lanningham
c45caaefc8
Rudimentary implementation
...
Adds an identify_recursive_static_params; doesn't handle all shadowing cases yet
2023-08-07 19:00:39 -04:00
Pi Lanningham
09f889b121
Add codegen for recursive statics case
...
We also flip the recursive_statics fields to recursive_nonstatics; This makes the codegen a little easier. It also has a hacky way to hard code in some recursive statics for testing
2023-08-07 19:00:39 -04:00
Pi Lanningham
586a2d7972
Add recursive_static_params to AIR
...
Any methods to a recursive function that are unchanged and forwarded
don't need to be applied each time we recurse; instead, you can
define a containing lambda, reducing the number of applications
dramatically when recursing
2023-08-07 19:00:39 -04:00
microproofs
29599879b2
one minor tail fix in clause pattern
2023-08-07 12:02:44 -04:00
microproofs
6a1b2db698
use retain instead of position
2023-08-07 12:02:44 -04:00
microproofs
7bf22fa58b
fix multivalidator issue
2023-08-07 12:02:44 -04:00
microproofs
281a8363c0
fixes to tuples and usage of discard.
...
Also a fix to tail and its type in when list pattern matches
2023-08-07 12:02:44 -04:00
microproofs
bfa4cc2efc
fix: some function dependency tree path was not being updated in order
...
fix: revert to old implicit way of casting to data for now
2023-08-07 12:02:44 -04:00
microproofs
a45ff692a6
last changes for today
2023-08-07 12:02:44 -04:00
microproofs
3189a60bdb
fixes to how we sort dependencies.
...
Also update dependency path based on a functions path.
2023-08-07 12:02:44 -04:00
microproofs
186e1235fd
checkpoint
2023-08-07 12:02:44 -04:00
microproofs
1ee7492f1f
fix tuple clause
2023-08-07 12:02:44 -04:00
microproofs
5aecb96668
constants are back. I had broke them when switching how data casting works
2023-08-07 12:02:44 -04:00
microproofs
0b8266dfd1
some type conversion fixes
2023-08-07 12:02:44 -04:00
microproofs
02948616cd
some more fixes involving clauses
2023-08-07 12:02:44 -04:00
microproofs
a689b8748f
fix: working on minor edge cases
...
fix: zero arg function dependencies should not count as hoisted
fix: tuple index was receiving the wrong type
2023-08-07 12:02:44 -04:00
microproofs
018453f6b1
fix expect on tuple type using the wrong internal type
2023-08-07 12:02:44 -04:00