Commit Graph

1192 Commits

Author SHA1 Message Date
rvcas a44b5e1a77
test: adjust formatter tests after latest tweaks 2023-05-25 17:37:53 -04:00
rvcas 151db8d4ae
fix: formatter weirdness relates to #542 2023-05-25 17:19:02 -04:00
rvcas a124a16a61
feat(tests): implement a way to express that tests can fail 2023-05-25 16:54:53 -04:00
microproofs 6740107256 add acceptance test 17 2023-05-20 17:02:57 -04:00
microproofs dda8c4de7a adding more tests for code gen. 2023-05-20 15:29:13 -04:00
Micah Kendall ccb2d0b7ee urgent nix patch 2023-05-19 18:28:07 -04:00
rvcas d68d4656df
feat(aiken-new): output a github action
- bonus: include git short sha in version

closes #515
2023-05-18 01:33:03 -04:00
microproofs 8e60234562 chore: Release 2023-05-17 18:04:45 -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 340ed3b6a5 fix: case where identity function was used as a param.
This was causing a free unique. The fix is after stripping applied usage of identity,
we then check if it is passed around and if so we leave in the function declaration.
2023-05-16 16:21:37 -04:00
rvcas f2d8c8938c
chore: Release 2023-05-14 21:25:29 -04:00
microproofs 4838ebd39e feat: record modules are no longer unimplemented for no fields
refactor: remove some clones and use a ref instead
test: add acceptance test 81
2023-05-14 18:30:51 -04:00
microproofs 3356e2ecd0 fix: nested constrs with a single index was ignoring fields 2023-05-14 17:33:01 -04:00
microproofs c3eab4cc2a chore: fix up when tuple deconstruction test
add inline test for optimization tests
add some more builder functions
2023-05-11 18:06:46 -04:00
rvcas 1fb31e246c
fix: better conditional comp for wasm 2023-05-11 16:59:54 -04:00
rvcas e1a75391a1
chore: Release 2023-05-09 23:16:59 -04:00
microproofs 0c3dc0580a chore: add if_else optimization test 2023-05-09 19:09:24 -04:00
microproofs 6456001cbc fix: the uplc optimization tests were missing intern
add builtin force reduce tests
2023-05-09 18:55:53 -04:00
microproofs 419b946a82 fix: wrap_data_reduce optimization should leave constr data
and unconstr data untouched.
2023-05-09 16:56:50 -04:00
microproofs 4b8fd1769a chore: change pattern todos to have a better error message 2023-05-08 16:27:43 -04:00
microproofs 49898f7420 fix: to_data_builtin to operate on arg not func result 2023-05-08 16:15:09 -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 b1728b57b8 chore: Release 2023-04-28 17:11:56 -04:00
microproofs 7201163b77 fix: better function hoisting for code gen functions
mainly code gen function dependencies won't be hoisted to the top.
2023-04-28 17:05:46 -04:00
microproofs 0d0c96deda commit validator changes and tests 2023-04-28 17:05:46 -04:00
microproofs b108c0f610 chore: add optimization test on unwrap data 2023-04-27 12:17:57 -04:00
microproofs 8b11844282 clippy fix 2023-04-26 17:40:27 -04:00
microproofs c3184c544c fix: wrap data reduce had the wrong argument called in recursively, thus skipping over cases that should have been reduced
chore: Add unit tests on for uplc optimizations
2023-04-26 17:22:16 -04:00
microproofs b050018a37 test fix: blueprint change 2023-04-25 02:06:56 -04:00
microproofs ae68ae9afb fix: wrong var usage on inline_direct_reduce, now it properly looks at applied func not arg 2023-04-25 01:57:04 -04:00
rvcas baa2cef6c4
feat(playground): impl clone for some errors 2023-04-24 17:13:20 -04:00
microproofs ff87a4c60f fix: "when bool is" was not properly assigning term to body when not a complex clause
Add some end to end tests to test uplc
2023-04-23 12:51:23 -04:00
microproofs 9bb1a88f23 fix: expect [] on a non-empty list now fails. 2023-04-21 17:39:21 -04:00
microproofs 0066765ae5 convert acceptance tests 9-10 2023-04-21 16:01:54 -04:00
microproofs 016634fc38 fix: inline_direct_reduce now works properly 2023-04-21 16:01:54 -04:00
microproofs 0b7d217bd0 convert acceptance test 8 2023-04-21 16:01:54 -04:00
rvcas c9a762a13c
fix: we weren't including the name unused var warning 2023-04-20 16:53:56 -04:00
KtorZ 2a8488d3c1
Fix css media query for newly introduced navigation. 2023-04-20 16:49:45 +02:00
KtorZ 6b1ed427e7
Some minor stylistic improvements on docs generation
- [x] Show links to prelude, builtins and stdlib
  - [x] Remove project 'owner' in the header (only show repository)
  - [x] Fix type annotation overflow on mobile
  - [x] Remove the prewrap mode on mobile
2023-04-20 16:28:57 +02:00
KtorZ 4269cf20b0
Fix erroneous "aiken new" command's output instructions
Fixes #505.
2023-04-20 14:38:48 +02:00
microproofs 672a900243 chore: converted acceptance tests 5-7 2023-04-19 20:03:41 -04:00
microproofs c2ee631d07 feat: new setup for the gen_uplc testing
* new test only module aiken_project::tests
* move TestProject to tests/mod.rs
* new tests go in gen_uplc.rs
2023-04-19 16:08:55 -04:00
microproofs e4276d7f5a move uplc tests to new location 2023-04-19 16:08:55 -04:00
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 022d557906 chore: convert acceptance test 4 2023-04-19 16:08:55 -04:00
microproofs 7da3ac2c99 chore: convert acceptance test 3 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 3b351d36fb
fix(aiken-lang): assignment as last expr in when and if 2023-04-16 19:55:47 -04:00
rvcas 3d0fa1a5f6
chore: Release 2023-04-16 16:49:08 -04:00
rvcas 98c61ca151
feat(aiken-lang): anonymous functions
@MartinSchere noticed a weird error
where an unknown variable wasn't being reported
the type checker was incorrectly scoping
arguments for anonymous function definitions.
Luckily his compilation failed due to a FreeUnique
error during code gen which is good. But this may
have been the source of other mysterious FreeUnique
errors.

I also noticed that anonymous function allowed
arguments with the same name to be defined.

`fn(arg, arg)`

This now returns an error.
2023-04-16 16:38:43 -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 00550f8ddb
Add myself as co-authors for some of the project's crate
Forgot to do it before, and noticing now :D
2023-04-13 17:25: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
KtorZ 74a7257ec9
Add some more instructions to 'blueprint apply' command help text. 2023-04-13 12:23:20 +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
microproofs fc1b8738df fix: fixed how the ir was generating for expect Void, expect Bool, let Void
add some acceptance tests for the various scenarios
2023-04-12 22:37:33 -04:00
Kasey White 1e35281650
clause guard with discard is now handled 2023-04-12 08:26:03 +02:00
Kasey White 02d57cc076 tests pass now after adding in final wrapper as air elements 2023-04-09 17:43:56 -04:00
Kasey White e69a70f49c remove final wrapper and replace with equivalent air elements 2023-04-09 17:43:56 -04:00
Kasey White 9e95e24624 now tests are passing 2023-04-09 17:43:56 -04:00
Kasey White efb901f3b4 fix: issue with modifying a functions dependencies and adding a function that depended on it causing infinite loops 2023-04-09 17:43:56 -04:00
Kasey White a17ebf301f fix: now we monomorphize __expect_type functions 2023-04-09 17:43:56 -04:00
Kasey White 9d9f8a914a fix generics causing a free unique due to ordering in expect_type 2023-04-09 17:43:56 -04:00
Kasey White 581c86ed83 chore: commented code removal 2023-04-09 17:43:56 -04:00
Kasey White 4d97719e6d update blueprint tests with new hashes and script outputs 2023-04-09 17:43:56 -04:00
Kasey White 8d81345fb1 fix: diff_defined_types was not being filled if constructor had 0 args 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 4e4eed13e1 refactor define_ir_recurse to use let else 2023-04-09 17:43:56 -04:00
Kasey White 4ff0504d58 feat: change define_ir_processor to handle code_gen_functions
Also flattened out that function by using let else
2023-04-09 17:43:56 -04:00
Kasey White bc7b07c1d9 fix: expect_type now works on recursice constructors and validator args are now handled by air 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
Kasey White 6c932bb562 expect on map and list now use a function that gets instantiated as air in code gen functions 2023-04-09 17:43:56 -04:00
Kasey White abd97f0ade changed assert_on_list from being defined at uplc level to being defined at air level to enable proper hoisting 2023-04-09 17:43:56 -04:00
Kasey White f4ba6b8985 fix: unused validator args had an incorrect if check 2023-04-09 17:43:56 -04:00
Kasey White 3f45b524b8 feat: unused validator args are not expect checked 2023-04-09 17:43:56 -04:00
Kasey White 8c8312a412 fix: expect true was always expecting false 2023-04-09 17:43:56 -04:00
Kasey White ddf0fbfa0a fix: expect void now checks for unit instead of expecting data
Args in validator are now fully expected on.
Add new air FieldsEmpty to make checking for empty constructors easier
2023-04-09 17:43:56 -04:00
KtorZ 4799af3242
Rework 'blueprint apply' command and wrap up wiring up validation.
The apply command now works only from a serialized CBOR data (instead of a UPLC syntax). So it is no longer possible to specify arbitrary cbor terms through the CLI. I believe it to be an acceptable limitation for now; especially given that Aiken will never generate blueprints with non-data terms at the interface boundary.
2023-04-08 08:57:40 +02:00
KtorZ bf222a3ea2
Fix reference JSON deserialization. 2023-04-08 08:57:40 +02:00
KtorZ c18deecdc8
Show slightly better schema mismatch errors
Display terms as CBOR diagnostic when they are Plutus data.
2023-04-08 08:57:38 +02:00
KtorZ 176cb45524
Factor out error (schema mismatch) creation during blueprint validation. 2023-04-08 08:57:04 +02:00
KtorZ 7d6612b108
Rework parameter validation to work from 'Constant' instead of 'Term'
This simplifies the code and makes it more efficient as we no longer need to wrap and unwrap constant terms constantly.
2023-04-08 08:57:03 +02:00
KtorZ d58ef1a079
Implement blueprint schema & data validations. 2023-04-08 08:57:03 +02:00
KtorZ ee220881b6
Generalize schema definition to work from inline schema or reference. 2023-04-08 08:57:03 +02:00
KtorZ d620f6367c
Bootstrap schema validation for simple constants. 2023-04-08 08:57:03 +02: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
KtorZ f311e048b7
Improve error message on 'ParameterizedValidator'. 2023-04-08 08:57:01 +02:00
KtorZ cdc7ebf9a0
Remove now-unnecessary blueprint generics.
These were needed before as a way to _partially deserialize_
  blueprints. Indeed, some commands required accessing information of
  the blueprint, but not necessarily the schema. So out of laziness (or
  cleverness?), we only deserialized validators as serde::Value and
  achieved that through the use of generics.

  Now that validators and schemas have proper deserialisers, we can
  simply deserialize a blueprint.

  TODO: Our serialisation/deserialisation is safe with regards to
  itself; i.e. it roundtrips. However, we only supports a subset of the
  specified blueprint format. For example, we would fail to deserialize
  blueprints that have inline data-schemas (we only use references).
2023-04-08 08:53:51 +02:00
KtorZ f0d2d20a4c
Impl JSON deserialization for blueprint's 'Schema'. 2023-04-08 08:53:51 +02:00
KtorZ 565c0bea74
Write JSON deserializers for Reference, Constructors, Items and Data.
This is needed in order to deserialize a JSON blueprint and use it to perform validation.
  Still TODO:

  - [ ] Write JSON deserializer for 'Schema'

  Which should now be relatively straightforward.
2023-04-08 08:53:49 +02:00
rvcas 1444c9328d
fix some typos 2023-04-07 16:51:18 -04:00