Commit Graph

312 Commits

Author SHA1 Message Date
KtorZ 5960065a03
Fix validator selection for apply, address and policy command
Before this commit, we would require those target a specific handler,
  whereas they are in fact global to the entire validator.

  So now, we recover the behaviour from before where we default to the
  only available validator when there's no ambiguity.

  Note that this also solves the need for repeatedly applying parameters
  to each handler of a parameterized validator. The command now
  rightfully apply parameters to each corresponding handler.
2024-11-13 19:36:30 +01:00
KtorZ a51f7285c1
Make blueprint files configurable in and out
Closes #1055.
2024-11-13 18:15:09 +01:00
KtorZ 51a8ddcc0b
Document test output JSON schema through '--help'
The help manual is getting a bit large, but fortunately, we can resort
  to a simpler/more compact version using `-h`.
2024-11-13 14:59:20 +01:00
KtorZ 2489e0fdd0
Fix aiken docs constant generation
Fixes #1048.
2024-10-29 14:15:31 +01:00
KtorZ 2b7ca0e4a1
Avoid unsafe unwrap of line_numbers, gracefully handle non-existing matches
Fixes #1044.
2024-10-25 11:37:50 +02:00
KtorZ e97fe332b1
Rename --filter_traces to --trace_filter
It has somehow always annoyed me that we have --trace_level (with 'trace' first) and --filter_traces (with traces, plural and last). Given that these two options are almost always used together, the inconsistency is frustrating.
2024-10-25 11:08:05 +02:00
Riley-Kilgore ab39eb82ce Updated changelog again, forgot to put my name 2024-10-24 14:31:48 -07:00
Riley-Kilgore 413932d86b Updated Changelog 2024-10-24 11:47:34 -07:00
microproofs 3e076dd895
Update changelog for 1.1.5 2024-10-19 13:44:22 -04:00
KtorZ b3e6c3ab6b
Fill-in CHANGELOG. 2024-10-19 11:04:18 +02:00
KtorZ 4b95db4f88
Fix data-type reification from Void 2024-10-19 10:50:44 +02:00
microproofs e4e8ca8a6d
Update changelog 2024-10-01 16:13:33 -04:00
KtorZ 513ca27717
Generate empty redeemer for `else` handler, to keep full compliance with the blueprint spec 2024-10-01 19:03:34 +02: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 51b6b77db8
Build LSP projects with verbose tracing level
Without that, the language server might trigger awkward warnings about
  unused imports due to trace stripping. So it's better to compile/check
  projects in the language server in the most expanded form.
2024-10-01 16:12:41 +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
KtorZ 5737556efc
Fix compiler crash around dangling expect/let in traces
Fixes #1029.
2024-10-01 12:24:31 +02:00
KtorZ 9533903acc
Prepare CHANGELOG for v1.1.4 2024-10-01 11:20:07 +02:00
microproofs d3e95bd000
Changelog release change 2024-09-20 13:49:45 -04:00
microproofs c3af748b76
Update changelog 2024-09-20 12:53:34 -04:00
KtorZ a8b37820e8
Fix incorrect warning about unused variable when softcasting without explicit right-pattern.
See note added in code for a rationale.
2024-09-20 15:09:00 +02:00
KtorZ 83ac723a50
Fix extraneous space added after multiline alternative patterns 2024-09-19 20:24:59 +02:00
KtorZ dd77fa7e53
Mention cost model fixes in CHANGELOG. 2024-09-19 20:20:30 +02:00
KtorZ 3f149ab346
Provide intermediate feedback during property test runs.
Avoid the interface to hang for several seconds without feedback when counterexamples are being simplified. This sends a heads-up to the user to indicate that a research of a counter example is going on.
2024-09-19 20:19:49 +02:00
KtorZ 47a15cf8b2
Fix formatting of long multiline if/is expressions. 2024-09-15 14:59:47 +02:00
KtorZ 12c0d0bc04
Fix formatter adding extra unnecessary newlines after literal lists clause values or assignments. 2024-09-15 14:40:40 +02:00
KtorZ d6c728c0f6
Fix link_tree generation when re-inserting the same modules. 2024-09-14 16:30:28 +02:00
microproofs 0f8cb19ede
Update Changelog for release 2024-09-13 16:49:37 -04:00
KtorZ a9a7a4f977
Fix few formatter annoyances. 2024-09-13 18:53:26 +02:00
KtorZ 4fb13af49f
Fix type reification of PRNG. 2024-09-13 18:34:53 +02:00
microproofs debbae4fda
Update Changelog 2024-09-13 12:09:11 -04:00
KtorZ 74d197077d
Mention Riley contribution in CHANGELOG. 2024-09-10 13:23:16 +02:00
KtorZ 7741be64f8
Fix validator's fallback handler generation
Fixes #1015.
2024-09-10 10:48:06 +02:00
KtorZ 616dec8f03
Fix formatter getting rid of curly braces around multi-line constants. 2024-09-08 16:23:41 +02:00
KtorZ 0c0369ad61
Fix needed parentheses under trace-if-false disappearing when formatting. 2024-09-08 16:21:45 +02:00
KtorZ b6d99142f9
Fix formatting of multi-line alternative patterns. 2024-09-08 13:11:53 +02:00
KtorZ b7ea6ea391
Fix list-pattern formatting 2024-09-07 14:50:47 +02:00
KtorZ 19e30b10f9
Fix #1013 2024-09-06 12:28:12 +02:00
Matthias Benkort 1f692bc93e
Update CHANGELOG.md 2024-09-03 23:30:18 +02:00
KtorZ f60df16bc2
Preserve type-aliases during blueprint generation. 2024-09-03 16:39:50 +02:00
KtorZ 5414fd8f04
Fill-in CHANGELOG for zero-arg / super-const. 2024-08-30 18:41:06 +02:00
KtorZ 70e760cbaa
Fill-in CHANGELOG regarding last expect and tests now accepting Void. 2024-08-23 16:04:40 +02:00
KtorZ d1ee90a3a0
Update CHANGELOG.md 2024-08-23 10:41:20 +02:00
KtorZ 39c1b5a68a
Merge branch 'generated-docs-improvements' 2024-08-22 16:41:54 +02:00
Matthias Benkort 2bb2f11090
Update CHANGELOG.md 2024-08-14 10:03:42 +02:00
KtorZ 9d8fdf787c
Improve formatter on long-lines, in particular bin-ops. 2024-08-06 19:25:35 +02:00
KtorZ e3b1cf1093
Rework CHANGELOG to reflect reality.
We never released 1.0.30, so it's a bit misleading to have an entry for it in the CHANGELOG. So I merged its content with the ongoing release which is likely to be 1.1.0
2024-08-06 10:50:15 +02:00
KtorZ a07f8cbc58
Fill-in CHANGELOG. 2024-08-04 14:48:03 +02:00
KtorZ f14dfdf8e1
Allow pattern-matching on bytearrays
- Doesn't allow pattern-matching on G1/G2 elements and strings,
    because the use cases for those is unclear and it adds complexity to
    the feature.

  - We still _parse_ patterns on G1/G2 elements and strings, but emit an
    error in those cases.

  - The syntax is the same as for bytearray literals (i.e. supports hex,
    utf-8 strings or plain arrays of bytes).
2024-08-03 13:51:36 +02:00
KtorZ ea032c90f2
Add missing CHANGELOG entries. 2024-08-02 12:08:25 +02:00
KtorZ bf5a406ffb Remove clause guards.
Closes #886.
2024-08-02 00:16:27 -04:00
KtorZ b28d4a6e9f
Add input reference to ReferenceInputNotFound error.
Fixes #974.
2024-08-01 15:29:39 +02:00
KtorZ 91aa435f37
Fix 'multiline' truncating last character of each line.
Fixes #987.
2024-08-01 15:20:43 +02:00
KtorZ 327449e320
Update CHANGELOG, bump date, document latest fixes & optimizations 2024-07-25 09:54:03 +02:00
KtorZ 987a5fa779
Set a date for v1.0.30-alpha release. 2024-07-24 09:39:48 +02:00
rvcas 06ac851458
chore: update changelog 2024-07-23 11:20:42 -04:00
KtorZ 89890f3b4b
Fill-in CHANGELOG 2024-07-19 12:44:12 +02:00
KtorZ 976262c2e6
Allow discard in expect.
Fixes #967.
2024-07-17 18:11:09 +02:00
KtorZ 858dfccc82
Authorize complete patterns as function args.
This is mainly a syntactic trick/sugar, but it's been pretty annoying
  to me for a while that we can't simply pattern-match/destructure
  single-variant constructors directly from the args list. A classic
  example is when writing property tests:

  ```ak
  test foo(params via both(bytearray(), int())) {
    let (bytes, ix) = params
    ...
  }
  ```

  Now can be replaced simply with:

  ```
  test foo((bytes, ix) via both(bytearray(), int())) {
    ...
  }
  ```

  If feels natural, especially coming from the JavaScript, Haskell or
  Rust worlds and is mostly convenient. Behind the scene, the compiler
  does nothing more than re-writing the AST as the first form, with
  pre-generated arg names. Then, we fully rely on the existing
  type-checking capabilities and thus, works in a seamless way as if we
  were just pattern matching inline.
2024-06-07 15:42:25 +02:00
KtorZ 257bd23019
update changelog 2024-06-06 11:21:17 +02:00
KtorZ 87f4ed359b
Update changelog: set a release date. 2024-06-06 11:19:33 +02:00
KtorZ d7ec2131ef
Automatically merge import lines from same module.
I slightly altered the way we parse import definitions to ensure we
  merge imports from the same modules (that aren't aliased) together.

  This prevents an annoying warning with duplicated import lines and
  makes it just more convenient overall.

  As a trade-off, we can no longer interleave import definitions with
  other definitions. This should be a minor setback only since the
  formatter was already ensuring that all import definitions would be
  grouped at the top.

  ---

  Note that, I originally attempted to implement this in the formatter
  instead of the parser. As it felt more appropriate there. However, the
  formatter operates on (unmutable) borrowed definitions, which makes it
  annoyingly hard to perform any AST manipulations. The `Document`
  returns by the format carries a lifetime that prevents the creation of
  intermediate local values.

  So instead, slightly tweaking the parser felt like the right thing to
  do.
2024-06-04 10:48:42 +02:00
KtorZ 2070576e46
New LSP quickfix for 'use let' warning. 2024-05-30 19:30:41 +02:00
KtorZ 649e5163fc
Fix parsing of single hex-digits. 2024-05-30 17:19:48 +02:00
KtorZ 5694d9f9cb
Introduce 'fail once' and alter behavior of 'fail' keyword for properties. 2024-05-30 17:18:50 +02:00
rvcas 2605dc6aa4
chore: update changelog 2024-05-23 16:44:50 -04:00
rvcas 3f46559dbe
chore: update changelog 2024-05-23 16:21:16 -04:00
microproofs 2c8abe4a69 update changelog 2024-05-23 16:15:30 -04:00
KtorZ c48f15a957
revert #903 'feat: Emit keyword'
While we agree on the idea of having some ways of emitting events, the
  design hasn't been completely fleshed out and it is unclear whether
  events should have a well-defined format independent of the framework
  / compiler and what this format should be.

  So we need more time discussing and agreeing about what use case we
  are actually trying to solve with that.

  Irrespective of that, some cleanup was also needed on the UPLC side
  anyway since the PR introduced a lot of needless duplications.
2024-05-23 17:22:12 +02:00
KtorZ 5ce30b2632
Rename AList -> Pairs due to popular demand. 2024-05-23 16:45:40 +02:00
KtorZ 1ed4fa1c69
Show warning when ignoring modules + restyle warnings slightly
Fixes #916.
2024-05-14 13:27:19 +02:00
KtorZ 81219cfbdd
Check for data-type serialisability after generic instantiation
Fixes #939.
2024-05-14 10:58:58 +02:00
KtorZ 8c67be55ce
Fixes #921: top-level Miller-loop needs not to be serialisable
This is a bit tricky, but in a similar way where we allow functions to
  be returned by functions, this must also work for MillerLoopResult.
2024-05-10 13:52:23 +02:00
microproofs 30436a8a9c update changelog 2024-05-06 15:17:01 -04:00
KtorZ 925a11be69
Check for args length when comparing types. Duh!
Fixes #917.
2024-05-01 10:48:15 +02:00
rvcas 4f99c81dee
chore: update changelog 2024-04-12 21:43:28 -04:00
rvcas 23713ce6fa
chore: update changelog 2024-04-09 11:48:32 -04:00
rvcas fdbe811bf1
chore: update changelog 2024-04-02 19:49:30 -04:00
rvcas 0ba6d23efa
chore: update changelog 2024-04-02 17:56:53 -04:00
rvcas 98bd61a0cd
chore: update changelog 2024-03-29 11:38:22 -04:00
rvcas 54a89d3e69
chore: update changelog 2024-03-25 22:05:25 -04:00
KtorZ eee1d1bf1e
Fix release date for v1.0.25-alpha. 2024-03-22 16:07:29 +01:00
KtorZ 96387e3437
Fixes #767
Co-authored-by: @rvcas <x@rvcas.dev>
2024-03-22 16:05:32 +01:00
rvcas 80858387f6
chore: update changelog 2024-03-21 20:20:31 -04:00
microproofs 61936cb91e fix(codegen): Add tracing when checking for a constr vs another primitive 2024-03-17 16:25:17 -04:00
rvcas cc99eceda8 chore: update changelog 2024-03-12 08:10:33 -04:00
KtorZ df898bf239
Rework monadic-bind into function backpassing.
This is more holistic and less awkward than having monadic bind working only with some pre-defined type. Backpassing work with _any_ function, and can be implemented relatively easily by rewriting the AST on-the-fly.

  Also, it is far easier to explain than trying to explain what a monadic bind is, how its behavior differs from type to type and why it isn't generally available for any monadic type.
2024-03-11 00:16:22 +01:00
Matthias Benkort ec18127191
Merge pull request #869 from aiken-lang/non-serialisable-types
Forbid non-serializable inhabitants in compound data-types.
2024-03-09 22:39:41 +01:00
KtorZ 80a9393db7
Add --include-dependencies to 'aiken docs'
Fixes #867.
2024-03-09 22:35:38 +01:00
KtorZ ee54266d1f
Forbid non-serializable inhabitants in compound data-types. 2024-03-09 22:25:51 +01:00
KtorZ 37627e3527
Fix indentation of pipelines. 2024-03-09 20:44:51 +01:00
microproofs cf86a20256 update Changelog 2024-03-09 13:27:32 -05:00
KtorZ 22b86a5f82
Add --max-success for running more or less prop runs on demand. 2024-03-09 19:17:57 +01:00
KtorZ d581183cc6
Fix formatter discarding nul bytes. 2024-03-09 18:59:35 +01:00
KtorZ bbe7c0bc01
report prop test coverage labels on success. 2024-03-09 01:28:29 +01:00
KtorZ d6cc9bdfbe
Allow implicit discard when right-hand side is Void.
This is the most intuitive/expected behavior. Otherwise, it forces a pointless let-binding to 'Void' or into a discard.
2024-03-09 01:28:29 +01:00
rvcas d73f8fd6c2 chore: update changelog 2024-03-08 19:19:07 -05:00
rvcas 49ca7e1f75
chore: update changelog 2024-03-08 16:21:48 -05:00
microproofs 64f580bb82 one more change to the changelog 2024-03-08 12:19:18 -05:00
microproofs 9636a4de03 update changelog 2024-03-08 11:18:50 -05:00