KtorZ
84c4ccaf4c
Forbid opaque types in the application binary interface.
...
We cannot enforce internal invariants on opaque types from only structural checks on Data. Thus, it is forbidden to find an opaque type in an outward-facing interface. Instead, users should rely on intermediate representations and lift them into opaque types using constructors and methods provided by the type (e.g. Dict.from_list, Rational.from_int, Rational.new, ...)
2024-03-03 13:55:10 +01:00
rvcas
d698f76e3c
fix(codegen): builtin calls for g1 and g2 where flipped
...
closes #840
2024-02-29 12:13:51 -05:00
rvcas
ff5491caa0
fix(check): only disallow ml_result in data
2024-02-29 11:19:26 -05:00
rvcas
d18caaeecb
feat(cli): support mainnet address output
...
closes #832
2024-02-27 21:55:18 -05:00
rvcas
2018a18d15
fix: error message for bls elements in a type def
...
closes #840
2024-02-27 21:21:18 -05:00
KtorZ
46c357df7b
Fix Int/BigInt pivot
...
We've been wrongly representing large ints as BigInt, causing them to
behave differently in the VM through builtins like 'serialise_data'.
Indeed, we expect anything that fits in 8 bytes to be encoded as Major
Type 0 or 1. But we were switching to encoding as Major type 6
(tagged, PosBigInt, NegBigInt) for much smaller values! Anything
outside of the range [-2^32, 2^32-1] would be treated as big int
(positive or negative).
Why? Because we checked whether a value i would fit in an i64, and if
it didn't we treated it as big int. But the reality is more subtle...
Fortunately, Rust has i128 and the minicbor library implements TryFrom
which enforces that the value fits in a range of [-2^64, 2^64 - 1], so
we're back on track easily.
2024-02-25 14:09:56 -05:00
rvcas
8d59ba1c77
chore: update the conformance tests
2024-02-20 13:05:28 -05:00
rvcas
a15fead982
chore: remove unused import
2024-02-20 13:05:28 -05:00
rvcas
20917bbd5b
feat(machine): fix Value::Constr fields order
...
cc @MicroProofs
2024-02-20 13:05:28 -05:00
rvcas
028528899c
feat(runtime): implement byteStringToInteger and add conformance tests
2024-02-20 13:05:28 -05:00
rvcas
da6e5ec6d1
feat: implement integerToByteString
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2024-02-20 13:05:28 -05:00
rvcas
c7dd4d0e48
feat(aiken-lang): expose integerToByteString and byteStringToInteger
2024-02-20 13:05:28 -05:00
rvcas
fc3bc4d9ff
feat(cost_model): add costing for integerToByteString and byteStringToInteger
2024-02-20 13:05:28 -05:00
rvcas
70d4d7fdeb
feat(runtime): add force count and arity for integerToByteString and byteStringToInteger
2024-02-20 13:05:28 -05:00
rvcas
b0eade209b
feat(DefaultFunction): add IntegerToByteString and ByteString
2024-02-20 13:05:28 -05:00
rvcas
0ccfe60072
feat: support nested void matching
2024-02-13 21:29:24 -05:00
rvcas
ac0c73a56a
chore: clippy fixes
2024-02-13 20:26:12 -05:00
rvcas
3582c5569d
fix: no single when clause warning sometimes
...
While looking at some code, I noticed that this
warning would show up even if an error for a
non-exhaustive when/is shows up for the same when/is
expression. This isn't a useful situation to show this
warning because things are not exhaustive yet so we should
let the user finish and only provide the errors. If things
are exhaustive then the code proceeds and if a warning was set
when there's only one clause pattern then this warning message
can be pushed because that's when it's actually useful.
2024-02-13 20:12:40 -05:00
rvcas
4c5a449d83
chore: improve a comment/doc
2024-02-13 19:46:34 -05:00
microproofs
6e2f9b9eb9
fix tests
2024-02-07 12:48:07 -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
51f1da2505
Removed AirStatements and AirExpressions
...
Still a WIP
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
713b16e25d
we now build forwards when it comes to piplines and expressions
...
so this test got reordered
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
8702c736d0
fix warning
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
KtorZ
3c8460e6af
Allow annotating Data for blueprint
...
This commit allows Data to be optionally annotated with a
phantom-type. This doesn't change anything in codegen but we can now
leverage this information to generate better blueprint schemas.
2024-02-07 11:48:52 -05:00
KtorZ
20ce19dfb1
Fix error hint when expecting 0 generic parameters.
2024-02-07 11:48:52 -05:00
microproofs
0e2995e16e
fix test
2024-02-07 11:48:52 -05:00
microproofs
3b4c6cb2aa
fix: missing message error term in one place for type is void
2024-02-07 11:48:52 -05:00
microproofs
e25be7643e
discards will now check for type too.
2024-02-07 11:48:52 -05:00
microproofs
982eff449e
chore: Release
2024-01-31 13:48:20 -05:00
microproofs
551941392e
fix: assert had one minor edge case due to final clauses with lists
2024-01-31 00:05:09 -05:00
microproofs
444bccf19c
fix: change list_access_to_uplc to properly handle list discards
2024-01-30 23:53:33 -05:00
microproofs
a83220c8d9
fix: module_name was being overrided by the moduleselect field
2024-01-30 23:52:50 -05:00
Kuly14
81e93b4309
Introduce cli aliases for check and build subcommands
2024-01-30 12:32:17 -05:00
rvcas
3a7a0c1971
chore: remove unused deps
2024-01-30 12:28:18 -05:00
microproofs
8584adc1b7
chore: Release
2024-01-25 15:10:11 -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
rvcas
defd36ad8c
chore: Release
2024-01-25 11:07:32 -05:00
rvcas
1ab6d050af
chore: bump pallas
2024-01-25 11:07:18 -05:00
rvcas
589bb9a4b3
chore: change how we depend on pallas
2024-01-24 21:26:48 -05:00
microproofs
ae0b428658
update tests to account for new verbose tracing
2024-01-24 16:29:40 -05:00
microproofs
00e1942999
another test fix
2024-01-24 16:29:40 -05:00
microproofs
dc61e11813
fix test
2024-01-24 16:29:40 -05:00
microproofs
36a0b317ad
fix condition to account for tail presence
2024-01-24 16:29:40 -05:00
microproofs
3c81ebf137
updating more of the tests
2024-01-24 16:29:40 -05:00
microproofs
51f1f2b67f
change redundant if branches
2024-01-24 16:29:40 -05:00
microproofs
e523ae63f3
fixed some of the tests
2024-01-24 16:29:40 -05:00
microproofs
3a44c45b48
fix: one builtin error wasn't be caught with a messaged exception
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
54a1b50138
Make behavior between curly- and paren-delimited blocks consistent.
...
Note that the formatter rewrite parens-block sequences as curly-block
sequences anyway. Albeit weird looking syntax, they are valid
nonetheless.
I also clarified a bit the hints and description of the
'illegal::return' error as it would mistakenly say 'function' instead
of 'block'.
2024-01-20 10:37:07 +01:00
KtorZ
bf96c3afd2
Add more tests & rename 'Invalid' -> 'Unfinished'
2024-01-20 10:26:33 +01:00
Matthias Benkort
cb6fd59dbd
Fix minor typo in error label
2024-01-20 09:58:36 +01:00
rvcas
25a837ab3f
feat: parser and check fixes
...
- do not erase sequences if the sole expression is an assignment
- emit parse error if an assignment is assigned to an assignment
- do not allow assignments in logical op chains
2024-01-19 14:32:21 -05:00
KtorZ
8a90e9eda0
Improve behavior and reporting of tests expected to fail
...
Fixes #786 .
2024-01-19 18:20:58 +01: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
6fa272bd34
Remove compiler-generated helper 'global' traces in compact mode.
...
Since there's no line number to show here, we don't have much choice. And the alternative of showing shorter traces as code is just ugly as hell.
2024-01-19 14:30:44 +01:00
KtorZ
42fdecf41f
Fix coloring output of multi-line traces.
2024-01-19 14:30:44 +01:00
KtorZ
3d131a5d09
Fix CLI docs for traces.
2024-01-19 14:30:16 +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
KtorZ
627c6b576e
Move line_numbers under 'aiken-lang'
...
And add some unit tests to ensure things are working properly.
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
KtorZ
d27ea98a8f
Rework tracing arguments to --keep-traces & --trace-level
...
This allows for a more fine-grained control over how the traces are showed. Now users can instrument the compiler to preserve only their user-defined traces, or the only the compiler, or all, or none. We also want to add another trace level on top of that: 'compact' to only show line numbers; which will work for both user-defined and/or compiler-generated traces.
2024-01-19 14:30:15 +01:00
microproofs
86146ae7f4
adding codegen traces
2024-01-19 14:30:14 +01:00
Matthias Benkort
81e29539c8
Merge pull request #803 from aiken-lang/780-possible-bug-with-test-github-action-version-generated-by-aiken-new
...
fix: aiken new github action version
2024-01-19 14:27:38 +01:00
KtorZ
0e2b8ae251
Bump pallas dependencies to include flat bigint patch
...
Fixes #796 .
2024-01-18 18:26:21 +01:00
microproofs
1796147264
fix: aiken new github action version
2024-01-18 12:10:06 -05:00
microproofs
06672fce05
add new test
2024-01-13 19:29:34 -05: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
Niels Mündler
f934e87b1d
Reuse "convert_tag_to_constr"
2024-01-13 13:23:58 -05:00
Niels Mündler
cda1716d47
Unify construction of PlutusData objects from int + fields
2024-01-13 13:23:58 -05:00
Niels Mündler
742a728d53
Fix conformance test to make a point
2024-01-13 13:23:58 -05:00
Niels Mündler
316842876d
Fix PlutusData Constr test case
2024-01-13 13:23:58 -05:00
Niels Mündler
4bd8ab890a
Add reverse mapping for PlutusData constr
2024-01-13 13:23:58 -05:00
Niels Mündler
0ae631a1fe
Fix parsing Constr PlutusData
2024-01-13 13:23:58 -05:00
microproofs
4a8fecb70a
fix: satisfy clippy's demands
2024-01-11 14:53:02 -05:00
rvcas
8b62873ef5
fix(format): post trace sequences getting wrapped in curlies closes #781
2024-01-09 22:39:55 -05:00
microproofs
ff462fa8ea
don't need clippy macro anymore :)
2024-01-08 18:08:50 -05:00
microproofs
f722af1149
fix: accidentally put quotes around tail_name
2024-01-08 18:08:50 -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
Mitchell Turner
7992a50bec
Make foreign `Language` type publicly available ( #793 )
...
* Make foreign type public available
* Fix formatting
2024-01-08 13:31:21 -08: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