Commit Graph

3045 Commits

Author SHA1 Message Date
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
KtorZ
0145237bbe Version wix boilerplate. 2024-07-16 17:33:49 +02:00
KtorZ
e9f7e96970 Update cargo-dist setup and generated artifacts. 2024-07-16 17:30:11 +02:00
Matthias Benkort
c52ba9c873 Merge pull request #971 from rober-m/main
Solved: Nix expression broken in Darwin
2024-07-02 15:46:23 +02:00
Robertino
fef3626498 Fix: Nix expression doesn't work in Darwin 2024-07-02 11:51:46 +01:00
KtorZ
5da7db355f Use ubuntu-22.04 for linux releases, and add musl target.
This should fix the openssl linking issue, as well as provide an alternative linux build that should be fully static.
2024-07-01 17:34:13 +02:00
Matthias Benkort
8b86ee8219 Merge pull request #962 from waalge/w/bump-nix
bump nix: use rustc 1.79, add analyzer to devshell
2024-07-01 15:43:09 +02:00
rvcas
5bdea11cc1 fix: add a new assignment kind instead of using a boolean 2024-06-25 18:50:00 -04:00
microproofs
f1cfc84e67 Fix tree traversal node selection for a few of the enum variants 2024-06-25 18:50:00 -04:00
microproofs
9907dd6c64 Fix unit tests 2024-06-25 18:50:00 -04:00
microproofs
4bd9125b86 Fix delay of arguments to be exactly the same as codegen tests 2024-06-25 18:50:00 -04:00
microproofs
f695276bf7 Fix codegen tree traversal to be updated for the otherwise field and future proof the traversal function 2024-06-25 18:50:00 -04:00
microproofs
b5ac5bc949 Add current fixed tests and start working on codegen fix 2024-06-25 18:50:00 -04:00
microproofs
f0f1296906 Fix more tests 2024-06-25 18:50:00 -04:00
microproofs
cc9df04093 Fix missing delay in list_access_to_uplc. Also fix one of the unit tests. 2024-06-25 18:50:00 -04:00
microproofs
41b941e0e3 Fix castfromData in record access cases 2024-06-25 18:50:00 -04:00
KtorZ
00d1927dad Add few more test cases for the parser and type-checker. 2024-06-25 18:50:00 -04:00
rvcas
aeb079334e chore: this test doesn't make sense anymore 2024-06-25 18:50:00 -04:00
rvcas
8f343abaa1 chore: add new snapshots 2024-06-25 18:50:00 -04:00
microproofs
e09f6bbc87 delay otherwise branch to prevent premature errors 2024-06-25 18:50:00 -04:00