Commit Graph

307 Commits

Author SHA1 Message Date
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
KtorZ 4c97240900
Fill-in CHANGELOG about associativity. 2024-03-07 01:31:04 +01:00
KtorZ bff822ea7f
Rework unit test report to leverage new reification
And also provide slightly better errors when traces, or trace-if-false operators are present.
2024-03-07 01:20:40 +01:00
KtorZ c2bc5848dd
Fill-in CHANGELOG. 2024-03-03 21:09:17 +01:00
KtorZ 46c357df7b Fix Int/BigInt pivot
We've been wrongly representing large ints as BigInt, causing them to
  behave differently in the VM through builtins like 'serialise_data'.

  Indeed, we expect anything that fits in 8 bytes to be encoded as Major
  Type 0 or 1. But we were switching to encoding as Major type 6
  (tagged, PosBigInt, NegBigInt) for much smaller values! Anything
  outside of the range [-2^32, 2^32-1] would be treated as big int
  (positive or negative).

  Why? Because we checked whether a value i would fit in an i64, and if
  it didn't we treated it as big int. But the reality is more subtle...
  Fortunately, Rust has i128 and the minicbor library implements TryFrom
  which enforces that the value fits in a range of [-2^64, 2^64 - 1], so
  we're back on track easily.
2024-02-25 14:09:56 -05:00
microproofs cf51b30045 update changelog 2024-02-07 11:48:52 -05:00
rvcas b46206bfe2
chore: update changelog 2024-01-31 13:47:07 -05:00
microproofs bcc2a0fd12 update changelog 2024-01-31 13:44:11 -05:00
microproofs 258c224e21 update changelog 2024-01-31 13:42:46 -05:00
rvcas 3a534271e7
chore: update changelog 2024-01-30 12:35:50 -05:00
microproofs 115ff61abe update changelog again 2024-01-25 14:22:45 -05:00
rvcas 9d563612f3
chore: prep changelog for release 2024-01-24 20:40:53 -05:00
microproofs 4c00c9e7de update changelog 2024-01-24 20:03:57 -05:00
microproofs 1431bec32f update changelog 2024-01-24 19:50:52 -05:00
rvcas 25a837ab3f
feat: parser and check fixes
- do not erase sequences if the sole expression is an assignment
- emit parse error if an assignment is assigned to an assignment
- do not allow assignments in logical op chains
2024-01-19 14:32:21 -05:00
KtorZ 8a90e9eda0
Improve behavior and reporting of tests expected to fail
Fixes #786.
2024-01-19 18:20:58 +01:00
KtorZ 858e45f3f3
Fill-in CHANGELOG. 2024-01-19 14:30:43 +01:00
KtorZ 0e2b8ae251
Bump pallas dependencies to include flat bigint patch
Fixes #796.
2024-01-18 18:26:21 +01:00
rvcas 0a1e0d7bee
feat: remove flat-rs crate and use it through pallas_codec 2023-12-04 22:01:51 -05:00
rvcas b17b7f287c
chore: update to pallas v0.20.0 2023-12-04 21:44:19 -05:00
rvcas 38e8255328
chore: update changelog 2023-12-04 21:04:55 -05:00
KtorZ a23bc32fa2
Fill-in CHANGELOG. 2023-11-25 15:14:10 +01:00
microproofs d2202a705c update changelog 2023-10-25 18:59:44 -04:00
KtorZ 5f8e256050
Present aiken-lsp & fill-in CHANGELOG 2023-10-21 21:39:30 +02:00
microproofs a08405c607 changelog additions 2023-10-17 12:36:13 -04: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
microproofs 8a1c824dd7 chore: add specific error for when the validator returns false 2023-10-04 11:08:22 -04:00
rvcas 78ff6cf178 chore: update changelog 2023-10-03 01:17:15 -04:00
microproofs d131ec563b update changelog 2023-09-29 22:07:19 -04:00
microproofs 4aa5bda9eb update changelog 2023-09-29 19:37:44 -04:00
microproofs 3fc469b7c7 update changelog 2023-09-28 01:05:05 -04:00
microproofs 8e75007a5f changelog: remove accidental duplicated Fixed 2023-09-25 21:16:19 -04:00
microproofs 38d15c677f Update changelog 2023-09-25 21:16:19 -04:00
KtorZ 91d4cb9b12
Fix a date in the CHANGELOG for 0.17.0 2023-09-20 18:02:39 +02:00
microproofs 4650c64f6b update changelog 2023-09-20 11:51:01 -04:00
KtorZ f379039efc
Fix record shorthand causing parsing ambiguity in if/else expressions.
Fixes #735.
2023-09-15 09:41:00 +02:00
KtorZ 06347c3efa Add CHANGELOG entry. 2023-09-13 17:17:32 -04: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 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
rvcas dfe433ea46
fix: trim whitespace when loading hex strings from files closes #720 2023-08-31 18:22:09 -04:00
rvcas 097d1fa893
chore: update changelog 2023-08-31 18:01:52 -04:00
rvcas a87a8a7b35
chore: update changelog 2023-08-31 17:41:36 -04:00
rvcas 747e057d05
fix: tags 2023-08-24 15:00:09 -06:00
KtorZ d3fe241ccd
Wrap-up CHANGELOG 2023-08-22 13:14:35 +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 0eec4c188a update changelog for v1.0.15 2023-08-19 20:11:24 -04:00
KtorZ c6f764d2db Refresh Cargo.lock & fill-in CHANGELOG. 2023-08-19 13:39:39 -04:00
rvcas be20426329
chore: update changelog 2023-08-16 23:16:56 -04:00
rvcas 6d90c27587
chore: update changelog 2023-08-16 23:06:53 -04:00
rvcas b138cb0ccd
chore: update changelog 2023-08-16 22:55:59 -04:00
logicalmechanism 050c41c8dc tx simulate returns a vector of exbudgets now 2023-08-16 22:37:00 -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 71a941e0b0 Update changelog 2023-08-07 12:11:39 -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 d009358266 chore: update changelog 2023-07-15 20:08:16 -04:00
rvcas dbb6d302bd
chore: update changelog 2023-07-14 10:54:55 -04:00
rvcas e7c1b28b52
feat: add ability to reference validators in tests closes #632 2023-07-12 18:29:03 -04:00
rvcas 0b65c20e31 chore: update changelog 2023-07-12 09:16:37 -04:00
rvcas 5318c94892
chore: update changelog 2023-07-11 18:59:11 -04:00
rvcas 265af44b86
chore: update changelog 2023-07-09 23:33:40 -04:00
KtorZ 93b33df3ef Fill-in CHANGELOG. 2023-07-06 16:10:46 -04:00
KtorZ 6d7aec804c
Update CHANGELOG.md 2023-07-05 18:58:21 +02: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
Pi Lanningham 12674c8c4c Added description to changelog
Closes #610
2023-07-01 16:17:10 -04:00
rvcas 619b73d03e
feat: enhance new command 2023-06-23 19:40:11 -04:00
rvcas d633129ddf
fix: clearer unused var warning closes #579 2023-06-23 19:04:54 -04:00
rvcas 697de40376
chore: update changelog 2023-06-23 18:41:58 -04:00
microproofs 8b3504e9a1 fix: `expect _ = ...` not including the cast from data logic if the type is data and right hand has a type annotation 2023-06-23 18:39:12 -04:00
microproofs 226556bdd6 fix: builtins using the incorrect data to type conversion when used as a function param. 2023-06-23 14:31:19 -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 dbfa08a5a7 fix: issue with tuple clause
It was not consuming the next case if there was no condition being checked in the clause.
Now it properly always consumes the next clause unless last clause.
2023-06-23 12:36:15 -04:00
microproofs 24f5c4de6b fix: the final clause of a when expecting another clause afterwards in nested list cases.
fix: all elements were being destructured in tuple clauses even if not used
2023-06-19 21:43:38 -04:00
KtorZ 41b2bf1c7e
Fill-in CHANGELOG. 2023-06-17 17:21:43 +02:00
rvcas bf09c155fc
chore: update changelog 2023-06-13 21:06:24 -04:00
rvcas 44e066f907 feat: add a panic hook, present issue link 2023-06-13 20:30:43 -04:00
microproofs b79437f596 update changelog 2023-06-13 12:03:38 -04:00
rvcas 22d491bb88
chore: update changelog 2023-06-13 00:24:04 -04:00
microproofs 9fe4aab599 chore: changelog v1.0.8-alpha 2023-06-08 19:33:27 -04:00
KtorZ 919bf6f350
Complete CHANGELOG
Fixes #592
  Fixes #578
2023-06-08 16:39:03 +02:00
microproofs 0c4e7ed9da typo in changelog 2023-06-07 22:39:54 -04:00
microproofs 1256bd5617 push codegen fixes to changelog 2023-06-07 22:38:22 -04:00
rvcas 8d107b1293
fix(build): --uplc must use Program<Name> to pretty print 2023-06-07 16:25:59 -04:00
KtorZ 0afc3aba13
Fix operator precedences, in particular |>
Fixes #571.
2023-06-06 17:17:47 +02:00
rvcas d3ffafd9c7
chore: update changelog 2023-06-02 00:07:49 -04:00
microproofs 6955f79035 chore: update changelog
fix: Minor improvement to record update to use empty list instead of the null list from a record fields list.
2023-06-01 12:22:42 -04:00
rvcas 26a607eb00
fix: bad parsing of comments at end of file closes #551 2023-05-30 11:07:39 -04:00
rvcas c3b8ff0009
chore: update changelog 2023-05-30 10:39:49 -04:00
microproofs c2904d15ba chore: prepare changelog for release 2023-05-17 18:01:14 -04:00
microproofs 173154e406 fix: (code gen): expect type now properly tracks constructor dependency.
This was specific to code gen generated functions.
2023-05-17 17:56:01 -04:00
microproofs 6b58d643de update changelog 2023-05-16 16:29:12 -04:00
rvcas 83d9172073
chore: add next section to changelog 2023-05-14 22:07:45 -04:00
rvcas 327ff71af0
chore: prepare changelog for release
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-05-14 21:24:35 -04:00
microproofs f448cd111c update changelog 2023-05-14 18:32:01 -04:00
microproofs 3356e2ecd0 fix: nested constrs with a single index was ignoring fields 2023-05-14 17:33:01 -04:00
microproofs 252f829825 forgot one addition to changelog 2023-05-11 18:16:48 -04:00
microproofs 98ae94f443 changelog update 2023-05-11 18:12:07 -04:00
rvcas ce7bdea7be
chore: update changelog 2023-05-09 23:16:27 -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
microproofs d2dbae1cbf fix:
Negative numbers now show up as a constant instead of 0 - that number

Expect on constructors without field maps no longer panics

Expect on constructors with discard as assigned field names now no longer throws free unique
2023-04-30 14:44:54 -04:00
microproofs 42ad45ee41 chore: prepare changelog for release 2023-04-28 17:07:27 -04:00
microproofs 332ce266da changelog update 2023-04-28 17:05:46 -04:00
microproofs 537bcf176a chore: changelog update 2023-04-25 14:10:07 -04:00
rvcas baa2cef6c4
feat(playground): impl clone for some errors 2023-04-24 17:13:20 -04:00
rvcas c9a762a13c
fix: we weren't including the name unused var warning 2023-04-20 16:53:56 -04:00