Commit Graph

2892 Commits

Author SHA1 Message Date
rvcas
0d8d80e5a7 feat: transform TypedValidator in a function of handlers 2024-08-25 16:20:03 +02:00
rvcas
466a4f0b39 feat: adjust blueprint stuff to be aware of handlers 2024-08-25 16:20:02 +02:00
rvcas
471bbe2175 feat: append validator name to handlers 2024-08-25 16:20:02 +02:00
rvcas
b984f0455a feat: return a vec instead of Option 2024-08-25 16:20:02 +02:00
rvcas
4287fa3f4a feat: new formatting for validators v3 2024-08-25 16:20:02 +02:00
rvcas
9e866a5ec1 fix: make sure that fallback gets it's own scope with params 2024-08-25 16:20:02 +02:00
rvcas
1d9034573b feat: impl infer for new validators 2024-08-25 16:20:02 +02:00
rvcas
fff90f7df5 feat: fix inference comp issues 2024-08-25 16:20:02 +02:00
rvcas
0de5cbc74e feat: implement new validator parsing 2024-08-25 16:20:01 +02:00
jmhrpr
c98e32d3e9 optional costmodel in eval p2 raw 2024-08-24 18:28:08 +02:00
KtorZ
8dfaa1bf90 Fix parsing of v3 cost model
Closes #1002.
2024-08-24 18:26:37 +02:00
KtorZ
a71d7c260c Fix doc_test examples for 'common_prefix' 2024-08-23 16:17:54 +02:00
KtorZ
c92b260260 Fix gen_uplc tests following: 0f905045 2024-08-23 16:17:27 +02:00
KtorZ
c3b287507e Fix link_tree test following 0ff12b92 2024-08-23 16:10:07 +02:00
KtorZ
05a3d5fb2a Revert "Switch back to pallas crates release now that 0.30.0 is out."
This reverts commit 7435dfd0e5.
2024-08-23 16:07:11 +02:00
KtorZ
842001dc0d Merge branch 'desugar-last-assignment' 2024-08-23 16:04:49 +02:00
KtorZ
70e760cbaa Fill-in CHANGELOG regarding last expect and tests now accepting Void. 2024-08-23 16:04:40 +02:00
KtorZ
9aa9070f56 Revise desugaring following feedback
- We now consistently desugar an expect in the last position as
    `Void`. Regardless of the pattern. Desugaring to a boolean value is
    deemed too confusing.

  - This commit also removes the desugaring for let-binding. It's only
    ever allowed for _expect_ which then behaves like a side effect.

  - We also now allow tests to return either `Bool` or `Void`. A test
    that returns `Void` is treated the same as a test returning `True`.
2024-08-23 16:04:40 +02:00
KtorZ
fbe6f02fd1 Allow assignment as last expression
This is debatable, but I would argue that it's been sufficiently
  annoying for people and such a low-hanging fruit that we ought to do
  something about it.

  The strategy here is simple: when we find a sequence of expression
  that ends with an assignment (let or expect), we can simply desugar it
  into two expressions: the assignment followed by either `Void` or a
  boolean.

  The latter is used when the assignment pattern is itself a boolean;
  the next boolean becomes the expected value. The former, `Void`, is
  used for everything else. So said differently, any assignment
  implicitly _returns Void_, except for boolean which return the actual
  patterned bool.

  <table>
  <thead><tr><th>expression</th><th>desugar into</th></tr></thead>
  <tbody>
  <tr>
  <td>

  ```aiken
  fn expect_bool(data: Data) -> Void {
    expect _: Bool = data
  }
  ```
  </td>
  <td>

  ```aiken
  fn expect_bool(data: Data) -> Void {
    expect _: Bool = data
    Void
  }
  ```
  </td>
  </tr>
  <tr>
  <td>

  ```aiken
  fn weird_maths() -> Bool {
    expect 1 == 2
  }
  ```
  </td>
  <td>

  ```aiken
  fn weird_maths() -> Bool {
    expect True = 1 == 2
    True
  }
  ```
  </td>
  </tr>
  </tbody>
  </table>
2024-08-23 16:04:39 +02:00
KtorZ
7435dfd0e5 Switch back to pallas crates release now that 0.30.0 is out. 2024-08-23 15:59:05 +02:00
KtorZ
d1ee90a3a0 Update CHANGELOG.md 2024-08-23 10:41:20 +02:00
KtorZ
0f905045e7 Rename mk_nil_data, mk_pair_data & mk_nil_pair_data builtins. 2024-08-23 10:39:37 +02:00
KtorZ
6e67fe837b Keep constants and types sorted; only functions are unsorted. 2024-08-23 10:30:18 +02:00
KtorZ
c3e39301e2 Re-format source code using cargo fmt. 2024-08-22 16:42:41 +02:00
KtorZ
39c1b5a68a Merge branch 'generated-docs-improvements' 2024-08-22 16:41:54 +02:00
KtorZ
b479a289cf Implement source linker and add URL to source code in generated docs.
Long overdue.
2024-08-22 16:37:48 +02:00
KtorZ
44e42d608d Allow hidden modules, not generating any documentation.
This is useful when splitting module for dependencies, yet without the desire to expose internal constructors and types. This merely skips the documentation generation; but doesn't prevent the hidden module from being accessible.
2024-08-22 15:47:00 +02:00
KtorZ
7eee3ce63c Fix CLI output colors when generating documentation. 2024-08-22 15:47:00 +02:00
KtorZ
10c829edfa Parse and display documentation section headers.
The idea is pretty simple, we'll just look for lines starting with Markdown heading sections, and render them in the documentation. They appear both in the sidebar, and within the generated docs themselves in between functions. This, coupled with the order preservation of the declaration in a module should make the generated docs significantly more elegant to organize and present.
2024-08-22 15:47:00 +02:00
KtorZ
0ff12b9246 Better module hierarchy and style for generated docs.
This commit also reverse the order of the sections in the sidebar such
  that modules are now placed last.
2024-08-22 15:43:55 +02:00
KtorZ
8b869c0a32 Do not sort functions, types and constants in generated docs
The rationale is to let them in the order they are defined, so that
  library authors have some freedom in how they present information. On
  top of that, we'll also now parse specifi comments as section headers
  that will be inserted in the sidebar when present.
2024-08-22 15:08:46 +02:00
Matthias Benkort
0b6b672149 Merge pull request #984 from aiken-lang/acceptance_107
Introduce acceptance test 107 illustrating compiler crash
2024-08-21 14:43:59 +02:00
KtorZ
35b7066163 Introduce acceptance test 107 illustrating compiler crash
```
  crates/aiken-lang/src/gen_uplc.rs:4515:30

      internal error: entered unreachable code: Shouldn't call anything other than var or apply

      Lambda {
          parameter_name: Name {
              text: "__no_inline__",
              unique: Unique(
                  0,
              ),
          },
          body: Var(
              Name {
                  text: "tests_new_list_unbound",
                  unique: Unique(
                      0,
                  ),
              },
          ),
      }
  ```
2024-08-21 14:43:08 +02:00
KtorZ
802e8272c5 Properly display constructor arguments documentation, if any. 2024-08-20 09:31:41 +02:00
Matthias Benkort
2bb2f11090 Update CHANGELOG.md 2024-08-14 10:03:42 +02:00
KtorZ
32e6705423 Merge branch 'tx-simulate-plutus-v3' 2024-08-14 03:17:14 +02:00
KtorZ
520ceff83d Do not ignore ctx/inputs.cbor; it is used/needed by the test runner. 2024-08-14 03:09:45 +02:00
KtorZ
b104356fb9 (temporarily) make script context tests more verbose. 2024-08-14 03:02:40 +02:00
KtorZ
42784965d2 Implement new costing function for {divide,quotient,mod,remainder}_integer
As well as fixing a couple of other issues thanks to conformance
  tests. Some functions like multiply_integer or verify_ed25519_signature
  have also slightly changed their costing function.
2024-08-14 02:50:05 +02:00
KtorZ
2cb87f4f8f Add PlutusV3 conformance tests and also control budgets
There were some odd discrepancy for `integerToByteString` on the mem
  side. Either 1 or about 1000 mem units off; which I couldn't quite
  figure out. Yet, it proves useful to validate builtin at large and
  ensure we have a valid cost model for v3.
2024-08-14 02:42:04 +02:00
KtorZ
f879f6d183 Fix script context translations for withdrawals and validity intervals. 2024-08-13 23:43:47 +02:00
KtorZ
fe5c5650a1 Tweak .gitattributes to exclude insta snapshots from stats (and provide better diffing). 2024-08-13 17:17:41 +02:00
KtorZ
5067aad0d8 Fix 'Pair' formatter inside forced unbroken components. 2024-08-13 17:05:41 +02:00
KtorZ
7501538053 Add script context translations for voting purpose. 2024-08-13 16:24:01 +02:00
KtorZ
bfc93bf076 Add script context translation for new Conway certificates 2024-08-13 10:56:29 +02:00
KtorZ
f244b9c496 Add support for protocol parameters (except cost models)
We can now simulate transactions with protocol parameters voting
  procedures. Cost models remain to be done, though.
2024-08-13 10:56:29 +02:00
KtorZ
50dad1fdfe Test proposal procedures through Aiken. 2024-08-13 10:56:29 +02:00
KtorZ
cfca0da4e9 Add (partial) support for simulating contract with proposal procedures
This covers every proposal procedures but protocol parameters, this
  one is yet to be done. It spans over 30+ fields, and felt like it is a
  big enough piece to tackle it on its own.
2024-08-13 10:56:29 +02:00
KtorZ
6b6bace8a5 test 'mint' purpose and script context creation.
Alongside a bunch of other stuff from the coverage list. In
  particular, the mint transaction contains:

  - reference inputs
  - multiple outputs, with assets, and type-0, type-1 and type-6
    addresses.
  - an output with a datum hash
  - an output with an inline script
  - carries an extra datum witness, preimage of the embedded hash
  - mint, with 2 policies purposely ordered wrongly, with 1 and 2
    assets purposely ordered wrong. One of the mint is actually a
    burn (i.e. negative quantity)
2024-08-13 10:56:29 +02:00
KtorZ
eea8dc7d0a Support multi-validator in script context accept test. 2024-08-13 10:56:28 +02:00