Commit Graph

490 Commits

Author SHA1 Message Date
microproofs 3d06129d9b add test for curry optimization that is a reduced case of #945 2024-05-22 15:46:32 -04:00
rvcas c1a913f420
fix(config): add default for plutus version 2024-05-22 13:59:56 -04:00
microproofs c1c2cd97b7 New test 103 and clippy fixes 2024-05-21 11:56:12 -04:00
KtorZ b546e42766
FML. 2024-05-14 15:27:08 +02:00
KtorZ 8881a88ae3
Also fix multi-validator for gift_card. 2024-05-14 13:28:24 +02:00
KtorZ ff0407a245
Fix stdlib adjustment in gift_card. 2024-05-14 10:44:48 +02:00
KtorZ 6d7b851c70
Fix 077 after yet-another-breaking-change in stdlib. 2024-05-10 19:05:00 +02:00
Dima S 8a6957dfd0 Update fresh 2024-05-10 10:37:35 -04:00
microproofs 893e9c9855 activate test 75 2024-05-06 15:17:01 -04:00
KtorZ 967f4348ed Add new acceptance test 101 capturing type mismatch at runtime. 2024-05-06 15:17:01 -04:00
KtorZ 0a660c6a21 Add new acceptance test illustrating need for fn call ordering 2024-05-06 15:17:01 -04:00
KtorZ 99c35a6459 Add now-necessary type-annotations in tests 2024-05-06 15:17:01 -04:00
microproofs 0e9baf4944 test should fail 2024-05-06 11:35:55 -04:00
microproofs 2f61f59b60 Closes #909 2024-05-06 11:35:05 -04:00
microproofs 14903f7352 update gift card example 2024-05-04 16:08:08 -04:00
microproofs b669db8516 update tests 2024-05-04 15:58:14 -04:00
microproofs b3d0c3ec04 fix: fixing tests to account for the new stdlib main. Also added test 75 but commented out for now until a fix is merged 2024-05-04 14:26:06 -04:00
microproofs a44ed4c1a8 Change prelude Map to AList 2024-05-04 14:04:12 -04:00
microproofs d8d2fb0ebc fix example error 2024-05-04 14:04:12 -04:00
microproofs fc0e88018e Chore:
Refactor get_uplc_type to account for constr types that don't exactly resolve to a uplc type
Check arg_stack in uplc generator has only 1 argument at the end of the generation
warning fixes
2024-05-04 14:04:12 -04:00
KtorZ 1091eba3c3 Review & fix acceptance tests
Temporarily using the 'specialize-dict-key' branch from the stdlib
  which makes use of Pair where relevant. Once this is merged back into
  'main' we should update the acceptance test toml files to keep getting
  them automatically upgraded.

  This commit also fixes an oversight in the reification of data-types
  now properly distinguishing between pairs and 2-tuples.

  Co-authored-by: Microproofs <kasey.white@cardanofoundation.org>
2024-05-04 14:04:12 -04:00
microproofs 7b5ad961e2 fix: found issue with record access on Pairs 2024-05-04 14:04:12 -04:00
microproofs a6003c3be9 chore: push changes in blueprint snapshot test 2024-03-27 15:57:29 -04:00
microproofs a5a0734629 fix: casting a field type to Data with expect and traces on was assuming the raw Data was of type constr 2024-03-27 15:52:23 -04:00
microproofs 61936cb91e fix(codegen): Add tracing when checking for a constr vs another primitive 2024-03-17 16:25:17 -04:00
KtorZ 37627e3527
Fix indentation of pipelines. 2024-03-09 20:44:51 +01:00
microproofs c7dcb2c256 Add tests for zero arg cyclic functions and renamed function aliases 2024-03-09 13:23:27 -05:00
KtorZ d6cc9bdfbe
Allow implicit discard when right-hand side is Void.
This is the most intuitive/expected behavior. Otherwise, it forces a pointless let-binding to 'Void' or into a discard.
2024-03-09 01:28:29 +01:00
microproofs c906501836 add one more test 2024-03-08 12:25:26 -05:00
microproofs eb07365e73 fix tests 2024-03-08 00:12:44 -05:00
microproofs ae396c0224 Fix opaque type destructuring in code gen 2024-03-08 00:12:44 -05:00
microproofs a3fbe6c155 fix tests 2024-03-06 23:27:10 -05:00
rvcas 25ebdc2527
fix: validator args unexpectedly unbound
closes #852
2024-03-06 14:15:00 -05:00
microproofs c9dd281b45 disable assert that was blocking issue #844 2024-03-04 11:48:22 -05:00
microproofs 27eb1a3e04 Change all uses of interning besides the uplc parser to use the new CodeGenInterner 2024-03-04 11:03:23 -05:00
microproofs e14f091b86 add back test 93 2024-03-04 10:52:56 -05:00
KtorZ 775a34bc47
Remove acceptance_test 095, now done directly from Rust.' 2024-03-03 19:33:26 +01:00
KtorZ 93347d8e7b
Add Fuzzer to the prelude. 2024-03-03 19:33:25 +01:00
KtorZ 5b4fedd084
Add PRNG to the Prelude. 2024-03-03 19:33:25 +01:00
KtorZ bfcfc5c41b
Implement reification from Maps. 2024-03-03 19:33:25 +01:00
KtorZ 5272f5ecee
Adjust order in which Bool's constructors are declared in the prelude
True corresponds to Constr=1 and False corresponds to Constr=0; their position in the vector shall reflect that. Note that while this would in principle impact codegen for any other type, it doesn't for bool since we likely never looked up this type definition since it is well-known. It does now as the 'reify' function relies on this. Whoopsie.
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 c29d163900
Rename acceptance_test_093 -> acceptance_test_095 2024-03-03 19:33:24 +01:00
KtorZ a703db4d14
Borrow integrated shrinking approach from MiniThesis. 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
KtorZ 4ff11f4229
Fix acceptance test 087 following BigInt seralization fix. 2024-03-02 14:11:22 +01:00
KtorZ 2b8e99a1b8
Fix CI script for acceptance tests, and have them run in parallel. 2024-03-02 14:11:22 +01: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 9e3f348c6c
chore: commit artifacts from acceptance tests 2024-02-13 21:29:46 -05:00
rvcas 0ccfe60072
feat: support nested void matching 2024-02-13 21:29:24 -05:00
microproofs d8cdeba6fd chore: lastest acceptance test lock and plutus.json files 2024-01-31 00:07:43 -05:00
microproofs 444bccf19c fix: change list_access_to_uplc to properly handle list discards 2024-01-30 23:53:33 -05:00
microproofs ede6c22267 remove traces from test 89 2024-01-25 14:24:21 -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 b15e6c296b Add a few more expect cases to test 40 2024-01-24 16:29:40 -05:00
KtorZ b50e4ab63a
Re-format and re-run all acceptance tests. 2024-01-20 10:44:16 +01:00
KtorZ 50ebfc6090
remove wrongly committed acceptance test blueprints
Actually copy-pasted from 090
2024-01-20 10:38:40 +01:00
KtorZ bf96c3afd2
Add more tests & rename 'Invalid' -> 'Unfinished' 2024-01-20 10:26:33 +01:00
KtorZ 8a90e9eda0
Improve behavior and reporting of tests expected to fail
Fixes #786.
2024-01-19 18:20:58 +01:00
KtorZ 0e2b8ae251
Bump pallas dependencies to include flat bigint patch
Fixes #796.
2024-01-18 18:26:21 +01: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 394cac86b8 feat: expect on a type now can take in a msg when in trace mode 2024-01-04 16:03:51 -05:00
rvcas b17b7f287c
chore: update to pallas v0.20.0 2023-12-04 21:44:19 -05:00
rvcas 7c4cabada9
chore: add latest acceptance artifacts 2023-12-04 21:10:55 -05:00
rvcas abd18656e3 fix: unable to have newline after expect bool shortcut 2023-11-20 11:44:16 -05:00
rvcas 7118253401 fix: if branches, final_else, and anon fns should all be "top level" 2023-11-20 11:44:16 -05:00
microproofs 446ef11606 chore: finishing acceptance test 29
and updating acceptance test lock files
2023-11-08 14:31:44 -05:00
microproofs 7d319077e6 chore: clean up validator comments and
commit script context test lockfile
2023-11-06 15:49:13 -05:00
microproofs 5d56d41a68 chore: update lock files for acceptance tests 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 68d9a21c6a commit current lock files 2023-10-07 19:42:24 -04:00
KtorZ 524d0dadf5
Add compiler's version to blueprint. 2023-10-06 14:17:55 +02:00
rvcas 135dbd8335 feat: handle pipe fn infer TODOs
This improves error messages for `a |> b(x)`.

We need to do a special check when looping over the args
and unifying. This information is within a function that does not belong
to pipe typer so I used a closure to forward along a way to add
metadata to the error when the first argument in the loop has a
unification error. Simply adding the metadata at the pipe typer
level is not good enough because then we may annotate regular
unification errors from the args.
2023-10-03 01:17:15 -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 eb0b4dd6d8 update lock files 2023-09-25 21:16:19 -04:00
microproofs b8737a1021 add one more test for unbound generics 2023-09-25 21:16:19 -04:00
microproofs 534eb62a07 fix: There was a stack overflow due to passing unbound types to a function 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 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
KtorZ 984237075a Add new acceptance test scenario: 066
Mutua recursion.
2023-09-25 21:16:19 -04:00
rvcas 4ca8681ca0
chore: commit example lock files 2023-09-20 13:26:49 -04:00
rvcas bc0824f4eb
chore: new aiken.lock files for examples 2023-09-13 18:17:40 -04:00
KtorZ c711a97e69 Throttle calls to package registry for version resolution
The 'HEAD' call that is done to resolve package revisions from
  unpinned versions is already quite cheap, but it would still be better
  to avoid overloading Github with such calls; especially for users of a
  language-server that would compile on-the-fly very often. Upstream
  packages don't change often so there's no need to constantly check the
  etag.

  So we now keep a local version of etags that we fetched, as well as a
  timestamp from the last time we fetched them so that we only re-fetch
  them if more than an hour has elapsed. This should be fairly resilient
  while still massively improving the UX for people showing up after a
  day and trying to use latest 'main' features.

  This means that we now effectively have two caching levels:

  - In the manifest, we store previously fetched etags.
  - In the filesystem, we have a cache of already downloaded zip archives.

  The first cache is basically invalidated every hour, while the second
  cache is only invalidated when a etag changes. For pinned versions,
  nothing is invalidated as they are considered immutable.
2023-09-13 17:17:32 -04:00
rvcas f4d0f231d7
test: fix acceptance tests 2023-08-16 14:52:06 -04:00
rvcas 80e4a5c6a2
chore: remove build folder 2023-08-16 14:17:33 -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
Pi Lanningham 0d99afe5e2 Cargo fmt 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
microproofs 6254eeb2ed add acceptance test 88 2023-08-07 12:02:44 -04:00
microproofs f7d278a472 fix: 2 acceptance tests were throwing errors due to exhaustiveness checker 2023-08-07 12:02:44 -04:00
microproofs 36c80f36c1 fix tests 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
rvcas 2253e29d42
chore: commit acceptance test plutus files 2023-07-17 17:34:00 -04:00
rvcas 0be09cd9e5 chore: use fmt to update examples 2023-07-12 09:16:37 -04:00
KtorZ 2a747305f7
Fixes evaluation of large positive bigint in the UPLC machine
Fixes #511.
2023-07-05 18:52:14 +02:00
microproofs 67c072a1a9 test: add acceptance test 86
fix: prevent mutual recursion for expect type code gen functions
2023-07-04 12:24:25 -04:00
microproofs 8b3504e9a1 fix: `expect _ = ...` not including the cast from data logic if the type is data and right hand has a type annotation 2023-06-23 18:39:12 -04:00
microproofs 226556bdd6 fix: builtins using the incorrect data to type conversion when used as a function param. 2023-06-23 14:31:19 -04:00
microproofs db369da96e feat: Make traces produced by expect dependent on
the value of the tracing flag.
2023-06-23 14:03:23 -04:00
microproofs dbfa08a5a7 fix: issue with tuple clause
It was not consuming the next case if there was no condition being checked in the clause.
Now it properly always consumes the next clause unless last clause.
2023-06-23 12:36:15 -04:00