Commit Graph

350 Commits

Author SHA1 Message Date
KtorZ
6d098a4571 Fix blueprint generation for nested fields with Data
Having the data's schema be optional at the level of the 'Schema' did not allow to represent cases where there would be an opaque data at an arbitrary nesting. So I introduced a new variant 'Opaque' on 'Data' to fill that gap.
2023-03-02 15:25:17 -05:00
rvcas
a40f88b918 fix: test never used Foo 2023-03-02 15:25:17 -05:00
KtorZ
65c336cb82 Update blueprint outputs to reflect latest specification.
Schemas of datums, redeemers and parameters are now nested under a field 'schema'. This allows to define a field 'purpose' at the same level.
2023-03-02 17:17:27 +01:00
KtorZ
70cdf3cb26 Add 'exported_data' test and revert 413a056 2023-03-02 16:09:08 +01:00
Kasey White
413a056c08 fix: Data was not allowed in an interface
Co-authored-by: rvcas <x@rvcas.dev>
2023-03-01 21:34:36 -05:00
KtorZ
a46a9fca41 Only use colors & text decorations on ANSI-capable terminals.
Fixes #404.
2023-02-26 13:19:03 +01:00
rvcas
0066cc61cc Release 0.0.29
aiken@0.0.29
aiken-lang@0.0.29
aiken-lsp@0.0.29
aiken-project@0.0.29
uplc@0.0.29

Generated by cargo-workspaces
2023-02-23 19:04:18 -05:00
KtorZ
0838d48f7c Move module name validation outside of type-checking
And disable it for documentation generation. This way, we can generate documentation for aiken/builtins and aiken (prelude)
2023-02-22 11:51:32 +01:00
KtorZ
6465af3ae2 Add missing keywords to highlightjs for doc generation. 2023-02-22 11:50:31 +01:00
KtorZ
c0230a811f Add 'plutusVersion' to blueprints. 2023-02-21 15:37:35 +01:00
KtorZ
82a32a082b Remove 'purpose' from blueprint's schema.
This has been removed from the CIP-0057 specification since validators
  are often re-used for multiple purposes (especially validators with
  arity 2). It's misleading to assign a validator a purpose since the
  purpose distinction actually happens _within_ the validator itself.
2023-02-21 15:30:41 +01:00
KtorZ
db0dfbbec1 Fix blueprint schema for tuples. 2023-02-21 15:29:33 +01:00
rvcas
97f03e5e98 fix: variants no longer exist 2023-02-20 15:46:55 -05:00
rvcas
bd93ced647 feat: improve validator arity check
* add count to dynamically adjust message
* check if args is greater than 3
* delete unused project level errors
2023-02-20 15:46:55 -05:00
rvcas
c033cab79e feat(lsp): bring over some stuff for completions, it basically doesn't work right though 2023-02-20 15:30:25 -05:00
rvcas
815d7d80c6 feat(lsp): hover and goto definition 2023-02-20 15:30:25 -05:00
rvcas
38bcbaf701 feat(lsp): enable compiling a project 2023-02-20 15:30:25 -05:00
rvcas
b55726c90f feat(project): remove Error::List and use Vec<Error> 2023-02-20 15:30:25 -05:00
KtorZ
45454ced01 Make tracing configurable, when relevant.
Tracing is now turn OFF by default when:

  - building project
  - building documentation
  - building dependencies

  It can be turned ON only when building project using `--keep-traces`.
  That means it's not possible to build dependencies with traces. The
  address `--rebuild` flag will also rebuild without traces.

  Tracing is however turn ON by default when:

  - checking the project (and running tests).

  In this scenario, tracing can be disabled using `--no-traces` (if for
  example, one want to analyze the execution units of specific functions
  without having to manually remove traces from code).
2023-02-16 20:29:41 -05:00
KtorZ
e9e3f4f50a Implement TraceIfFalse type-checking and AST transformation.
This caused me some trouble. In my first approach, I ended up having
  multiple traces because nested values would be evaluated twice; once
  as condition, and once as part of the continuation.

  To prevent this, we can simply evaluate the condition once, and return
  plain True / False boolean as outcome. So this effectively transforms any
  expression:

  ```
  expr
  ```

  as

  ```
  if expr { True } else { trace("...", False) }
  ```
2023-02-16 20:29:41 -05:00
KtorZ
3204322da6 Fix validator lookup by title.
We want the lookup to yield a result when there's only a single
  validator; and no title is provided. So that users can simply do
  'aiken address' in their project if it's unambiguous. The validator's
  name is only required to disambiguate between multiple validators.

  I also noticed that the order of arguments in with_validator was
  wrong. Somehow.
2023-02-16 10:28:27 +01:00
KtorZ
20841962f6 Fix error messages still referring to blueprint's purpose. 2023-02-16 10:06:12 +01:00
rvcas
a311531508 fix(cli): aiken address 2023-02-16 00:05:55 -05:00
rvcas
2e78b7100c fix: blueprint tests 2023-02-16 00:05:55 -05:00
rvcas
673b57b81c feat: get bluprint stuff compiling again 2023-02-16 00:05:55 -05:00
rvcas
d03288cece feat(validator): move return type and arity check to infer 2023-02-16 00:05:55 -05:00
Kasey White
ddef61a855 fix: blueprint tests 2023-02-10 19:45:44 -05:00
KtorZ
62fe321ddf Add 'Ordering' data-type to the Prelude.
Useful to have around to build comparison functions.
2023-02-09 11:07:30 +01:00
rvcas
fd14da0720 chore: fix blueprint tests 2023-02-09 00:09:23 -05:00
KtorZ
95a62f7172 Fix oversights in blueprint / schema generation. 2023-02-08 19:04:50 +01:00
KtorZ
6e554129e9 Fix blueprint validator tests. 2023-02-07 12:28:34 +01:00
Matthias Benkort
8feaefe073 Merge pull request #335 from aiken-lang/blueprint-parameters
Blueprint parameters
2023-02-07 11:43:01 +01:00
rvcas
3ff927d30a feat: reset the generator when generate finishes 2023-02-05 20:35:39 -05:00
rvcas
501d667532 chore: fix tests 2023-02-05 20:35:39 -05:00
Kasey White
c32a9d7b6f commit working changes so far 2023-02-05 20:35:39 -05:00
dependabot[bot]
71b7ec6088 chore(deps): bump tokio from 1.23.1 to 1.24.2
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.23.1 to 1.24.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/commits)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-04 20:06:54 -05:00
KtorZ
b04fb5962a Do not compute addresses of parameterized validators
And leave a proper notice.
2023-02-04 11:49:56 +01:00
KtorZ
9b8ff590b8 Implement 'blueprint apply' command.
This is still a bit clunky as the interface is expecting parameters in UPLC form and we don't do any kind of verification. So it is easy to shoot oneself in the foot at the moment (for example, to apply an integer into something that should have received a data). To be improved later.
2023-02-04 11:39:55 +01:00
KtorZ
ea269b14a2 Fix deserialization issue when 'parameters' is missing.
Deserialize to an empty vector.
2023-02-04 11:38:09 +01:00
KtorZ
592d3d7a1c Define 'apply_parameter' method on 'Project' 2023-02-04 10:44:33 +01:00
KtorZ
12f4768008 Write method to apply a UPLC term to an existing 'Validator' 2023-02-04 10:22:23 +01:00
KtorZ
9c71aab3db Factor out reusable parts regarding blueprints from lib/project
So we can re-apply the same logic for applying arguments.
2023-02-04 10:21:45 +01:00
KtorZ
55ecc199d1 Add 'parameters' to blueprints for parameterized validators.
Without that, we have no way to distinguish between fully applied
   validators and those that still require some hard-coded parameters.

   Next steps is to make it easier to apply parameters to those, as well
   as forbid the creation of addresses of validators that aren't fully
   qualified.
2023-02-04 09:31:43 +01:00
rvcas
50b5273967 fix(tests): validator hashs and cbor changed for blueprints 2023-02-01 23:49:33 -05:00
rvcas
99c1c880b0 chore: more clippy 2023-02-01 18:53:11 -05:00
rvcas
a365649360 chore: clippy autofix 2023-02-01 18:53:11 -05:00
rvcas
c8efe60843 feat: use Rc for more things, fib_iter runs almost 3 seconds faster now 2023-02-01 18:53:11 -05:00
rvcas
618ea0c8dc feat: switch to zip from zip-extract 2023-02-01 14:50:18 -05:00
dependabot[bot]
6974d31285 chore(deps): bump tokio from 1.23.0 to 1.23.1
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.23.0 to 1.23.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.23.0...tokio-1.23.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 12:36:49 -05:00
KtorZ
daee8e39d6 Implement new command: address
This calculates a validator's address from validators found in a blueprint. It also provides a convenient way to attach a delegation part to the validator if needs be. The command is meant to provide a nice user experience and works 'out of the box' for projects that have only a single validator. Just call 'aiken address' to get the validator's address.

  Note that the command-line doesn't provide any option to configure the target network. This automatically assumes testnet, and will until we deem the project ready for mainnet. Those brave enough to run an Aiken's program on mainnet will find a way anyway.
2023-01-31 15:39:40 +01:00