rvcas
58d98b3325
fix(uplc): parser should accept single quote in var name and comments
2023-11-15 15:55:56 -05:00
rvcas
b6f6064aaf
test: add all plutus conformance tests
2023-11-15 15:55:56 -05:00
rvcas
b80db2f7f8
fix(bls): wrong types for equals functions
2023-11-15 15:55:56 -05:00
rvcas
d53d2665b2
test(bls): g1 and g2 formatting
2023-11-15 15:55:56 -05:00
rvcas
c910e0054e
test(bls): constant parsing tests
2023-11-15 15:55:56 -05:00
rvcas
7073fd29b3
test(bls): literal parsing tests
2023-11-15 15:55:56 -05:00
microproofs
8b89ba3b93
feat: implement bls primitives in code gen
2023-11-15 15:55:56 -05:00
microproofs
d51374aac1
feat: add conversion to data and from data for new primitive types
2023-11-15 15:55:56 -05:00
rvcas
3675762c3e
feat(bls): aiken level g1 and g2 literals
2023-11-15 15:55:56 -05:00
rvcas
90aea6476a
feat: uplc g1 and g2 literal parsing
2023-11-15 15:55:56 -05:00
rvcas
6ce85e1662
fix: add keccak to TryFrom<u8>
2023-11-15 15:55:56 -05:00
rvcas
49ae8152f8
feat(bls): add new aiken level builtins
2023-11-15 15:55:56 -05:00
rvcas
8a3a465237
feat(bls): add new types to aiken prelude
2023-11-15 15:55:56 -05:00
rvcas
cdcd8172e6
feat(bls): pretty print mlresult type
2023-11-15 15:55:56 -05:00
rvcas
318ae6aad4
feat(bls): finish cost model
2023-11-15 15:55:56 -05:00
rvcas
5243c36ed6
feat(bls): add default costs for the new functions
2023-11-15 15:55:56 -05:00
microproofs
18db1c394a
feat: Implemented builtin semantic versioning
...
feat: impl flat serialization and deserialization for bls constants
feat: started on cost models for the new builtins
Co-authored-by: rvcas <x@rvcas.dev>
2023-11-15 15:55:56 -05:00
rvcas
f101581813
feat(bls): pretty printing for g1 and g1 element
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-11-15 15:55:56 -05:00
microproofs
0d2ac952d0
feat: implemented the Bls381-12 builtins and types
...
also implemented Keccak256 and Blake2b_224
TODO: cost model, flat serialization, pretty
Co-authored-by: rvcas <x@rvcas.dev>
2023-11-15 15:55:56 -05:00
microproofs
446ef11606
chore: finishing acceptance test 29
...
and updating acceptance test lock files
2023-11-08 14:31:44 -05:00
microproofs
d50fb99b75
feat: add acceptance tests 28-30
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
2f694b01cb
chore: use insta snapshot for blueprint validator tests
2023-11-06 15:37:04 -05:00
microproofs
4eebd4628b
chore: fix comment
2023-11-06 15:37:04 -05:00
microproofs
7427bac4a0
chore: remove unused code
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
49bd4ba33d
chore: Release
2023-10-25 19:00:03 -04:00
microproofs
4dd17dacf3
chore: rename uplc builder builtins
2023-10-22 17:08:48 -04:00
waalge
3e283a59ec
Split off builtin function builders
...
- sort alphabetically
- add some of the missing builtins used for ints
- comment on what is "correct" for future additions
- comment on the current remaining missing builtins
- comment on the current incoherent method names
2023-10-22 17:08:48 -04:00
KtorZ
46c58dbd61
Implement quickfixes for redundant imports.
2023-10-22 00:29:09 +02:00
KtorZ
28b699c86a
Merge unused imported constructors and unused imported type with unused imported value
...
This was somewhat weirdly done, with a boolean 'imported' set on the
formers; but an explicit new warning for values. I don't see the point
of distinguishing them so I just merged them all into a single
warning.
I have however preserved the 'UnusedType' and 'UnusedConstructor'
warnings since they were ALSO used for unused private constructors or
types.
2023-10-22 00:27:33 +02:00
KtorZ
5f8e256050
Present aiken-lsp & fill-in CHANGELOG
2023-10-21 21:39:30 +02:00
KtorZ
17832fc5af
Fix clippy warnings: remove redundant closures & guards.
2023-10-21 21:27:31 +02:00
KtorZ
c0513da032
Add quickfix for unknown constructors.
2023-10-21 14:24:47 +02:00
KtorZ
f6eff7ec58
Fix incoherent 'UnknownVariable' being returned in type-check
...
I initially removed the 'UnkownTypeConstructor' since it wasn't used anywhere and was in fact dead-code. On second thoughts however, it is nicer to provide a slightly better error message when a constructor is missing as well as some valid suggestion. Prior to that commit, we would simply return a 'UnknownVariable' and the hint might suggest lowercase identifiers; which is wrong.
2023-10-21 14:10:45 +02:00
KtorZ
5986163ba7
Add quickfix for unknown alias & data types.
2023-10-21 13:57:06 +02:00
KtorZ
d965467a53
Fix insertion of unqualified import when first
...
I previously missed a case and it causes qualified imports to be added at the end if they are lexicographically smaller than ALL other qualified imports. No big deal, but this is now fixed.
2023-10-21 13:56:15 +02:00
KtorZ
c550b4766d
Implement quickfix for 'UnknownModule'.
2023-10-21 12:59:48 +02:00
KtorZ
e48ac6b592
Relocate and refactor quickfix code into its own module
...
We're going to have more quickfixes, to it's best not to overload the
'server' module. Plus, there's a lot of boilerplate around the
quickfixes so we might want to factor it out.
2023-10-21 12:00:58 +02:00
KtorZ
763516eb96
Refactor and relocate document edits function for imports.
...
It's a bit 'off-topic' to keep these in aiken-lang as those functions are really just about lsp. Plus, it removes a bit some of the boilerplate and make the entire edition more readable and re-usable. Now we can tackle other similar errors with the same quickfix.
2023-10-21 11:31:01 +02:00
KtorZ
699d0a537c
Use (untyped) AST to find the right insert location for imports.
...
This removes the need to rely on the formatter to clear things up
after insert a new import. While this is not so useful for imports, I
wanted to experiment with the approach for future similar edits (for
example, when suggesting an inline rewrite).
2023-10-21 10:43:00 +02:00
KtorZ
66ade8e3e3
Implement simple code action quickfix for unknown variable.
2023-10-20 18:01:07 +02:00
KtorZ
c4221730bf
Define 'ExtraData' trait for errors
...
This should allow passing some extra information to LSP diagnostic in order to provide quickfix actions, such as auto-imports.
2023-10-20 18:00:12 +02:00
KtorZ
41e26b216b
Some LSP improvements regarding hovering
...
- Resolve module select properly
- Add some type annotations to _some patterns_ such as assignments
2023-10-19 20:04:10 +02:00
rvcas
e5801f9c19
feat: support doc comments for functions args and validator params
...
- Add support to the formatter for these doc comments
- Add a new field to `Arg` `doc: Option<String>`
- Don't attach docs immediately after typechecking a module
- instead we should do it on demand in docs, build, and lsp
- the check command doesn't need to have any docs attached
- doing it more lazily defers the computation until later making
typechecking feedback a bit faster
- Add support for function arg and validator param docs in
`attach_module_docs` methods
- Update some snapshots
- Add put_doc to Arg
closes #685
2023-10-16 13:38:23 -04:00
rvcas
10b9dc2042
chore: remove unused constants
2023-10-13 16:56:03 -04:00
microproofs
596ce49327
fix: mixed up operators for ConstAboveDiagonal and ConstBelowDiagonal
...
Closes #618
2023-10-13 11:40:07 -04:00
rvcas
e8bcbecf31
chore: avoid cloning name
2023-10-12 17:50:44 -04:00
rvcas
55f89a7ff4
fix: incorrect 'unused::constructor'
...
`ExprTyper` was not incrementing the usage of a constructor
when infering `RecordAccess`.
closes #554
2023-10-12 17:44:57 -04:00
rvcas
52dfc13f8f
chore: explain a weird if condition
2023-10-12 17:24:11 -04:00
microproofs
c764a6f99c
fix: reset option should not reset special functions in only a multivalidator
2023-10-07 19:42:24 -04:00
microproofs
4649a5a9d2
fix: don't reset the used special functions
2023-10-07 19:42:24 -04:00
microproofs
8964675670
feat: Add tracing for common multivalidator issues
2023-10-07 19:42:24 -04:00
microproofs
a86f08c6d1
update tests for new trace reduction
2023-10-07 19:42:24 -04:00
microproofs
7a6ddc45a0
feat: Rework codegen traces to prevent repeated messages from taking up uplc script space
2023-10-07 19:42:24 -04:00
microproofs
44021cde19
Detect when fields_expose is unnecessary in clause_pattern
2023-10-07 19:42:24 -04:00
microproofs
9335522df4
Make change @ktorz suggested
2023-10-07 19:42:24 -04:00
microproofs
98cb01413b
chore: prevent strings from being inlined and replicated
2023-10-07 19:42:24 -04:00
KtorZ
c2bf6e5682
Add missing keywords to documentation generator.
2023-10-06 14:46:34 +02:00
KtorZ
a524836c94
Add compiler version & system information to panic error message
...
So that we stop constantly asking people about it.
2023-10-06 14:46:11 +02:00
KtorZ
524d0dadf5
Add compiler's version to blueprint.
2023-10-06 14:17:55 +02:00
KtorZ
d56d5180cf
Move compile-time build info to aiken-project
...
So that we can use it as part of the blueprints.
2023-10-06 14:08:47 +02:00
microproofs
8a1c824dd7
chore: add specific error for when the validator returns false
2023-10-04 11:08:22 -04: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
fb6cbbec8b
chore: Release
2023-09-29 22:08:09 -04:00
microproofs
add513790d
hotfix: cyclic functions hoisted as a dependency used the wrong key to modify its own cyclic_calls
2023-09-29 22:01:43 -04:00
microproofs
82ceb5b696
chore: Release
2023-09-29 19:39:28 -04:00
microproofs
83f0dd2cbe
chore: fix blueprint validator tests
2023-09-29 17:47:39 -04:00
microproofs
fb2ca0e3e0
inline is actually cheaper in a lot of cases
2023-09-29 17:47:39 -04:00
microproofs
a2068ff062
fix: optmizer should never inline recursive functions
...
chore: some renames
2023-09-29 17:47:39 -04:00
microproofs
335560b81f
Add placeholders for new terms in optimize
...
Update tests to check optimization is applied properly
2023-09-29 17:47:39 -04:00
microproofs
5e2a78173b
optimization: increase the cases that inline_basic_reduce can handle
2023-09-29 17:47:39 -04:00
waalge
dbd4fe2aab
fix rust version
2023-09-28 13:30:34 -04:00
waalge
37ec2b121b
rev
2023-09-28 13:30:34 -04:00
waalge
3c11c95e01
insert into rust
2023-09-28 13:30:34 -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
1bcc9e8524
fix: expect on tuples from data now checks for no more items after the last
2023-09-26 12:49:50 -04:00
microproofs
1ca3499128
chore: rename type
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
2f80d07132
fix: minor stuff including fixing the var name used in modify_cyclic_calls
...
and carefully controling the functions we add to sorted dependencies
2023-09-25 21:16:19 -04:00
microproofs
f4310bcf33
feat: finished up mutual recursion
...
Now we "handle" vars that call the cyclic function.
That includes vars in the cyclic function as well as in other functions
"handle" meaning we modify the var to be a call that takes in more arguments.
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
microproofs
794fc93084
remove unused structs
2023-09-25 21:16:19 -04:00
microproofs
0b38855ce4
add new enum for hoistablefunctions
2023-09-25 21:16:19 -04:00
microproofs
ced818c455
checkpoint commit
2023-09-25 21:16:19 -04:00
microproofs
0fb9837ddf
chore: change UserFunction to HoistableFunction to prepare for mututal recursion
2023-09-25 21:16:19 -04:00
microproofs
74b8ab62b2
chore: add comments
2023-09-25 21:16:19 -04:00
microproofs
a4aa51ed2d
WIP: first part of mutual recursion is done.
...
This involves creating the function definition and detecting cycles.
The remaining part is to "fix" the call sites
of the mutually recursive functions
2023-09-25 21:16:19 -04:00
microproofs
5b018b7c07
test: add a test around a tuple of constructors when with many conditions
2023-09-20 16:20:42 -04:00
KtorZ
ee4001d2c8
chore: Release
2023-09-20 18:03:46 +02:00
KtorZ
f379039efc
Fix record shorthand causing parsing ambiguity in if/else expressions.
...
Fixes #735 .
2023-09-15 09:41:00 +02:00
rvcas
1dea348a2e
chore: rust rover error
2023-09-13 21:29:05 -04:00
rvcas
7b915b7dcf
chore: allow clippy::arc_with_non_send_sync in tests
2023-09-13 19:07:45 -04:00
rvcas
d808197507
chore: clippy fix
2023-09-13 18:17:59 -04:00
rvcas
9a4f181a0f
chore: clippy fix
2023-09-13 17:19:31 -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
KtorZ
15efeb3069
Remove unused code & data-type 'UseManifest'
...
If it's unused, it shall be gone. It obfuscate what functions are
doing and require managing extra complexity for no reason.
2023-09-13 17:17:32 -04:00
KtorZ
5381762e50
Rework logs around dependency fetching.
2023-09-13 17:17:32 -04:00
KtorZ
76ff09ba0e
Ensure that version resolution works offline
...
And so, even for unpinned package. In this case, we can't do a HEAD request. So we fallback by looking at what's available in the cache and using the most recently downloaded version from the cache. This is only a best effort as the most recently downloaded one may not be the actual latest. But common, this is a case where (a) someone didn't pin any version, (b) is trying to build on in an offline setup. We could possibly make that edge-case better but, let's see if anyone ever complains about it first.
2023-09-13 17:17:32 -04:00
KtorZ
87087a1811
Always check package status when version is not pinned
...
When the version isn't a git sha or a tag, we always check that we got
the last version of a particular dependency before building. This is
to avoid those awkward moments where someone try to use something from
the stdlib that is brand new, and despite using 'main' they get a
strange build failure regarding how it's not available.
An important note is that we don't actually re-download the package
when the case occurs; we merely check an HTTP ETag from a (cheap) 'HEAD'
request on the package registry. If the tag hasn't changed then that
means the local version is correct.
The behavior is completely bypassed if the version is specified using
a git sha or a tag, as here, we can assume that fetching it once it
enough (and that it can change). If a package maintainer force-pushed
a tag however, there may be discrepency and the only way around that
is to `rm -r ./build`.
2023-09-13 17:17:32 -04:00
KtorZ
3c3a7f2423
Define 'is_git_sha_or_version' to assert whether a version is 'immutable'
...
Best-effort to assert whether a version refers is a git sha digest or a tag. When it is, we
avoid re-downloading it if it's already fetched. But when it isn't, and thus refer to a branch,
we always re-download it. Note however that the download might be short-circuited by the
system-wide package cache, so a download doesn't actually mean a network request.
The package cache is however smart-enough to assert whether a package in the cache must be
re-downloaded (using HTTP ETag). So this is mostly about delegating the re-downloading logic to
the global packages cache.
2023-09-13 17:17:32 -04:00
KtorZ
65fb3a640a
Remove dead-code.
2023-09-13 17:17:32 -04:00
KtorZ
a72628a4dc
Auto-derive 'Debug' trait instance for types in deps
...
Actually useful to debug / troubleshoot things.
2023-09-13 17:17:32 -04:00
microproofs
a45001376d
fix: is_record was used incorrectly in code gen,
...
the real solution was to look up the datatype and check constructors length
2023-09-13 00:33:02 -04:00
microproofs
d042d55d42
fix clippy warnings in code gen
2023-09-12 21:25:05 -04:00
KtorZ
9782c094b7
Fix clippy suggestions.
2023-09-08 16:21:07 +02:00
KtorZ
8ba5946c32
Preserve escape sequence after formatting
...
Bumped into this randomly. We do correctly parse escape sequence, but
the format would simply but the unescaped string back on save. Now it
properly re-escapes strings before flushing them back. I also removed
the escape sequence for 'backspace' and 'new page' form feed as I
don't see any use case for those in an Aiken program really...
2023-09-08 12:12:15 +02:00
rvcas
6b70292dfb
chore: cargo fmt
2023-09-06 21:10:50 -04:00
rvcas
1de7b2866a
feat(cli): add --deny to build, check, and docs
...
This is useful for CI, where people that may have
a stricter workflow want to force CI to fail if any warnings
are detected.
2023-09-06 17:19:44 -04:00
microproofs
819a0a20e6
add tests for case and constr
...
Fix a minor issue with decoding order
2023-09-03 11:52:49 -04:00
microproofs
c9b01ab365
chore: fill in cost model
...
test: Add case and constr eval tests
2023-09-03 11:52:49 -04:00
microproofs
85901dc141
chore: update cost model with placeholders for new terms to pass tests
2023-09-03 11:52:49 -04:00
microproofs
40e1d39f8b
Add placeholders for cost model
2023-09-03 11:52:49 -04:00
microproofs
33d6d3049e
add compute for the new terms constr and case
2023-09-03 11:52:49 -04:00
microproofs
e566c4e1de
feat(uplc): add Case and Const terms
...
- parsering
- interning
- flat encoding and decoding
- pretty printing
- debruijn conversion
Co-authored-by: Lucas Rosa <x@rvcas.dev>
2023-09-03 11:52:49 -04:00
rvcas
dfe433ea46
fix: trim whitespace when loading hex strings from files closes #720
2023-08-31 18:22:09 -04:00
rvcas
437a95bfe8
fix: behave like rust with hyphens closes #722 closes #690
2023-08-31 18:00:21 -04:00
rvcas
dca09811c1
fix: empty records crashing code gen closes #728
2023-08-31 17:39:38 -04:00
rvcas
fb967d4c7b
fix: uplc formatter of Data closes #716
2023-08-31 17:20:48 -04:00
microproofs
51c44c6a30
fix: add an assert for better error messages when doing empty types
2023-08-30 13:50:37 -04:00
waalge
cd3a02416f
chore: rm unused pub function
2023-08-29 22:30:06 -04:00
waalge
756e16c14b
fix: rename assert to expect
2023-08-29 22:30:06 -04:00
microproofs
baa6917af5
Fix: Change type map length assert to check for greater than equals instead of equals to argument length
2023-08-29 21:59:15 -04:00
waalge
d4b9f22ac3
rm unnecessary mut
2023-08-26 16:30:44 +00:00
rvcas
b075d85b40
chore: Release
2023-08-24 15:05:12 -06:00
rvcas
a7062ccb88
chore: fix versions
2023-08-24 15:04:19 -06:00
rvcas
747e057d05
fix: tags
2023-08-24 15:00:09 -06:00
KtorZ
379368c530
Fix clippy.
2023-08-22 13:30:30 +02:00
KtorZ
2f0211a7b1
Bump all version manually because cargo workspaces didn't work.
2023-08-22 13:27:10 +02:00
KtorZ
780a61e3e8
Release 1.0.16-alpha
...
aiken@1.0.16-alpha
Generated by cargo-workspaces
2023-08-22 13:18:48 +02:00
KtorZ
7883aff5f7
revert 619b73d03e
...
There's really no scenario where we want to generate boilerplate that
always end up being removed. In particular, the boilerplate breaks
tutorial as it generate conflicting validators in the blueprint.
The only argument in favor of the boilerplate is to serve as example
and show people some syntax reminder. However, this is better done in
the README or on the user manual directly.
2023-08-22 12:59:36 +02:00
microproofs
89c55a23fa
chore: Release
2023-08-19 20:17:00 -04:00
microproofs
084b900b2a
change: traverse_with_tree now has a boolean to determine when with is called
...
fix: Opaque types are now properly handled in code gen (i.e. code gen functions, in datums/redeemers, in from data casts)
chore: add specific nested opaque type tests to code gen
2023-08-19 20:07:37 -04:00
KtorZ
139226cdab
Support interactive blueprint parameter application.
2023-08-19 13:39:39 -04:00
KtorZ
c1b8040ae2
Add helper for splitting a long line into multiple lines.
2023-08-19 13:39:39 -04:00
KtorZ
961e323c36
Enable iterating over validator's parameters with a callback
...
This is how we'll construct parameters interactively. We need to lookup the definition, and provide a data representation for it.
2023-08-19 13:39:39 -04:00
KtorZ
051e9a6851
Add some utility functions for displaying Term/PlutusData
...
This is useful with the blueprint stuff, where Term are often just plain PlutusData.
2023-08-19 13:39:39 -04:00
rvcas
690e41261e
chore: Release
2023-08-16 23:30:21 -04:00
rvcas
f5a49c4df4
fix: aliased import of single type throws compiler error closes #707
2023-08-16 23:15:51 -04:00
rvcas
2600937447
chore: cargo fmt
2023-08-16 22:56:22 -04:00
logicalmechanism
649039c993
tx simulate still need fee work
2023-08-16 22:37:00 -04:00
logicalmechanism
050c41c8dc
tx simulate returns a vector of exbudgets now
2023-08-16 22:37:00 -04:00
Ariady Putra
8cf92ce8ed
`aiken new`: Try to get the latest tag of stdlib
2023-08-16 22:30:15 -04:00
microproofs
c95f43ae07
add one more test
2023-08-16 21:59:25 -04:00
microproofs
20aa54b5ca
fix: last test fixed
2023-08-16 21:59:25 -04:00
microproofs
a45e04fd9b
fix: using the wrong var for pattern matching
2023-08-16 21:59:25 -04:00
microproofs
2456801b17
fix list clauses with guards and add more tests
2023-08-16 21:59:25 -04:00
rvcas
6ecb3f08b0
chore: default stdlib on new is 1.5.0
2023-08-16 13:24:10 -04:00
rvcas
0ff64e3bac
test: check and format tests for logical op chain
2023-08-15 09:58:35 -04:00
rvcas
e14d51600f
feat(format): logical op chain
2023-08-15 09:58:35 -04:00
rvcas
2c2f3c90fb
feat: new snapshots
2023-08-15 09:58:35 -04:00
rvcas
05eb281f40
chore: can safely remove this at this point
2023-08-15 09:58:35 -04:00
rvcas
e4ef386c44
feat(tipo): inference for and/or chains
2023-08-15 09:58:35 -04:00
rvcas
ab3a418b9c
feat(parser): add support for and/or chaining
2023-08-15 09:58:35 -04:00
microproofs
4a1ae9f412
set eval to public
2023-08-12 16:42:23 -04:00
microproofs
ca4a9fcd3d
chore: make eval function and SlotConfig public
2023-08-11 20:33:08 -04:00
microproofs
8af253e1df
chore: make slot_to_begin_posix_time a public function
2023-08-11 20:05:22 -04:00
microproofs
2f7784f31e
chore: update changelog
...
expecting a type on List<Data> from data now only checks that type is a list and not each element
2023-08-10 23:01:46 -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
microproofs
252f68de17
fix clippy
2023-08-07 19:08:18 -04:00
microproofs
367dabafb5
fix: update last 2 tests for new recursion optimization
2023-08-07 19:06:00 -04:00
Pi Lanningham
f464eb3702
Cargo fmt + clippy, with latest rust
2023-08-07 19:00:39 -04:00
Pi Lanningham
0d99afe5e2
Cargo fmt
2023-08-07 19:00:39 -04:00
microproofs
90c7753201
update tests for new recursion optmization
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
1d9878c5ee
fix: code gen tests now up to date using trace
...
fix: Formatter should take ErrorTerm and return "fail"
fix: fail with no reason should just return ErrorTerm
2023-08-07 12:02:44 -04:00
microproofs
624fdee9ea
keep traces in tests
2023-08-07 12:02:44 -04:00
microproofs
36c80f36c1
fix tests
2023-08-07 12:02:44 -04:00
microproofs
29599879b2
one minor tail fix in clause pattern
2023-08-07 12:02:44 -04:00
microproofs
6a1b2db698
use retain instead of position
2023-08-07 12:02:44 -04:00
microproofs
7bf22fa58b
fix multivalidator issue
2023-08-07 12:02:44 -04:00
microproofs
281a8363c0
fixes to tuples and usage of discard.
...
Also a fix to tail and its type in when list pattern matches
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
microproofs
a45ff692a6
last changes for today
2023-08-07 12:02:44 -04:00
microproofs
db79468435
remove old stuff
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
186e1235fd
checkpoint
2023-08-07 12:02:44 -04:00
microproofs
1ee7492f1f
fix tuple clause
2023-08-07 12:02:44 -04:00
microproofs
49a0a91103
fix tests again
2023-08-07 12:02:44 -04:00
microproofs
f5c7d222aa
optmization fix
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
02948616cd
some more fixes involving clauses
2023-08-07 12:02:44 -04:00
microproofs
a689b8748f
fix: working on minor edge cases
...
fix: zero arg function dependencies should not count as hoisted
fix: tuple index was receiving the wrong type
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
018453f6b1
fix expect on tuple type using the wrong internal type
2023-08-07 12:02:44 -04:00
microproofs
f03ed41e03
fix some unnecessary lambdas in assign
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
389699f485
fix to subject type for assignment on single clause
2023-08-07 12:02:44 -04:00
microproofs
dcb3a9b45b
some type and expect fixes
2023-08-07 12:02:44 -04:00
microproofs
3545bad3c4
fix typing to constr
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
2f4319f162
fix: tuples and list patterns had a few issues
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
02ce3761ae
final checkpoint
2023-08-07 12:02:44 -04:00
microproofs
8641c305f4
feat: airtree now hoists function. Now all that is left is finishing uplc gen
2023-08-07 12:02:44 -04:00
microproofs
5ad8b520fd
checkpoint
2023-08-07 12:02:44 -04:00
microproofs
5a51764cff
remove some warnings
2023-08-07 12:02:44 -04:00
microproofs
a099c01734
feat: add support for hoisting code gen functions
...
fix: code gen vars should be module functions
fix: missed a recursive call in do_find_air_tree_node under binop
2023-08-07 12:02:44 -04:00
microproofs
c0f09856d3
feat: Here's a first, we hoisted some user functions onto the validator
2023-08-07 12:02:44 -04:00
microproofs
62660e04b5
checkpoint;
...
Remaining work is on function hoisting. Functions have been defined and monomorphized
2023-08-07 12:02:44 -04:00
microproofs
ae9de11e77
big checkpoint:
...
feat: add monomorphize and other useful tree function abstractions
feat: started testing function hositing result so far
2023-08-07 12:02:44 -04:00
microproofs
947c118175
checkpoint
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
55ae708e3e
checkpoint: start on function hoisting
2023-08-07 12:02:44 -04:00
microproofs
2b7e7ead1c
feat: add support for validator arguments
...
feat: finish expect type on data constr
fix: tuple clause was exposing all items regardless of discard
fix: tuple clause was not receiving complex_clause flag
fix: condition for assert where constructor had 0 args was tripping assert
fix: had to rearrange var and discard assignment to ensure correct val is returned
fix: binop had the wrong type
2023-08-07 12:02:44 -04:00
microproofs
7d4e136467
checkpoint
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
b3714ca9d0
fix: list clause guard for final clause needs to use list accessor
2023-08-07 12:02:44 -04:00
microproofs
2c61ecd4bb
feat: finish up nested clauses
2023-08-07 12:02:44 -04:00
microproofs
a3afb62861
chore: fixing nested clauses to match aiken stack air
2023-08-07 12:02:44 -04:00
microproofs
95af421f95
feat: finish tuple conditions
2023-08-07 12:02:44 -04:00
microproofs
05b6b2a97d
chore: rename some functions
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
f6e163d16d
feat: start on nested clauses
...
chore: remove then field from list clause guard and clause guard
2023-08-07 12:02:44 -04:00
microproofs
5bcc425f0f
feat: changed air expressions clause guard
...
and list clause guard to air statements
2023-08-07 12:02:44 -04:00
microproofs
023be88bf6
chore: another checkpoint
...
fix: guard clause to properly check condition
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
96959011e9
feat: finish up build. just have helper methods
...
feat: Create an air and AirTree iterator.
This allows us to iterate forwards or backwards over the tree as a vec.
chore: moved around some functions
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
Olof Blomqvist
d25bb9ae60
format
2023-08-04 14:56:16 -04:00
Olof Blomqvist
4e4a477ff1
meh
2023-08-04 14:56:16 -04:00
Olof Blomqvist
17eef195a9
fix diagnostics and formatting on windows vscode
2023-08-04 14:56:16 -04:00
rvcas
266b6bbb7d
fix(exhaustiveness): for constructor use correct name because import aliases
2023-08-03 16:28:47 -04:00
rvcas
60ac8ab591
fix(exhaustiveness): adjust helper method to get contructors properly
2023-08-03 16:14:42 -04:00
KtorZ
675b737898
Check exhaustiveness behavior on pattern guards.
2023-08-02 10:40:59 +02:00
KtorZ
4f7f39292d
Fix subtle bug in pattern rendering
...
When rendering missing or redundant patterns, linked-list would
wrongly suggest the last nil constructor as a pattern on non-empty
list.
For example, before this commit, the exhaustivness checker would yield:
```
[(_, True), []]
```
as a suggestion, for being the result of being a list pattern with a
single argument being `(_, True) :: Nil`. Blindly following the
compiler suggestion here would cause a type unification error (since
`[]` doesn't unify with a 2-tuple).
Indeed, we mustn't render the Nil constructor when rendering non-empty
lists! So the correct suggestion should be:
```
[(_, True)]
```
2023-08-02 10:31:35 +02:00
KtorZ
00b255e960
Remove now-dead code.
2023-08-02 09:22:21 +02:00
rvcas
f3cab94ae1
test(check): a bunch of tests for the new exhaustiveness stuff
2023-08-01 21:13:50 -04:00
rvcas
75e18d485d
fix: redundant might be wildcard which doesn't match technically
2023-08-01 21:13:50 -04:00
rvcas
a6b230aad4
fix: exhaustiveness on types from other modules
2023-08-01 21:13:50 -04:00
rvcas
7e531d0da1
fix: wrong var for name in UnknownModule error
2023-08-01 21:13:50 -04:00
rvcas
b6ac39f322
feat(exhaustiveness): show both clauses in redundant error
2023-08-01 21:13:50 -04:00
rvcas
ef2fc57ca9
feat(exhaustiveness): check tuple patterns
2023-08-01 21:13:50 -04:00
rvcas
f1100e901d
feat(exhaustiveness): pretty print missing patterns
2023-08-01 21:13:50 -04:00
rvcas
de2791fe82
feat(tipo): add new error for redundant clauses
2023-08-01 21:13:50 -04:00
rvcas
0061bcf78d
feat: add support for list patterns
2023-08-01 21:13:50 -04:00
rvcas
e8a71cd63b
chore: rename usefulness module
2023-08-01 21:13:50 -04:00
rvcas
03efb46e6f
feat(exhaustiveness): algorithm U borrowed from elm
2023-08-01 21:13:50 -04:00
microproofs
55887d3a45
fix: decode should always print to textual
2023-08-01 00:47:29 -04:00
Cainã Costa
49cc76cf77
chore: cargo fmt
2023-07-25 14:00:29 -04:00
Cainã Costa
2cecb099d7
feat: add a generator for shell completions
2023-07-25 14:00:29 -04:00
rvcas
152e847e26
chore: no longer need this env var
2023-07-24 10:30:02 -04:00
Cainã Costa
d19a39239d
fix: fix clippy error
2023-07-24 10:24:37 -04:00
Pi Lanningham
27c0f25606
Add a blueprint hash command
...
Similar to blueprint address and blueprint policy, this just prints the
hash of the validator; useful if you need the hash, and you don't want
to pipe the address to a bech32 decoder and juggle the hex.
2023-07-21 22:57:31 -04:00
rvcas
be7a441205
fix(uplc): pair type formatting closes #680
2023-07-19 13:49:05 -04:00
rvcas
97acd6d7bd
chore: Release
2023-07-15 21:37:10 -04:00
rvcas
77a627817b
chore: prepare changelog for release
2023-07-15 21:34:41 -04:00
rvcas
1b8e94fe32
feat: expect boolean sugar
2023-07-15 20:50:02 -04:00
rvcas
db3b5c74bb
fix: todo and fail spans
2023-07-15 20:08:16 -04:00
rvcas
69fdee9f7e
fix: trace expr
2023-07-15 20:08:16 -04:00
rvcas
2edfd33594
fix: some attempted adjustments
2023-07-15 20:08:16 -04:00
rvcas
252b760ca1
test: remove prefix on all format tests
2023-07-14 16:56:27 -04:00
rvcas
eafe3cdf75
test: fail with expr relates to #675
2023-07-14 13:09:55 -04:00
rvcas
621017bd93
chore: Release
2023-07-14 10:55:13 -04:00
rvcas
e7c1b28b52
feat: add ability to reference validators in tests closes #632
2023-07-12 18:29:03 -04:00
rvcas
13ee62c05c
fix: don't break failing test defs for current users
2023-07-12 09:16:37 -04:00
rvcas
03e7d6e944
feat: update syntax for failing test to be more consistent
2023-07-12 09:16:37 -04:00
rvcas
1ab1ff9a1f
feat: rename error to fail
2023-07-12 09:16:37 -04:00
rvcas
a36cc7d631
fix: cpu and mem in white terminals, cyan makes things stand out nicely closes #415
2023-07-11 18:50:27 -04:00
rvcas
914b8d4e74
fix: infer validator args as Data if Unbound closes #649
2023-07-11 13:51:17 -04:00
Cainã Costa
b80c41b4b7
chore: cargo fmt
2023-07-11 13:06:25 -04:00
Cainã Costa
14652abd4f
fix: port last missing test
...
This test has been added after the first implementation, so we move it
to the new format :)
2023-07-11 13:06:25 -04:00
Cainã Costa
7f7a86765d
feat: bring back formatting imdepotency test
2023-07-11 13:06:25 -04:00
Cainã Costa
c27ef8ad93
chore: refactor formatting tests
...
This changes the tests from normal assertions into snapshot tests, as
well as standardizing test names.
2023-07-11 13:06:25 -04:00
rvcas
01be548752
chore: update stdlib version in new command relates to #672
2023-07-10 07:36:31 -04:00
Pi Lanningham
723c347a1a
Clippy
...
Clippy has a build failure locally, for some reason, so I have to use CICD to find these
2023-07-09 23:16:01 -04:00
Pi Lanningham
189150612c
cargo fmt :|
2023-07-09 23:16:01 -04:00
Pi Lanningham
26a4c57805
Clippy cleanup
2023-07-09 23:16:01 -04:00
Pi Lanningham
c4690c6e00
Data parsing, tests
2023-07-09 23:16:01 -04:00
Pi Lanningham
6d9a95ef2d
Add all but data parsing
...
Updates the parsing to the standard, *except* for Data, since that'll be more involved
2023-07-09 23:16:01 -04:00
Pi Lanningham
a48c45b737
Formatting
2023-07-09 23:16:01 -04:00
Pi Lanningham
ecff82659d
Tweak pretty-printing
...
This pretty printing now (mostly) matches https://github.com/input-output-hk/plutus/issues/4751#issuecomment-1538377273 ; the only concern is whether the PlutusData stuff should be upstreamed to pallas, and whether pallas has a way to print BigInts easier
2023-07-09 23:16:01 -04:00
rvcas
94bf75dd1c
chore: delete unreferenced snapshots
2023-07-06 21:00:13 -04:00
KtorZ
126f2ab004
Implement new formatter for 'int'.
...
This is used for constants and patterns, which can carry negative
values.
2023-07-06 16:10:46 -04:00