Commit Graph

304 Commits

Author SHA1 Message Date
microproofs 6b04a78e78
Removing unneeded Air terms and reduce by about 800 lines 2024-11-01 19:34:54 -04:00
microproofs 1bc15f78ea
Finished up remaining touches to the implementation. Now I need to finish unit tests and add a few more 2024-11-01 19:34:54 -04:00
microproofs 27bf40260e
Fix pairs not being unwrapped when wrapped as fields 2024-11-01 19:34:53 -04:00
microproofs 6e94d502a7
Fix more tests and issues 2024-11-01 19:34:53 -04:00
microproofs 7655a6ecbe
Fix test issues 2024-11-01 19:34:52 -04:00
microproofs b4d142ca9d
Fix assigns sometimes having free uniques 2024-11-01 19:34:52 -04:00
microproofs fa203ba9a2
Done with list pattern translation. Now to fix up tests 2024-11-01 19:34:52 -04:00
microproofs 8591bedc1e
Finish up list pattern translation to air 2024-11-01 19:34:52 -04:00
microproofs 1a15440d24
Checkpoint for today 2024-11-01 19:34:52 -04:00
microproofs 9dbe66bc0c
Producing uplc now. Just need to finish ListSwitch 2024-11-01 19:34:51 -04:00
microproofs 342676f530
Continue work on integrating the decision tree into code gen 2024-11-01 19:34:51 -04:00
microproofs 61184fbb86
Use Stick breaking set to track previously encountered values for each DecisionTree switch case 2024-11-01 19:34:51 -04:00
microproofs 5eac774443
Commit latest changes so far 2024-11-01 19:34:50 -04:00
microproofs 97ee1a8ba6
Start working on using a decision tree for when expr. Also fmt fix. Other Stuff 2024-11-01 19:34:45 -04:00
microproofs 5fd349f571
Remove an unused opcode 2024-10-08 20:32:56 -04:00
microproofs 5d4b3e69b9
Revert "Start working on using a decision tree for when expr. Also fmt fix"
This reverts commit e8f74985d5.
2024-10-08 13:33:05 -04:00
microproofs e8f74985d5
Start working on using a decision tree for when expr. Also fmt fix 2024-10-08 13:30:29 -04:00
microproofs 5fe6e3f77b
Finish simplification changes 2024-10-01 15:57:54 -04:00
microproofs c6c5cddead
Fix ordering of params on standard functions 2024-10-01 13:32:27 -04:00
microproofs 2bbc699a25
Refactor some code to make a define_const AirTree function 2024-10-01 13:32:27 -04:00
microproofs 18e79db4b2
Fix edge case with traces off and usage of softcast and hardcast on the same type 2024-09-19 22:29:19 -04:00
microproofs 16e222e997
Clippy fixes 2024-09-12 19:34:40 -04:00
microproofs 3f2de2665d
Clippy fixes 2024-09-12 19:13:31 -04:00
microproofs 362ca2544f
Fixed remaining issue when all parameters passed in to a recursive function were static.
Also fixed issue where modifying the calls in the airtree lead to an out of bounds index.
2024-09-12 17:03:48 -04:00
microproofs 30e66be568
Fix soft casting case 2024-09-12 17:03:48 -04:00
microproofs 49ef3a740c
Cargo tests now pass 2024-09-12 17:03:48 -04:00
microproofs 7c52094b15
Making progress on using interning in gen_uplc
Done interning for uniqueness. Now to fix the static optimization

Remove unused function

Fixing issues. Have a few remaining tests
2024-09-12 17:03:36 -04:00
microproofs 2be76d7cda Use Delay error directly when casting from data without traces 2024-09-03 16:21:53 -04:00
KtorZ 53af366b59
Ensure uniqueness of intermediate variables in expect_type_assign
For recursive structures like Tuples, the span itself isn't enough to
  ensure uniqueness of elements (in particular tuples) holding elements
  of the same type.
2024-09-01 18:10:15 +02:00
KtorZ ef89691331
Ensure code-gen's Program version/semantic matches Plutus version 2024-08-30 14:45:02 +02:00
microproofs e772ff1787
Missed some zero parameter check 2024-08-29 16:30:30 +02:00
microproofs f674f9ee97
hoist functions to super constants too 2024-08-29 16:24:14 +02:00
KtorZ cd0a9440e8
Allow any expression as constants
This is only a start. It compiles, but with a few TODOs left open. In particular, it doesn't currently handle constants depending on other constants or functions; nor does it hoist constants.
2024-08-29 16:24:12 +02:00
KtorZ 0510ca58f7
Implement record access syntax for validator handlers.
This is a little trick which detects record access and replace them
  with a simple var. The var itself is the validator handler name,
  though since it contains dots, it cannot be referred to by users
  explicitly. Yet fundamentally, it is semantically equivalent to just
  calling the function by its name.

  Note that this commit also removes the weird backdoor for allowing
  importing validators in modules starting with `tests`. Allowing
  validators handler to be used in importable module requires more work
  and is arguably useful; so we will wait until someone complain and
  reconsider the proper way to do it.
2024-08-27 17:16:15 +02:00
KtorZ d74e36d0bc
Introduce 'Never' type as a safe alternative to always None options
Unfortunately, as documented in:

  https://github.com/IntersectMBO/cardano-ledger/issues/4571

  Some Option fields in the script context certificates are going to
  remain set to None, at least until the next Hard fork. There's a risk
  that people permanently lock their funds if they expect deposits on
  registration credentials to ever be `Some`.

  So, we introduce a special type that emulate an `Option` that can only
  ever be `None`. We call it `Never` and it is the first type of this
  kind (i.e. with constructors indexes not starting at 0).
2024-08-27 14:40:39 +02:00
KtorZ 442010d056
Fix generation of fallback validator
This must only happen in case all other validator succeed; otherwise
  we might generate invalid validators.
2024-08-25 16:20:08 +02:00
KtorZ f9acbd3bcb
DRY handlers generation from validator 2024-08-25 16:20:07 +02:00
KtorZ 6a6bf6f65f
Handle (though discard) first script purpose argument of publish and propose. 2024-08-25 16:20:07 +02:00
KtorZ fe205e360f
Update remaining script context e2e tests. 2024-08-25 16:20:06 +02:00
KtorZ 7ec3f2e8df
DRY builtins types creation to ensure proper consistency. 2024-08-25 16:20:06 +02:00
rvcas 5b61a75088
feat: handler withdraw purpose 2024-08-25 16:20:06 +02:00
microproofs f86d550ca0
Fix type for mint scriptinfo 2024-08-25 16:20:06 +02:00
rvcas b9456b5946
fix: wrap_validator_condition needs to happen earlier 2024-08-25 16:20:05 +02:00
rvcas 79099675d4
fix: free unique on purpose arg 2024-08-25 16:20:05 +02:00
KtorZ 972e9bd763
Define ScriptPurpose & ScriptContext types in prelude, fix codegen new v3 wrapper. 2024-08-25 16:20:04 +02:00
rvcas 7f26db401c
feat: handler implicit some and none 2024-08-25 16:20:03 +02:00
rvcas 0d8d80e5a7
feat: transform TypedValidator in a function of handlers 2024-08-25 16:20:03 +02:00
microproofs 0800901135 Fix clippy 2024-08-08 00:39:44 -04:00
microproofs 51fd503317 warning fix 2024-08-08 00:39:44 -04:00
microproofs 0a1992acd2 Run acceptance tests 2024-08-08 00:39:44 -04:00