Commit Graph

1142 Commits

Author SHA1 Message Date
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
KtorZ
fafb89d838 Prevent ANSI colors & styles to appear in JSON output. 2024-11-13 12:52:12 +01:00
microproofs
e87d7a1101 Fixing unit tests 2024-11-01 19:34:57 -04:00
microproofs
d39d70a5d8 More clippy fix 2024-11-01 19:34:56 -04:00
microproofs
1227a8a7db Clippy fix 2024-11-01 19:34:55 -04:00
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
a4aaf4d2d7 Last issue from acceptance tests 2024-11-01 19:34:53 -04:00
microproofs
27bf40260e Fix pairs not being unwrapped when wrapped as fields 2024-11-01 19:34:53 -04:00
microproofs
25e4b42cd0 Fix more tests and issues 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
753b41dc99 Done with hoisting. Now to use it in gen_uplc. I hate RcDoc btw :'/ 2024-11-01 19:34:50 -04:00
microproofs
9601c1034b Leave todo message for tomorrow 2024-11-01 19:34:49 -04:00
microproofs
7966cc0165 Finish up decision tree and rework it a bit to closely follow how the paper handles wild card patterns 2024-11-01 19:34:48 -04:00
microproofs
3b3fcb666f Finish with adding constrs 2024-11-01 19:34:48 -04:00
microproofs
ecf4592be1 Pass in interner and data types map into decision tree builder 2024-11-01 19:34:47 -04:00
microproofs
64f7886b23 Finished up creating the decision tree for lists. Only constr left. 2024-11-01 19:34:47 -04:00
microproofs
b340de2cfd Incremental commit for dealing with list tails 2024-11-01 19:34:47 -04:00
microproofs
ca161d8a68 Continue work on handling lists with tails pattern matching 2024-11-01 19:34:46 -04:00
microproofs
def268d966 Now working for all kinds of patterns except for constr 2024-11-01 19:34:46 -04:00
microproofs
9369cbc1a3 Remove some warnings 2024-11-01 19:34:46 -04:00
microproofs
43e859f1ba Rework Decision Trees to use path to find the subject to test 2024-11-01 19:34:46 -04:00
microproofs
20385a7ecd Handle tuples and pairs properly now 2024-11-01 19:34:45 -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
KtorZ
2489e0fdd0 Fix aiken docs constant generation
Fixes #1048.
2024-10-29 14:15:31 +01:00
KtorZ
93d0191489 Fix latest clippy warnings. 2024-10-25 11:27:28 +02:00
microproofs
a7741ec286 chore: Release 2024-10-19 13:45:54 -04:00
KtorZ
4b95db4f88 Fix data-type reification from Void 2024-10-19 10:50:44 +02: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
356d845a9a chore: Release 2024-10-01 16:14:25 -04:00
microproofs
c8731c98c7 Remove prints 2024-10-01 16:09:44 -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
KtorZ
e8d97028ad Prevent constant evaluating to generic/unbound functions
Constants are like tiny programs, so they are bound by the same rules
  as validators and other programs. In fact, functions are slightly more
  flexible in that they allow generic constant expressions like
  `List<a>`.

  Yet, there is no way to contain such generic structure that contain
  inhabitants in a way that satisfies the type-checker. In the example
  of `List<a>`, the only inhabitant of that type that we can construct
  is the empty list. Anything else would require holding onto some
  generic value.

  In addition, we can't force literal values into generic annotation, as
  something like:

  ```
  const foo: List<a> = [1, 2, 3]
  ```

  wouldn't type-check either since the right-side would unify to
  `List<Int>`. And again, the only right-hand side that can type-check
  is the empty list without any inhabitant.

  The added restriction on generic function is necessary because while
  we allow constants to return lambda, we cannot (easily) generate UPLC
  that is generic in its argument. By the time we generate UPLC, the
  underlying types have to be known.
2024-10-01 18:37:40 +02:00
KtorZ
0060804d1a Fix redundant warning when destructuring validator params
This is not a "proper" fix as it simply get rid of the warning
  altogether (whether you use or not the destructured values).

  The reason for removing the warning entirely is because (1) it's
  simpler, but more so (2) there's no impact on the final code produced
  _anyway_. Redundant let bindings are already removed by the compiler;
  and while it's an implicit behaviour that requires a proper warning
  when it's coming from a user-defined assignment; here the redundant
  assignment is introduced by the compiler to begin with as another
  implicit behavior!

  So we have an implicit behaviour triggering a warning on another
  implicit behaviour. Truth is, there's no impact in having those
  parameters destructured and unused. So since users are already not
  aware that this results in an implicit let assignment being inserted
  in place for them; there's no need for the warning at all.
2024-10-01 13:17:00 +02:00