Commit Graph

329 Commits

Author SHA1 Message Date
microproofs
23a7e7e680 chore: convert acceptance test 5
Also constructors with no fields are now converted to a constant data term.
2023-04-19 16:08:55 -04:00
microproofs
9de713803a feat: Add wrap data reduce which helps prevent unnecessary wrap to unwrap and vice versa.
fix: in inline_reduce the wrong arg name was used. arg instead of argument

refactor var occurences
2023-04-19 16:08:55 -04:00
microproofs
7dd13f8d73 feat: add end to end tests to replace acceptance tests with strict uplc comparison.
Add acceptance tests 1,2, 6 as end to end tests
2023-04-19 16:08:55 -04:00
rvcas
3182dac908 chore: Release 2023-04-17 10:53:30 -04:00
rvcas
e3f2fb5393 fix: need to return deserialization error here 2023-04-17 10:50:40 -04:00
rvcas
3d0fa1a5f6 chore: Release 2023-04-16 16:49:08 -04:00
rvcas
63ddef7efb chore: Release 2023-04-13 13:37:12 -04:00
rvcas
12e8ebdf4f chore: revert version bumps 2023-04-13 13:03:43 -04:00
KtorZ
067e39286d Bump versions to 1.0.0-alpha, update CHANGELOG. 2023-04-13 17:35:21 +02:00
KtorZ
e2c78bdd3b Add min rust-version to crates
So that people runs into better errors if they try installing from source with an 'obsolete' rust compiler.
2023-04-13 17:24:44 +02:00
rvcas
ccc450659a chore: switch discharge value back to the recursive form for simplicity 2023-04-13 01:28:27 -04:00
microproofs
564939ab61 feat
* remove more Rc's
* reconstruct Value::Builtin only when needed

Co-authored-by: Lucas Rosa <x@rvcas.dev>
2023-04-13 01:28:27 -04:00
microproofs
09a6ea51d6 feat(machine): reduce term allocations
* remove term from VBuiltin
* and also means we don't need the useless wrapping

Co-authored-by: Lucas Rosa <x@rvcas.dev>
2023-04-13 01:28:27 -04:00
rvcas
70f12d3fc5 chore: new branch with some things from the bumpalo branch 2023-04-13 01:28:27 -04:00
Kasey White
e69a70f49c remove final wrapper and replace with equivalent air elements 2023-04-09 17:43:56 -04:00
Kasey White
f8483da4e0 Code gen now handles expecting on validator args in the air stack.
Thus allowing us to use code gen created functions to expect on data types including recursive ones.
Some minor tweaks to the air.
Added a uplc optimization for later.
2023-04-09 17:43:56 -04:00
Kasey White
a1b3ae52d8 fix: optimization that was being ignored 2023-04-09 17:43:56 -04:00
KtorZ
9033b44044 Implement quick builder on PlutusData.
In the same spirit of the existing Term builder; I also added a `data`
  method to lift a `PlutusData` into a `Term<T>` and generalized a bit
  the builder to only require a `Term<Name>` when necessary and remain
  generic otherwise.

  The `PlutusData` builder could potentially be upstreamed to pallas
  diretly.
2023-04-08 08:57:03 +02:00
rvcas
1444c9328d fix some typos 2023-04-07 16:51:18 -04:00
KtorZ
057102c491 Add function to uplc::parser for string escape
Was originally written as a way to fix a failing property test on the
  program_builder; but the program builder is now gone. This function
  is still useful to have around.
2023-04-05 14:27:20 +02:00
rvcas
298e8068ee chore: remove program_builder 2023-03-30 21:15:27 -04:00
KtorZ
1d3315005c Support some single-character escape sequences in UPLC
Fixes #472.

  This also partially addresses #195. However, as pointed out in one of
  the comment, there's no 'official rule' when it comes to what should
  be considered valid escape sequences. Haskell relies mostly on the
  AttoParsec library and Rust also has its own set of rules.

  This is in particular true for unicode escape sequences, but there is
  a common middleground for some usual single character escapes such as
  \n or \\. So we now at least support these.

  For more complicated escape sequence, please refer to #195 for now and
  keep the discussion going there.
2023-03-30 11:50:59 +02:00
Kasey White
aa29636d50 fix: scope issue with ir_stack being incremented wrongly with assignment
Also fixed  scope of constructor tag and void in whens
2023-03-28 21:15:22 -04:00
rvcas
33a3c5dc13 feat(gen_uplc): introduce scope new type
* new module scope which holds some ancestor logic
* rework some things to truly hide scope increments

Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
rvcas
3e6f688e2d feat: refactor some methods and modules
* move uplc::ast::builder to uplc::builder
* rename aiken_lang::uplc to aiken_lang::gen_uplc
* move aiken_lang::air and aiken_lang::builder to aiken_lang::gen_uplc
  as submodules

Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
Kasey White
bb820ebdd8 fix: trace and scope issues
fix scope issues involving fieldsexpose and other destructureing pattern
fix trace to extract string from term.
2023-03-21 12:38:13 -04:00
Kasey White
6e5b24a937 refactor the rest of the term builders to use more concise code 2023-03-21 00:50:13 -04:00
Kasey White
50db958d06 update codegen to use more streamlined uplc building methods 2023-03-21 00:50:13 -04:00
Kasey White
ef3862ade8 refactor: uplc code gen uses shorthand methods 2023-03-21 00:50:13 -04:00
rvcas
c3870e340e feat(codegen): support multi-validators
* rename force_wrap to force
* add a bunch of builder methods to Term<Name>
* refactor one tiny location to show off builder methods
* split generate into `generate` and `generate_test`
* create wrap_as_multi_validator function

Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-17 18:40:44 -04:00
rvcas
5e3a902c75 fix: add back some extra info on display 2023-03-17 09:35:10 -04:00
rvcas
f8545854fc feat: json output for uplc eval 2023-03-08 10:19:36 +01:00
rvcas
bd7b8792bf feat: introduce EvalResult type 2023-03-08 10:19:36 +01:00
rvcas
4f1d14f2a0 feat: introduce miette into uplc 2023-03-08 10:19:35 +01:00
KtorZ
cb11b21c9f Update dependencies
In particular, tempfile >= 3.4.0 to remove the vulnerability on remove_dir_all
2023-03-08 10:17:22 +01:00
rvcas
8f765bfd52 fix: some breaking changes from pallas v0.18 2023-03-06 13:17:14 -05:00
rvcas
1902a2d56c chore: update all deps 2023-03-06 13:13:59 -05:00
rvcas
1f8535e76e chore: update some deps 2023-03-06 11:09:44 -05:00
rvcas
0066cc61cc Release 0.0.29
aiken@0.0.29
aiken-lang@0.0.29
aiken-lsp@0.0.29
aiken-project@0.0.29
uplc@0.0.29

Generated by cargo-workspaces
2023-02-23 19:04:18 -05:00
KtorZ
fbf65de1dc Update default cost models for Aiken
Closes #396
2023-02-22 17:03:48 +01:00
KtorZ
00e9dabe82 Add missing Plutus builtins to Aiken's lang. 2023-02-22 12:53:03 +01:00
Kasey
f3cdc05875 fix: the refactor on discharge value env (#393) 2023-02-18 20:49:29 -05:00
KtorZ
014c7a3d73 Fix error display in tx simulate. 2023-02-15 09:42:46 +01:00
KtorZ
428b5f2b37 Align output of tx simulate with other Aiken's commands.
And also return a structured output as JSON, so it's more easily used
  by other tools.

  ```
       Parsing script context
    Simulating 78ec148ea647cf9969446891af31939c5d57b275a2455706782c6183ef0b62f1
      Redeemer Spend → 0

  {"mem":151993,"cpu":58180696}
  ```
2023-02-14 16:50:55 +01:00
KtorZ
34596b3084 Fix collecting withdrawal scripts in eval_phase_one
The current implementation assumed that ALL withdrawals present in a
  transaction had to be locked by a script and failed otherwise. But a
  transaction can actually be composed of both. So instead of failing,
  we should rather just ignore withdrawals that can't be referenced by
  redeemers.
2023-02-14 15:58:34 +01:00
Kasey White
e92d9af3c2 fix: changed how list_access_to_uplc handles discards fixing unit test 55
Also fix incorrect error message in runtime in machine
2023-02-11 04:30:18 -05:00
Kasey White
0269409fa1 case where removing a lam with 0 occurrences is not safe
Since a function call can have arbitrary other calls that lead to error and that is difficult to detect.
2023-02-10 19:24:47 -05:00
rvcas
c1d67e95e1 feat: fix errors and add tests for BigInt changes 2023-02-09 15:01:30 -05:00
KtorZ
bd4aeb779c Implement integer_log2 on BigInt
Comparing it with the Haskell's implementation.
2023-02-09 18:14:00 +01:00
KtorZ
e76d26eb3c Fixup: follow compiler. 2023-02-09 16:09:49 +01:00