Commit Graph

105 Commits

Author SHA1 Message Date
microproofs 1075be1b71
Minor fix to optimization to actually detect vars that are just forced builtins 2025-01-17 11:34:41 +07:00
microproofs 91b6e6da31
Oops left a todo 2025-01-16 09:33:59 +07:00
microproofs ade50dd462
Clippy fix 2025-01-15 18:28:41 +07:00
microproofs a9bedda5ed
Update script context handler to do less work with only fallback. Also optimize wrapped builtins too. 2025-01-15 18:27:43 +07:00
microproofs 6d2e38851e
Push down functions that aren't dependent on the group in front. 2025-01-12 00:39:04 +07:00
microproofs 09ddec6b41
New optimization to split independent lam function applications to enable case constr to optimize further 2025-01-11 19:09:00 +07:00
microproofs d559e384ec
Handle case where write_bits is used without being applied 2025-01-11 19:08:43 +07:00
microproofs e437d70ae2
Clippy fix 2025-01-11 19:08:42 +07:00
microproofs a3a3185e5e
Conformance tests should be using NamedDebruijn comparisons not name. Also no inline remover needs to run separately from other uplc transformations 2025-01-11 19:08:42 +07:00
microproofs f7f68fbafc
Add writeBits back in and use the optimizer to utilize the list conversion 2025-01-11 19:08:42 +07:00
microproofs 19d0ec23cf
Oops did wrong comparison check on number of consecutive applies 2025-01-11 19:08:42 +07:00
microproofs 7462f1d52f
DecodeUtf8 is not error safe 2025-01-11 19:08:42 +07:00
microproofs 2c214186b6
Make sure clean up doesn't add case and constr to comp time eval. Also had fun with test_1 mint script context validator 2025-01-11 19:08:42 +07:00
microproofs 33392f1532
Add case constr for applies greater than 2 optimization 2025-01-11 19:08:41 +07:00
microproofs c1ed0dcbb5
Remove some prints and switch an uneeded isize to usize since it can't be negative 2025-01-11 19:08:41 +07:00
microproofs 19b4b9df0f
Inline now handles (if cond then body else error) patterns.
This allows conditions like ```expect x == 1``` to match performance with ```x == 1 && ...```

Also change builtins forcing to accommodate the new case-constr apply optimization
2025-01-11 19:08:41 +07:00
microproofs 463b88413e
feat: new builtins constr_index and constr_fields for alternative fast ways to take apart Data 2024-12-13 14:15:19 +07: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
microproofs eb37ed0da5
Clippy fix 2024-09-20 13:47:56 -04:00
microproofs fa2aa0a3e8
When we find bls constants in UPLC convert them to their a hoisted compressed form with an uncompress call 2024-09-20 12:31:36 -04:00
KtorZ ff4a480242
Upgrade pallas to v0.0.29, and start support for simulating transactions carrying Plutus v3 scripts. 2024-08-13 10:55:22 +02:00
microproofs 0be5229f1c Only 2 errors and todos left to finish 2024-08-08 00:39:44 -04:00
microproofs c286ada08d
clippy fix 2024-07-24 11:29:55 -04:00
microproofs dfce9c1d96
feat: Add multivalidator as an AIR tree opcode.
feat: Add uplc eval optimization
2024-07-24 10:00:08 -04:00
microproofs 4bd9125b86 Fix delay of arguments to be exactly the same as codegen tests 2024-06-25 18:50:00 -04:00
hade ad3c9f24b7
chore: minimal pallas dependencies 2024-05-30 15:09:05 +07:00
microproofs 3d06129d9b add test for curry optimization that is a reduced case of #945 2024-05-22 15:46:32 -04:00
microproofs d6cc450ce4 The actual issue with #945 is that the curry builtin reducer could sometimes place fully applied builtins that could evaluate and fail above where they were actually used. This happened with builtins that were called with the same constants enough times for the curry builtin to try hoist to a higher scope. This is now fixed by detecting which builtins are safe to evaluate in advance before we hoist fully applied builtins 2024-05-22 15:22:31 -04:00
microproofs c16bd06e97 make sure traverse_uplc_with_helper is always passing the arg to lambda before running the with function.
Breaks #945 again
2024-05-22 11:58:05 -04:00
microproofs 489eff7f5b Closes #945
Switch to depth first optimization passes instead of breadth first for inlining. Need to think more on how to do breadth first optimization passes
2024-05-21 17:12:57 -04:00
microproofs 945a3f743b feat: builtin wrapper reduction optimization 2024-04-26 19:24:04 +02:00
microproofs 21b1e29f09 chore: clippy fix 2024-03-27 16:39:52 -04:00
microproofs 94f383762c step up the optimizations a bit more by inlining a small function 2024-03-08 00:12:44 -05:00
microproofs 1edd1a1fa3 change currying to happen with 3 or more occurrences 2024-03-08 00:12:44 -05:00
microproofs e9122de061 more identity reduce testing 2024-03-08 00:12:44 -05:00
microproofs dabaae8ca6 more identity and inline tests 2024-03-08 00:12:44 -05:00
microproofs 97b0cf6813 reorganize shrinker tests 2024-03-08 00:12:44 -05:00
microproofs eb709d6fc3 reorder tests to match order of functions 2024-03-08 00:12:44 -05:00
microproofs 2bc433f61e fix: need to use temp_term for counting var occurrences in identity reducer
chore: Adding more shrinker tests and fixed some of the existing ones
2024-03-05 12:08:18 -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 d971d9818b update tests and ensure identity reducer handles no_inline lambda 2024-03-04 10:52:56 -05:00
microproofs af6c107187 remove unneeded assert 2024-03-04 10:52:56 -05:00
microproofs 06ca22c26a update inliner to handle no_inline functions 2024-03-04 10:52:56 -05:00
microproofs 4e928f39db start adding no inline flag to functions 2024-03-04 10:52:56 -05:00
microproofs 2aaa46e54c remove print 2024-03-04 10:52:56 -05:00
microproofs c6ef37cc5c checkpoint 2024-03-04 10:52:56 -05:00
microproofs 4e0aaf970f update tests and fix final unique issues 2024-03-04 10:52:56 -05:00
microproofs 62963f7fc2 feat: finish curry optmization, improve inline optimization further, and add a subtract integer to add integer conversion 2024-03-04 10:52:56 -05:00
microproofs 7d8fdc0f22 prevent curried function hoisting if occurrences is 0 2024-03-04 10:52:56 -05:00
microproofs 258b5abf23 now currying works 2024-03-04 10:52:56 -05:00