Commit Graph

130 Commits

Author SHA1 Message Date
Pi Lanningham
0d99afe5e2 Cargo fmt 2023-08-07 19:00:39 -04:00
microproofs
65984ed15b fix: move where we call the with in traverse_tree_with 2023-08-07 19:00:39 -04:00
Pi Lanningham
dba0e11ba7 Add other shadowing cases 2023-08-07 19:00:39 -04:00
Pi Lanningham
fc948f0029 Add the same optimization to dependent functions
I originally didn't add this because I thought this was mutually
recursive functions, which I couldn't picture how that would work;

I refactored all this logic into modify_self_calls, which maybe needs a
better name now.

Perf gain on some stdlib tests (line concat tests) is 93%!!
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
Pi Lanningham
09f889b121 Add codegen for recursive statics case
We also flip the recursive_statics fields to recursive_nonstatics; This makes the codegen a little easier.  It also has a hacky way to hard code in some recursive statics for testing
2023-08-07 19:00:39 -04:00
Pi Lanningham
586a2d7972 Add recursive_static_params to AIR
Any methods to a recursive function that are unchanged and forwarded
don't need to be applied each time we recurse; instead, you can
define a containing lambda, reducing the number of applications
dramatically when recursing
2023-08-07 19:00:39 -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
microproofs
a45ff692a6 last changes for today 2023-08-07 12:02:44 -04:00
microproofs
aca79bd728 remove warning 2023-08-07 12:02:44 -04:00
microproofs
3189a60bdb fixes to how we sort dependencies.
Also update dependency path based on a functions path.
2023-08-07 12:02:44 -04:00
microproofs
80b950b8aa fix edge case with assign and pattern matching 2023-08-07 12:02:44 -04:00
microproofs
5aecb96668 constants are back. I had broke them when switching how data casting works 2023-08-07 12:02:44 -04:00
microproofs
0b8266dfd1 some type conversion fixes 2023-08-07 12:02:44 -04:00
microproofs
4e3ced5b75 fix and clean up tests and handle
one edge case on rearrange clauses
2023-08-07 12:02:44 -04:00
microproofs
03dd13dc7d fixing list condition edge cases and clean up rearrange list clauses 2023-08-07 12:02:44 -04:00
microproofs
e8fa8f5423 fixing list clause issues 2023-08-07 12:02:44 -04:00
microproofs
c6f90a999b checkpoint 2023-08-07 12:02:44 -04:00
microproofs
dcb3a9b45b some type and expect fixes 2023-08-07 12:02:44 -04:00
microproofs
52ebc9b6c1 some more fixes 2023-08-07 12:02:44 -04:00
microproofs
58b327e5b3 fixing bugs and edge cases 2023-08-07 12:02:44 -04:00
microproofs
960a15c4ec checkpoint - fixing tests and stuff 2023-08-07 12:02:44 -04:00
microproofs
72b6f0f847 all but six tests passing 2023-08-07 12:02:44 -04:00
microproofs
6eeb282dee Now code gen is finished and we just have testing 2023-08-07 12:02:44 -04:00
microproofs
518bea5be4 feat: fixed up generate and generate test
last step is checking on uplc code gen
2023-08-07 12:02:44 -04:00
microproofs
18ea44adb0 chore: rename unwrapData and wrapData
add validator cast function for extra validator params
2023-08-07 12:02:44 -04:00
microproofs
55dd1a1a56 out with the old code and in with the air tree 2023-08-07 12:02:44 -04:00
microproofs
9704cafefe a checkpoint for function hoisting start and type fix 2023-08-07 12:02:44 -04:00
microproofs
fd83c9a739 feat: fix up generic type functions to work with the new air tree functions
chore: remove commented code
2023-08-07 12:02:44 -04:00
microproofs
c025073056 fix: List clauses were destructuring the next element unnecessarily
feat: finish nested constructor clauses
2023-08-07 12:02:44 -04:00
microproofs
f94c8213b6 checkpoint 2023-08-07 12:02:44 -04:00
microproofs
0854d71836 chore: another checkpoint and renamed ClauseProperties fields 2023-08-07 12:02:44 -04:00
microproofs
d731757123 feat: start on clauses in when conditions
**checkpoint**
2023-08-07 12:02:44 -04:00
microproofs
ba3265054c chore: move tree to gen_uplc2 and create a duplicate air file without scope 2023-08-07 12:02:44 -04:00
microproofs
7cee9a4d15 chore: move assignment_air_tree and expect_type to gen_uplc
feat: add is_primitive check to types
2023-08-07 12:02:44 -04:00
microproofs
cd726b561e feat: add removal of discard lets
chore: Name change for AirTree sequence
feat: finish up assignment  constructor and list for airtree builder
2023-08-07 12:02:44 -04:00
microproofs
59362e3d8c feat: almost done assignment have tuple and constr left
feat: modified the AirTree structure to have statements, sequences, and expressions
feat: changed the hoist_over function to be universal
2023-08-07 12:02:44 -04:00
microproofs
65bb7e48e2 feat: start on build assignment
feat: implement assignment hoisting
2023-08-07 12:02:44 -04:00
microproofs
c359bd35d7 feat: update tree to allow for let hoisting
feat: start on build for when expressions
feat: add builder methods for AirTree
2023-08-07 12:02:44 -04:00
microproofs
83ade9335f feat: implement most of airtree build 2023-08-07 12:02:44 -04:00
microproofs
5e097d42ba feat: add AirTree types and builder functions 2023-08-07 12:02:44 -04: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
db369da96e feat: Make traces produced by expect dependent on
the value of the tracing flag.
2023-06-23 14:03:23 -04:00
microproofs
626033ff9b fix: attempt to convert from opaque before doing monomorphization 2023-06-22 18:20:31 -04:00
microproofs
bfd2a50a6b fix: zero arg functions were grabbing extra dependencies they didn't need to
fix: Had the wrong conversion for constant maps to plutus data. Fixed to check for right conversion
2023-06-04 15:23:36 -04:00
rvcas
cf6d04e95b chore: some clippy warnings 2023-06-02 19:47:52 -04:00
microproofs
8f0cf289b4 fixes:
fix: rearrange clauses and fill in gaps now handles nested patterns in a uniform way
fix: discards in records was being sorted incorrectly leading to type issues
chore: remove some filter maps in cases where None is impossible anyway
chore: some refactoring on a couple functions to clean up
2023-06-02 18:38:21 -04:00
microproofs
4838ebd39e feat: record modules are no longer unimplemented for no fields
refactor: remove some clones and use a ref instead
test: add acceptance test 81
2023-05-14 18:30:51 -04:00
microproofs
49898f7420 fix: to_data_builtin to operate on arg not func result 2023-05-08 16:15:09 -04:00
microproofs
b36cf1c029 chore: refactor default functions in uplc_code_gen.
feat: Add an identity optimization to remove functions that return the argument only.
2023-05-08 16:15:09 -04:00