Commit Graph

2964 Commits

Author SHA1 Message Date
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
34d5bc71b1 Add one more edge-case test for multiline. 2024-08-01 15:21:53 +02:00
KtorZ
91aa435f37 Fix 'multiline' truncating last character of each line.
Fixes #987.
2024-08-01 15:20:43 +02:00
KtorZ
b8bb480bff Fix 'aiken new' workflow template 2024-07-26 13:56:26 +02:00
rvcas
4645fd3e28 chore: Release 2024-07-25 08:28:15 -04:00
rvcas
732147b36a chore: remove msi installer 2024-07-25 08:26:45 -04:00
KtorZ
53b5a5ccee Screw windows too, until next non-alpha. 2024-07-25 12:24:47 +02:00
KtorZ
9dc4c915f3 Manually set windows version. 2024-07-25 12:07:27 +02:00
KtorZ
9e08f9b4e6 Re-add wix file for Windows release. 2024-07-25 11:48:27 +02:00
KtorZ
26c3e95a06 screw musl targets, for now. 2024-07-25 11:29:52 +02:00
KtorZ
28c1922600 Also include pkg-config for musl build. 2024-07-25 10:23:30 +02:00
KtorZ
d36edb4e01 Add libssl-dev build dependency for musl target. 2024-07-25 10:17:29 +02:00
KtorZ
49190b485a chore: Release 2024-07-25 09:58:06 +02:00
KtorZ
327449e320 Update CHANGELOG, bump date, document latest fixes & optimizations 2024-07-25 09:54:03 +02:00
Matthias Benkort
594a304190 Merge pull request #980 from aiken-lang/multivalidator-plus-optimization
Mutlivalidator is now an opcode to help minimize validator size
2024-07-25 09:47:47 +02:00
Matthias Benkort
63863c948f Merge pull request #979 from aiken-lang/fix_casting_inference
Fix pattern inference and annotation requirements.
2024-07-25 09:40:27 +02:00
microproofs
c286ada08d clippy fix 2024-07-24 11:29:55 -04:00
microproofs
1001e83374 Updated acceptance test runs 2024-07-24 10:34:29 -04:00
microproofs
dfce9c1d96 feat: Add multivalidator as an AIR tree opcode.
feat: Add uplc eval optimization
2024-07-24 10:00:08 -04:00
KtorZ
67493ad847 Fix casting inferrence on patterns
The original goal for this commit was to allow casting from Data on
  patterns without annotation. For example, given some custom type
  'OrderDatum':

  ```
  expect OrderDatum { requested_handle, destination, .. }: OrderDatum = datum
  ```

  would work fine, but:

  ```
  expect OrderDatum { requested_handle, destination, .. } = datum
  ```

  Yet, the annotation feels unnecessary at this point because type can
  be inferred from the pattern itself. So this commit allows, whenever
  possible (ie when the pattern is neither a discard nor a var), to
  infer the type from a pattern.

  Along the way, I also found a couple of weird behaviours surrounding
  this kind of assignments, in particular in combination with let. I'll
  highlight those in the next PR (#979).
2024-07-24 12:42:24 +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
Matthias Benkort
967c264bfe Merge pull request #978 from aiken-lang/supercharge_traces
Supercharge traces
2024-07-23 08:53:46 +02:00
KtorZ
89890f3b4b Fill-in CHANGELOG 2024-07-19 12:44:12 +02:00
KtorZ
30ddfa23d9 Provide better parse errors in trace when using comma instead of colon. 2024-07-19 12:28:08 +02:00
KtorZ
2922c0aa6f Display expected patterns/tokens in parse error when applicable.
We've never been using those 'expected' tokens captured during
  parsing, which is lame because they contain useful information!

  This is much better than merely showing our infamous

    "Try removing it!"
2024-07-19 12:28:08 +02:00
KtorZ
d6fd37c80e Rework 'compact' mode for traces
- Trace-if-false are now completely discarded in compact mode.

  - Only the label (i.e. first trace argument) is preserved.

  - When compiling with tracing _compact_, the first label MUST unify to
    a string. This shouldn't be an issue generally speaking and would
    enforce that traces follow the pattern

    ```
    label: arg_0[, arg_1, ..., arg_n]
    ```

  Note that what isn't obvious with these changes is that we now support
  what the "emit" keyword was trying to achieve; as we compile now with
  user-defined traces only, and in compact mode to only keep event
  labels in the final contract; while allowing larger payloads with
  verbose tracing.
2024-07-19 12:28:08 +02:00
KtorZ
a9d782e206 re-introduce code-gen patch, but with a test.
Actually, this has been a bug for a long time it seems. Calling any
  prelude functions using a qualified import would result in a codegen
  crash. Whoopsie.

  This is now fixed as shown by the regression test.
2024-07-19 12:28:07 +02:00
KtorZ
5afcc9b0c1 Remove unnecessary code_gen patch.
This is a little weird but, prelude functions are handled slightly
  differently.
2024-07-19 12:28:07 +02:00
KtorZ
f8236817fe Allow serialisable (Data-able) arguments to trace
Somehow, we have to patch some function in gen_uplc because of the
  module name. I have to look further into this because it isn't normal.
2024-07-19 12:28:07 +02:00
KtorZ
beb5ac4643 Add 'diagnostic' to the prelude, as well as companion functions.
This is not fully satisfactory as it pollutes a bit the prelude. Ideally, those functions should only be visible
  and usable by the underlying trace code. But for now, we'll just go with it.
2024-07-19 12:28:07 +02:00
KtorZ
754ed07408 Type-check variadic traces & desugarize them. 2024-07-18 10:02:23 +02:00
KtorZ
f9719af23e Allow variadic arguments in trace
Although, doesn't do anything with them yet. The idea is to simplify
  the use of trace to make it a lot more useful than it currently is.
2024-07-18 10:01:34 +02:00
KtorZ
976262c2e6 Allow discard in expect.
Fixes #967.
2024-07-17 18:11:09 +02:00
KtorZ
61a991cb23 Merge branch 'benchmark-knights' 2024-07-17 13:01:32 +02:00
KtorZ
46b82fac86 Split benchmarks out of acceptance tests job. 2024-07-17 13:01:17 +02:00
KtorZ
e074037838 Move benchmarks one level up. 2024-07-17 13:00:57 +02:00
KtorZ
30d3898b5b Add Rust cache to continuous integration workflow. 2024-07-17 12:56:41 +02:00
KtorZ
52974aed75 Add clausify benchmark. 2024-07-17 12:53:19 +02:00
KtorZ
20e606e645 Add benchmarks to continuous integration workflow. 2024-07-17 12:53:18 +02:00
Matthias Benkort
28d2ee7186 Delete examples/benchmarks/.github/workflows/tests.yml 2024-07-17 12:52:29 +02:00
KtorZ
f14dab9547 Collect results from previous versions in a README. 2024-07-17 12:52:29 +02:00
KtorZ
5b0a1716b5 Fix mk_starts and second_last in knights benchmarks.
mk_starts was not yielding enough values. It's originally a translation of a double list comprehension in Haskell, which cannot simply be translated to a map2. The latter combine elements two by two, but the former works through all possible permutations.
2024-07-17 12:52:29 +02:00
KtorZ
65afb11546 Implement quicksort on chess board.
Note that it might be easier / cheaper to serialize and compare bytes?
2024-07-17 12:52:29 +02:00
KtorZ
f2ff9a2ee3 Review knights benchmark and update dependencies. 2024-07-17 12:52:29 +02:00
microproofs
1d16cbf386 more benchmark work 2024-07-17 12:52:29 +02:00
microproofs
c62821e02a continue porting over knights example 2024-07-17 12:52:29 +02:00
microproofs
8f825f68b1 commit new example for benchmarking 2024-07-17 12:52:28 +02:00
KtorZ
fe7d744946 Split continuous workflow in three jobs.
Doing all steps sequentially is starting to get long. Several of those checks are unrelated and can be done in parallel.
2024-07-16 17:41:14 +02:00