rvcas
eea94fc9a4
feat: move anon fn, let, and expect
2023-07-04 17:19:28 -04:00
rvcas
9c98fc8026
feat: start splitting apart expr_parser
2023-07-04 17:19:28 -04:00
rvcas
e3ed5d3b00
feat: move expr_parser and remove module.rs to definitions
2023-07-04 17:19:28 -04:00
rvcas
3339d41fdd
feat: finish moving definitions and start exprs
2023-07-04 17:19:27 -04:00
rvcas
fc580d4fa0
feat(parser): move definitions to their own modules
2023-07-04 17:19:27 -04:00
KtorZ
49098d5a45
Bump miette to 5.9.0
...
No particular reason, but it's good to be up-to-date with our dependencies.
2023-07-04 16:51:59 -04:00
KtorZ
5a6cc855e6
Use byte count for token span in the lexer.
...
Somehow, miette doesn't play well with spans when using chars indices.
So we have to count the number of bytes in strings / chars, so that
spans align accordingly.
2023-07-04 16:51:59 -04:00
microproofs
67c072a1a9
test: add acceptance test 86
...
fix: prevent mutual recursion for expect type code gen functions
2023-07-04 12:24:25 -04:00
Pi Lanningham
c10f0e53df
cargo fmt
2023-07-01 16:17:10 -04:00
Pi Lanningham
4a8cb72708
Add a blueprint policy command
...
Computes the policy ID of a minting policy; added guards for blueprint address to check that it's not a minting policy; Wasn't 100% sure where the errors should live, so I'm happy to move them if there's objections
2023-07-01 16:17:10 -04:00
microproofs
42544af799
fix: safe encode bits to check for 2^num_bits <= byte we are encoding
...
fix: I thought namedDeBruijn takes advantage of Binder for encoding and decoding.
It does not...
fix: Debruijn was being converted to NamedDeBruijn incorrectly
2023-06-30 23:06:38 -04:00
microproofs
d641f731b7
fix: needed a stricter check for expect_pattern func on discard pattern
2023-06-28 15:54:59 -04:00
rvcas
90ff211205
chore: Release
2023-06-23 19:41:14 -04:00
rvcas
619b73d03e
feat: enhance new command
2023-06-23 19:40:11 -04:00
rvcas
d633129ddf
fix: clearer unused var warning closes #579
2023-06-23 19:04:54 -04:00
microproofs
8b3504e9a1
fix: `expect _ = ...` not including the cast from data logic if the type is data and right hand has a type annotation
2023-06-23 18:39:12 -04:00
microproofs
226556bdd6
fix: builtins using the incorrect data to type conversion when used as a function param.
2023-06-23 14:31:19 -04:00
microproofs
db369da96e
feat: Make traces produced by expect dependent on
...
the value of the tracing flag.
2023-06-23 14:03:23 -04:00
microproofs
dbfa08a5a7
fix: issue with tuple clause
...
It was not consuming the next case if there was no condition being checked in the clause.
Now it properly always consumes the next clause unless last clause.
2023-06-23 12:36:15 -04:00
microproofs
626033ff9b
fix: attempt to convert from opaque before doing monomorphization
2023-06-22 18:20:31 -04:00
microproofs
24f5c4de6b
fix: the final clause of a when expecting another clause afterwards in nested list cases.
...
fix: all elements were being destructured in tuple clauses even if not used
2023-06-19 21:43:38 -04:00
microproofs
e1f788b628
chore: commit tests first
2023-06-19 21:43:38 -04:00
KtorZ
4252ee6373
Implement formatter for anon binop.
2023-06-17 08:44:59 +02:00
KtorZ
91f03abb7b
Support all binary operator in the anonymous binop parser.
2023-06-17 08:44:45 +02:00
KtorZ
d0b4c1c3b5
Add remaining boolean comparison operator to anon binop parser.
...
Nothing to see here as they all have the same signature. Implementing
arithmetic bin-operators and boolean logic operators will require some
more logic.
2023-06-17 07:57:37 +02:00
KtorZ
ec94230294
Extend parser to accept anonymous binop as expressions.
...
This is simply a syntactic sugar which desugarize to a function call with two arguments mapped to the specified binary operator.
Only works for '>' at this stage as a PoC, extending to all binop in the next commit.
2023-06-17 07:36:11 +02:00
KtorZ
ba911d48ea
Refactor 'is_capture' field on function expressions.
...
Refactored into an enum to make it easier to extend with a new variant to support binary operators.
2023-06-17 07:26:46 +02:00
microproofs
93135cebbb
fix: redeemers in the script context are sorted by redeemer ptr not data hash
2023-06-16 12:24:44 -04:00
microproofs
e72a9f8e0b
chore: rearrange code gen test order
2023-06-14 13:12:49 -04:00
rvcas
85d82e5aec
chore: Release
2023-06-13 21:24:41 -04:00
rvcas
06079fa57e
fix: wow
2023-06-13 21:03:16 -04:00
microproofs
379c2fe2bf
chore: Release
2023-06-13 20:32:22 -04:00
rvcas
878fd4de48
feat: include column number in location
2023-06-13 20:30:43 -04:00
rvcas
44e066f907
feat: add a panic hook, present issue link
2023-06-13 20:30:43 -04:00
microproofs
c3bb7b0f75
fix: tail list being expected on when it should be empty
2023-06-13 12:03:38 -04:00
microproofs
1e0f7ea0ab
fix: foldl test
2023-06-13 12:03:38 -04:00
microproofs
af36b5ac77
fixes:
...
fix: Issue where using var pattern in a when was passing the constr index instead of the constr
fix: Issue where expecting on a list had unexpected behaviors based on list length
2023-06-13 12:03:38 -04:00
rvcas
aeaec6bcd8
fix: record format when module select
...
- instead of checking the container we need to check
the FieldAccess label.
closes #601
2023-06-13 00:18:32 -04:00
microproofs
a5245fdc6b
chore: couple more identity tests in optimize step
2023-06-10 00:01:54 -04:00
microproofs
c5af6e0be3
chore: Release
2023-06-08 19:34:51 -04:00
KtorZ
6bd8e94e17
Preserve numeric underscore and hexadecimal notation through formatting.
2023-06-08 16:37:20 +02:00
KtorZ
0b7682306f
Refactor formatter to use new 'self.int' helper function.
2023-06-08 15:34:28 +02:00
KtorZ
79a2174f0a
Extend parser to support int as hexadecimal and numeric underscore.
...
We only allow numeric underscore for decimal numbers as I am not sure how we can define it for non-decimal numbers?
2023-06-08 15:33:50 +02:00
KtorZ
0ea11a4d13
Introduce new test cases for hexadecimal and underscore parsing.
2023-06-08 13:26:22 +02:00
rvcas
3fc9c8e0db
chore: re-add empty line handling by @KtorZ
...
Co-authored-by: KtorZ
2023-06-07 17:21:04 -04:00
rvcas
41a08e4a06
chore: re-add nix stuff from @waalge
...
Co-authored-by: waalge
2023-06-07 17:16:56 -04:00
rvcas
8d107b1293
fix(build): --uplc must use Program<Name> to pretty print
2023-06-07 16:25:59 -04:00
rvcas
1747090931
fix: fmt crashing with comment at end of file
...
closes #568
2023-06-07 15:59:54 -04:00
KtorZ
0afc3aba13
Fix operator precedences, in particular |>
...
Fixes #571 .
2023-06-06 17:17:47 +02:00
microproofs
5faa925aea
fix: error when using nested boolean checks in when conditions
2023-06-06 03:04:12 -04:00
microproofs
bfd2a50a6b
fix: zero arg functions were grabbing extra dependencies they didn't need to
...
fix: Had the wrong conversion for constant maps to plutus data. Fixed to check for right conversion
2023-06-04 15:23:36 -04:00
rvcas
cf6d04e95b
chore: some clippy warnings
2023-06-02 19:47:52 -04:00
microproofs
cdf8bd6548
fix: list items in when were not being added to scope
...
fix: tuple clause must preserve previous clause properties state
2023-06-02 18:38:21 -04:00
microproofs
8f0cf289b4
fixes:
...
fix: rearrange clauses and fill in gaps now handles nested patterns in a uniform way
fix: discards in records was being sorted incorrectly leading to type issues
chore: remove some filter maps in cases where None is impossible anyway
chore: some refactoring on a couple functions to clean up
2023-06-02 18:38:21 -04:00
rvcas
9c29f4f26b
fix: blueprints gen failing on List
...
closes #569
* added new methods to Definitions
it doesn't use expect
* lookup was failing for the special map/pair case
when resolving list generics
Co-authored-by: Pi <pi@sundaeswap.finance>
2023-06-02 17:53:10 -04:00
microproofs
6609ab335c
chore: add another test for field destructuring in a list
2023-06-02 13:00:09 -04:00
Pi Lanningham
fbec4a9385
Update docs.rs
...
The doc comment was long, leading to an incorrect description on the command line
2023-06-02 02:25:04 -04:00
rvcas
cb9a140601
chore: Release
2023-06-02 00:34:07 -04:00
rvcas
335cc0c8bc
feat(cli): rework uplc subcommands
...
closes #553
* rename flat to encode
* rename unflat to decode
* alias both to their old names
* both only print to stdout
use can pipe to file
* split cbor and hex flags
* hex flag works for either cbor or flat
* encode takes --to flag
[name, named-debruijn, debruijn]
* decode takes --from flag
[name, named-debruijn, debruijn]
2023-06-01 23:50:59 -04:00
rvcas
e5d9398625
fix: add module name to type mismatch error
...
* if expected and given are equal then we show
the module
* we could do it in all cases it looks kinda nice
* format is `Type - ModuleName`
2023-06-01 20:00:36 -04:00
microproofs
6955f79035
chore: update changelog
...
fix: Minor improvement to record update to use empty list instead of the null list from a record fields list.
2023-06-01 12:22:42 -04:00
microproofs
deee50b77e
fix: just change `as_key`
...
Co-authored-by: Lucas Rosa <x@rvcas.dev>
2023-05-31 00:27:31 -04:00
microproofs
a6807f0bfb
fix: seems like definition lookups weren't working
...
Co-authored-by: Lucas Rosa <x@rvcas.dev>
2023-05-31 00:18:05 -04:00
microproofs
c710d488d6
fix: need to sort record update args so they match indices order
2023-05-30 20:23:12 -04:00
microproofs
52a51acc69
fix: fix record update so it actually works
...
Created multiple tests of varying record updates
2023-05-30 20:23:12 -04:00
microproofs
e1e65d7695
typo
2023-05-30 17:28:52 -04:00
microproofs
a65821d5ab
fix: constrs that contain fields now work when passed as an arg to a function.
...
Convert acceptance test 22
Create test for passing constr as a function
2023-05-30 17:28:52 -04:00
rvcas
26a607eb00
fix: bad parsing of comments at end of file closes #551
2023-05-30 11:07:39 -04:00
rvcas
2860bac4c6
fix: bad parsing for module select type annotations closes #550
2023-05-30 10:39:49 -04:00
microproofs
28a9152f09
add acceptance tests to 20
2023-05-25 22:54:53 -04:00
microproofs
f571665538
add test 18
2023-05-25 22:54:53 -04:00
rvcas
7b3e1c6952
feat: adjust failing test syntax
...
* also add a formatter test
2023-05-25 18:21:12 -04:00
Niels Mündler
00ac6b6c56
Fix dumping of builtin pairs
2023-05-25 18:03:24 -04:00
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
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
rvcas
d8cbcde61d
feat(validators): unused param warning
...
Params being unused were being incorrectly reported.
This was because params need to be initialized
at a scope above both the validator functions. This
manifested when using a multi-validator where one of
the params was not used in both validators.
The easy fix was to add a field called
`is_validator_param` to `ArgName`. Then
when infering a function we don't initialize args
that are validator params. We now handle this
in a scope that is created before in the match branch for
validator in the `infer_definition` function. In there
we call `.in_new_scope` and initialize params for usage
detection.
2023-03-30 21:15:27 -04:00
Kasey White
8fad5b77c6
chore: add some unit tests to stack
2023-03-30 11:32:18 -04:00
KtorZ
6a4f62d074
Allow newlines in when clause sequences.
2023-03-30 13:49:00 +02:00
KtorZ
5d4c95d538
Supports commenting validator inner functions.
2023-03-30 13:37:09 +02:00
KtorZ
814157dd7b
Fix formatter inconsistency with record spread patterns.
2023-03-30 13:02:20 +02:00
KtorZ
17431daaa4
Correctly nest multiline pipeline expressions.
2023-03-30 12:48:15 +02:00
KtorZ
cb5dc75326
Remove unnecessary import.
2023-03-30 11:50:59 +02: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
KtorZ
dc500b8e13
Add missing import to owo_colors
2023-03-30 09:21:59 +02:00
KtorZ
cc18e7cff2
Fix formatting of function expressions with traces
...
Fixes #471
2023-03-30 09:21:46 +02:00
KtorZ
efa31e3df7
minor lsp tweaks
...
- forcibly disable colors
- do not show labels in error messages
2023-03-29 18:25:56 +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
80f2fd746d
test(gen_uplc::scope): more replace unit tests
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
rvcas
e5980c5a96
feat(gen_uplc::scope): use some assumptions to simplify replace
2023-03-27 20:00:32 -04:00
Kasey White
c8ac9aa165
test: add replace same value unit test
2023-03-27 20:00:32 -04:00
rvcas
5453572fc0
test(gen_uplc::scope): common ancestor method
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
Kasey White
822bb4242a
fix: function hoisting errors --
...
One involving zero args being hoisted instead of compiled and replaced.
Second involving not updating a function's dependeny function scope. Which then hoisted to a lower scope and caused free unique
2023-03-27 20:00:32 -04:00
rvcas
96b7fb1c50
chore: make clippy happy
2023-03-27 20:00:32 -04:00
rvcas
b5ed958f62
chore: remove unused variable
2023-03-27 20:00:32 -04:00
Kasey White
b2dcb112c9
fix last 2 acceptance tests
2023-03-27 20:00:32 -04:00
Kasey White
51a6589aac
2 acceptance tests left to fix
2023-03-27 20:00:32 -04:00
Kasey White
eef34b8f4b
feat: all compiler errors fixed
...
Co-authored-by: Lucas Rosa <x@rvcas.dev>
2023-03-27 20:00:32 -04:00
Kasey White
25ff8acb1e
feat: one more function to finish up
2023-03-27 20:00:32 -04:00
Kasey White
77afa76163
feat: refactor handle_each_clause
...
fix expect type ordering on constr type checking
2023-03-27 20:00:32 -04:00
rvcas
f07a959ab8
feat: almost done
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
rvcas
709ee914ed
feat: another round of functions using AirStack
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -04:00
rvcas
489dd235ff
feat(gen_uplc): finished up a few more functions
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-27 20:00:32 -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
ca0d896b8d
feat: start using AirStack methods
...
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
2d77ec1a6a
add merge function
2023-03-27 20:00:32 -04:00
Kasey White
32d34d5fd3
create struct Air Env
...
refactor out some to_strings
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
7c3750bbb4
fix: apply order on field expose
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
Kasey White
74a7a2f214
commit air changes that expose scope as a mutable pointer
2023-03-21 00:50:13 -04:00
KtorZ
6422027c6c
Fix README template for newly generated projects, and hello, world
2023-03-18 22:23:55 +01:00
KtorZ
0f35675f57
remove wrongly committed println.
2023-03-18 17:33:21 +01:00
KtorZ
0b8c3b05fe
Fill-in test scenario for parsing large integer constants.
2023-03-18 16:17:42 +01:00
KtorZ
8a2af4cd2e
Fix lexer throwing errors when parsing a too large tuple index.
2023-03-18 16:13:50 +01:00
rvcas
2dbc50f098
feat: generate_test doesn't need arguments
2023-03-17 18:41:22 -04:00
rvcas
74c61358ab
feat: new error for when multi-validators have the same arg count
2023-03-17 18:40:50 -04:00
rvcas
d753b57c1b
chore: use let-else 🤯
2023-03-17 18:40:49 -04:00
KtorZ
bc690c5410
Generated wrapped schemas for multi-validators' redeemers
2023-03-17 18:40:49 -04:00
Kasey White
bb6fc76971
start on registering redeemer wrapper type in definitions
2023-03-17 18:40:49 -04:00
KtorZ
7e1403a3b2
Complete generation of blueprint multi-validators.
2023-03-17 18:40:49 -04:00
Kasey White
fe92b27d50
start on refactoring validator to support multi-validators in blueprint
2023-03-17 18:40:49 -04:00
KtorZ
61113cd7b9
distinguish between multi vs single validator case in blueprint schema generation.
2023-03-17 18:40:48 -04:00
Lucas
22880a300f
Update crates/aiken-lang/src/parser.rs
...
Co-authored-by: Matthias Benkort <5680256+KtorZ@users.noreply.github.com>
2023-03-17 18:40:48 -04:00
Lucas
950598b534
Update crates/aiken-lang/src/parser.rs
...
Co-authored-by: Matthias Benkort <5680256+KtorZ@users.noreply.github.com>
2023-03-17 18:40:48 -04:00
Lucas
3d92772d23
Update crates/aiken-lang/src/tipo/infer.rs
...
Co-authored-by: Matthias Benkort <5680256+KtorZ@users.noreply.github.com>
2023-03-17 18:40:48 -04:00
Lucas
bf34324ac0
Update crates/aiken-lang/src/format.rs
...
Co-authored-by: Matthias Benkort <5680256+KtorZ@users.noreply.github.com>
2023-03-17 18:40:48 -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
87493bbba9
feat(register_values): refactor repeated code into register_function and register other_fun
2023-03-17 18:38:24 -04:00
rvcas
15bdb6972d
feat(fmt): better validator formatting with double supported
2023-03-17 18:38:24 -04:00
rvcas
ed92869fb9
feat(validator): parsing and typechecking for double validators
2023-03-17 18:38:24 -04:00
Matthias Benkort
3eccc349aa
Merge pull request #459 from aiken-lang/remove-multi-subjects
...
Cleanup implementation from multi-subjects when/is
2023-03-17 14:58:56 +01:00
KtorZ
660d2199d4
Make blueprint generation deterministic
...
Sort validators before iterating on them.
2023-03-17 14:57:39 +01:00
rvcas
5e3a902c75
fix: add back some extra info on display
2023-03-17 09:35:10 -04:00
KtorZ
28a3844d54
Cleanup implementation from multi-subjects when/is
2023-03-17 13:06:39 +01:00
KtorZ
c113582404
Support multi-clause patterns as syntactic sugar
...
And disable multi-patterns clauses. I was originally just controlling
whether we did disable that from the parser but then I figured we
could actually support multi-patterns clauses quite easily by simply
desugaring a multi-pattern into multiple clauses.
This is only a syntactic sugar, which means that the cost of writing
that on-chain is as expensive as writing the fully expanded form; yet
it seems like a useful shorthand; especially for short clause
expressions.
This commit however disables multi-pattern when clauses, which we do
not support in the code-generation. Instead, one pattern on tuples for
that.
2023-03-16 19:45:41 -04:00
KtorZ
660ca3fada
Fix comment formatting wrongly assuming false invariant.
2023-03-16 18:44:11 -04:00
KtorZ
57e217e81c
Add failing tests (fmt panic) on weird doc comments.
...
Isolated doc comments causes the compiler to panic with:
```
'no consecutive empty lines'
```
This is reproducible when doc comments are wrapped in sandwich between
comments and newlines.
2023-03-16 18:44:11 -04:00
KtorZ
0feb2df0a0
Minor error messages fixes.
2023-03-16 23:35:12 +01:00
Lucas
fab6d56bf2
Merge branch 'main' into newline-assignment
2023-03-16 15:30:55 -04:00
KtorZ
5d3816e984
Improve warning message for UnusedVariable
2023-03-16 15:29:44 -04:00
KtorZ
a5e505e6b0
Remove unused let-binding from type-checking
...
The typed-AST produced as a result of type-checking the program will
no longer contain unused let-bindings. They still raise warnings in
the code so that developers are aware that they are being ignore.
This is mainly done to prevent mistakes for people coming from an
imperative background who may think that things like:
```
let _ = foo(...)
```
should have some side-effects. It does not, and it's similar to
assigned variables that are never used / evaluated. We now properly
strip those elements from the AST when encountered and raise proper
warnings, even for discarded values.
2023-03-16 15:29:44 -04:00
KtorZ
45ea7acc6a
Refactor infer_assignment code to be more future-proof
...
It's generally a bad idea to use equality on enum variants because this won't trigger any compiler errors in the future yet could have hazardous effects if adding new variants. So it's usually preferrable to use exauhstive pattern matching and let the compiler warn missing cases in places where it matters.
2023-03-16 15:29:44 -04:00
KtorZ
5bea2d163d
Fix comments and remove commented-out code.
2023-03-16 15:29:44 -04:00
KtorZ
da8d3fc1fc
Removed unused warning variant: UnusedLiteral
2023-03-16 15:29:44 -04:00
KtorZ
20f5baffa7
Enforce newline after assignment / clause.
...
This leads to more consistent formatting across entire Aiken programs.
Before that commit, only long expressions would be formatted on a
newline, causing non-consistent formatting and additional reading
barrier when looking at source code.
Programs also now take more vertical space, which is better for more
friendly diffing in version control systems (especially git).
2023-03-16 19:46:46 +01:00
KtorZ
d59305a1b0
Provide better compiler feedback for type holes in annotations.
...
It is now possible to leave a hole in a type annotation and have the compiler fill-in the expected type of us.
This is a pretty useful debugging tool when playing with complex functions.
2023-03-16 14:07:06 +01:00
rvcas
bf94956c7e
feat: print todo's type when printing the todo warning
2023-03-15 16:43:09 -04:00
Kasey White
f830172493
fix: wrong scope being passed in for unwrapdata and wrapdata in assignment ir
...
Closes #441
2023-03-14 17:05:27 -04:00
rvcas
2a00ef281b
chore: bow to the clippy
2023-03-14 17:03:28 -04:00
KtorZ
724f1ac4b6
Remove unused 'FlexBreak'
...
The difference between 'FlexBreak' and 'Break(Mode::Strict/Flexible)' as always confused me; and turned out that the 'FlexBreak' thingy is never used. This is dead-code, so I removed it.
2023-03-14 16:47:43 -04:00
KtorZ
1311d9bd27
Support flexible pipe operator formatting
...
Rules are now as follows:
- If a pipeline contains a newline, then the entire pipeline is formatted over multiple lines.
- If it doesn't, then it's formatted as a single-line UNLESS it cannot fit; in which case, we fallback to multiline again.
2023-03-14 16:47:43 -04:00
KtorZ
ae981403c6
Re-introduce field title & description in referenced schemas.
2023-03-12 12:44:49 -04:00
KtorZ
451737237e
Fix blueprint generation for recursive types.
...
This was a bit tricky and I ended up breaking things down a lot and
trying different path. This commit is the result of the most
satisfying one.
It introduces a new 'concept' and types: Definitions and Reference.
These elements are meant to reflect JSON pointers and JSON-schema
definitions which we now use for pretty much all user-defined
data-types.
In fact, Schemas are no longer inlined, but are always referencing
some schema under "definitions".
This indirection is necessary in order to cope with recursive types.
And while it's only truly necessary for recursive types, using it
consistently makes it both easier to produce and easier to consume.
---
The blueprint generation for recursive types here also works thanks to
the 'Definitions' data-structure wrapper around a BTreeMap. This uses
a strategy where:
(1) schemas are only generated if they haven't been seen before
(2) schemas are marked as seen BEFORE actually being generated (to
effectively stop a recursive generation).
This relies on one important aspect: the key must be uniquely
identifying a given schema. Which means that we have to monomorphize
data-types with generic parameters also here, and use keys that are
specialized in one data-type.
---
In this large overhaul we've also lost one thing which I didn't bother
re-introducing yet to keep the work manageable: title for record
fields. Before, we use to pull those from record constructor when
available, yet now, every record constructor has been replaced by a
`$ref`. We could theoritically attach a title to the reference. I'll
try to quickly add that in a later commit.
2023-03-12 12:44:49 -04:00
KtorZ
f67e049dc2
Introduce indirection for fields.
2023-03-12 12:44:49 -04:00
KtorZ
3a7aac0a33
Make blueprint code slightly more resilient to changes.
...
Leverage traits instead of hard-coded type parameters.
2023-03-12 12:44:49 -04:00
KtorZ
e44f18bae5
Add failing test scenario for recursive types.
2023-03-12 12:44:49 -04:00
Kasey White
4a7bbc23df
fix: change in scope was applied in wrong place in pattern_ir for constr expect
2023-03-12 00:25:26 -05:00
rvcas
6440c4f498
fix(codegen): tuple pattern scopes
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-09 19:30:52 -05:00
Kasey White
f377d60085
ChooseData is now lazy with its branch arguments.
...
This enables calling the un_data builtins directly from choose_data args
2023-03-09 00:31:57 -05:00
rvcas
553eb88d3d
fix(check): record field access properly restricted to single constr types
2023-03-08 23:50:16 -05:00
rvcas
41e725152e
feat(unify): cannot cast between string and data closes #432
2023-03-08 22:47:38 -05:00
Kasey White
c85240cbed
Fix exception when doing expect boolean = ..
...
Add new Air Assert Bool
Add acceptance test 76
2023-03-08 22:31:30 -05:00
rvcas
6cde0628a7
fix(check): filter tests before code gen
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-03-08 20:58:27 -05:00
KtorZ
a66c9bd2c3
Remove redundant match on tuple blueprint generation.
2023-03-08 16:40:03 +01:00
KtorZ
2c987e289d
Fix 'find_modules_prefix' when generating docs.
2023-03-08 12:28:01 +01:00
KtorZ
ab32302117
Only generate documentation of current package with 'docs'
...
This was generating documentation for ALL packages including dependencies.
2023-03-08 12:00:59 +01:00
KtorZ
0ea4538cac
Fix typo and pluralize message for invalid field arity error.
2023-03-08 11:44:54 +01:00
Matthias Benkort
d8934b3d8d
Merge pull request #421 from aiken-lang/monomorph-panic-fix
...
Functions with only a generic return weren't being properly monomorph…
2023-03-08 11:39:50 +01:00
Kasey White
89373c32e6
Functions with only a generic return weren't being properly monomorphized. Fixed that.
2023-03-08 10:31:05 +01: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
c3175e2fc9
fix: some breaking changes from clap v4
2023-03-06 13:16:33 -05:00
rvcas
79c2cb3062
fix: toml now have a better way to capture error spans
2023-03-06 13:15:48 -05:00
rvcas
92161bed43
fix: From<&str> for GlobPattern does not exist need to use string
2023-03-06 13:15:12 -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
9f587e802c
chore: update comment
2023-03-03 20:57:20 -05:00
rvcas
e2dc4ec6c8
feat: implement convert command
2023-03-03 20:57:20 -05:00
rvcas
812ffb30f0
feat(cli): wire together a new command for convert
2023-03-03 20:57:20 -05:00
Kasey White
f230af436c
fix: scope issue with expect and function calls
...
Add acceptance test 72
2023-03-03 01:00:35 -05:00
Kasey White
60bc2ab61d
clippy
2023-03-02 21:49:20 -05:00
Kasey White
5779b77ccc
fix: Had to also check for generic type in return of a function.
...
add check to prevent stack overflow error
Add panic to prevent any other occurrences of stack overflow
2023-03-02 21:49:20 -05:00
Kasey White
fe1f200e4d
rename find_generics_... to find_and_replace_generics
...
Other renames as well
2023-03-02 21:49:20 -05:00
KtorZ
6d098a4571
Fix blueprint generation for nested fields with Data
...
Having the data's schema be optional at the level of the 'Schema' did not allow to represent cases where there would be an opaque data at an arbitrary nesting. So I introduced a new variant 'Opaque' on 'Data' to fill that gap.
2023-03-02 15:25:17 -05:00
rvcas
a40f88b918
fix: test never used Foo
2023-03-02 15:25:17 -05:00
KtorZ
65c336cb82
Update blueprint outputs to reflect latest specification.
...
Schemas of datums, redeemers and parameters are now nested under a field 'schema'. This allows to define a field 'purpose' at the same level.
2023-03-02 17:17:27 +01:00
KtorZ
70cdf3cb26
Add 'exported_data' test and revert 413a056
2023-03-02 16:09:08 +01:00
Kasey White
413a056c08
fix: Data was not allowed in an interface
...
Co-authored-by: rvcas <x@rvcas.dev>
2023-03-01 21:34:36 -05:00
Kasey White
d7c33bd62a
fix: A unique error was caused by the order in which we insert functions.
...
These functions relied on the same dependency and had the same scope. So insertion was by encounter rather than order determined by dependency handling. Now we switched to dependency order is prioritized to prevent free unique.
2023-03-01 14:22:59 -05:00
KtorZ
a46a9fca41
Only use colors & text decorations on ANSI-capable terminals.
...
Fixes #404 .
2023-02-26 13:19:03 +01:00
Kasey White
2f2be39813
clippy fixes
2023-02-26 00:13:38 -05:00
Kasey White
665a8dec67
feat: add support for unconstr_data
...
-Builitins IR now acts like Record IR in terms of argument consumption
-UnConstrData returns as Pair(Data,Data) to conform with how pairs are treated behind the scenes.
2023-02-26 00:13:38 -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
539ed2dea4
Fix unicode char parsing in comments.
2023-02-22 17:33:13 +01:00
KtorZ
fbf65de1dc
Update default cost models for Aiken
...
Closes #396
2023-02-22 17:03:48 +01:00
KtorZ
bdee5e7995
Use variable-length threshold for levenshtein distance
...
Fixes #348
2023-02-22 13:29:39 +01:00
KtorZ
00e9dabe82
Add missing Plutus builtins to Aiken's lang.
2023-02-22 12:53:03 +01:00
KtorZ
0838d48f7c
Move module name validation outside of type-checking
...
And disable it for documentation generation. This way, we can generate documentation for aiken/builtins and aiken (prelude)
2023-02-22 11:51:32 +01:00
KtorZ
6465af3ae2
Add missing keywords to highlightjs for doc generation.
2023-02-22 11:50:31 +01:00
KtorZ
c0230a811f
Add 'plutusVersion' to blueprints.
2023-02-21 15:37:35 +01:00
KtorZ
82a32a082b
Remove 'purpose' from blueprint's schema.
...
This has been removed from the CIP-0057 specification since validators
are often re-used for multiple purposes (especially validators with
arity 2). It's misleading to assign a validator a purpose since the
purpose distinction actually happens _within_ the validator itself.
2023-02-21 15:30:41 +01:00
KtorZ
db0dfbbec1
Fix blueprint schema for tuples.
2023-02-21 15:29:33 +01:00
rvcas
e611d1ee7a
chore(cmd::new): update validator definition in generated readme
2023-02-20 15:51:12 -05:00
rvcas
97f03e5e98
fix: variants no longer exist
2023-02-20 15:46:55 -05:00
rvcas
94ffc36442
chore: cargo fmt fix
2023-02-20 15:46:55 -05:00
rvcas
bd93ced647
feat: improve validator arity check
...
* add count to dynamically adjust message
* check if args is greater than 3
* delete unused project level errors
2023-02-20 15:46:55 -05:00
rvcas
6af6607df4
chore: github made a weird commit
2023-02-20 15:30:25 -05:00
rvcas
8b9991fd5b
chore: update some strings
2023-02-20 15:30:25 -05:00
Lucas
4b296de27c
Update crates/aiken-lsp/src/utils.rs
...
Co-authored-by: Matthias Benkort <5680256+KtorZ@users.noreply.github.com>
2023-02-20 15:30:25 -05:00
rvcas
52bb0e749e
fix(lsp): cannot blindly run publish after handle_request
2023-02-20 15:30:25 -05:00
rvcas
a8829889e3
feat(lsp): properly recompile project is files change
2023-02-20 15:30:25 -05:00
rvcas
c033cab79e
feat(lsp): bring over some stuff for completions, it basically doesn't work right though
2023-02-20 15:30:25 -05:00
rvcas
02eaefce21
feat(lsp): include docs on hover
2023-02-20 15:30:25 -05:00
rvcas
815d7d80c6
feat(lsp): hover and goto definition
2023-02-20 15:30:25 -05:00
rvcas
39ea803fe6
chore: remove eprintln
2023-02-20 15:30:25 -05:00
rvcas
38bcbaf701
feat(lsp): enable compiling a project
2023-02-20 15:30:25 -05:00
rvcas
b55726c90f
feat(project): remove Error::List and use Vec<Error>
2023-02-20 15:30:25 -05:00
Kasey White
70164282f8
fix: switch from unwrap to if let to allow boolean when
...
fix: test 67 fixed to take in ByteArray instead of string literal
2023-02-20 04:37:33 -05:00
Kasey White
2394438a91
clippy fix
2023-02-20 02:46:46 -05:00
Kasey White
87eb4ca3b4
feat: handle single constr when with multiple branches
...
Add case to acceptance test 40
Add special case for top level single constr in a when.
2023-02-20 02:46:46 -05:00
KtorZ
f307e214c3
Remove parse error on bytearray literals for trace, todo & error, parse as String instead.
...
This has been bothering me and the more I thought of it the more I
disliked the idea of a warning. The rationale being that in this very
context, there's absolutely no ambiguity. So it is only frustrating
that the parser is even able to make the exact suggestion of what
should be fixed, but still fails.
I can imagine it is going to be very common for people to type:
```
trace "foo"
```
...yet terribly frustrating if they have to remember each time that
this should actually be a string. Because of the `trace`, `todo` and
`error` keywords, we know exactly the surrounding context and what to
expect here. So we can work it nicely.
However, the formatter will re-format it to:
```
trace @"foo"
```
Just for the sake of remaining consistent with the type-system. This
way, we still only manipulate `String` in the AST, but we conveniently
parse a double-quote utf-8 literal when coupled with one of the
specific keywords.
I believe that's the best of both worlds.
2023-02-19 10:10:42 +01:00
KtorZ
78770d14b7
Emit warning when detecting an hex string interpreted as UTF-8 bytes.
...
This will probably save people minutes/hours of puzzled debugging. This is only a warning because there may be cases where one do actually want to specify an hex-encoded bytearray. In which case, they can get rid of the warning by using the plain bytearray syntax (i.e. as an array of bytes).
2023-02-19 10:10:42 +01:00
KtorZ
d72e13c7c8
Emit parse error when finding a ByteArray literal instead of String literal.
2023-02-19 10:10:42 +01:00
KtorZ
53fb821b62
Use double-quotes for utf-8 bytearrays, and @"..." for string literals
...
The core observation is that **in the context of Aiken** (i.e. on-chain logic)
people do not generally want to use String. Instead, they want
bytearrays.
So, it should be easy to produce bytearrays when needed and it should
be the default. Before this commit, `"foo"` would parse as a `String`.
Now, it parses as a `ByteArray`, whose bytes are the UTF-8 bytes
encoding of "foo".
Now, to make this change really "fool-proof", we now want to:
- [ ] Emit a parse error if we parse a UTF-8 bytearray literal in
place where we would expect a `String`. For example, `trace`,
`error` and `todo` can only be followed by a `String`.
So when we see something like:
```
trace "foo"
```
we know it's a mistake and we can suggest users to use:
```
trace @"foo"
```
instead.
- [ ] Emit a warning if we ever see a bytearray literals UTF-8, which
is either 56 or 64 character long and is a valid hexadecimal string.
For example:
```
let policy_id = "29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6"
```
This is _most certainly_ a mistake, as this generates a ByteArray of
56 bytes, which is effectively the hex-encoding of the provided string.
In this scenario, we want to warn the user and inform them they probably meant to use:
```
let policy_id = #"29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6"
```
2023-02-19 10:09:22 +01:00
KtorZ
98b89f32e1
Preserve bytearray format choice from input.
2023-02-19 10:09:22 +01:00
Kasey
f3cdc05875
fix: the refactor on discharge value env ( #393 )
2023-02-18 20:49:29 -05:00
KtorZ
cd4ceb219c
Remove complex and compound constants.
...
This is not supported by the code generation, so it's a bit of a lie
to have them in the language in the first place. There's arguably not
even any use for constant records, list and tuples to begin with. So
this cleans this up everywhere for the sake of moving forward with the
alpha release.
This now reduces constants to:
- Integer
- ByteArray
- String
Anything else can be declared via a function anyway. We can revisit
this choice later.... or not.
2023-02-17 17:31:15 +01:00
KtorZ
76b2396830
Fix offset location for 'SingleConstructorExpect' warnings.
2023-02-17 16:43:07 +01:00
KtorZ
4a22e5f656
Fix module comment parsing / formatting after bumping chumsky to 0.9.0
2023-02-17 14:07:24 +01:00
KtorZ
ec144fa220
Make 'choose_data' builtin available.
2023-02-17 11:25:41 +01:00
KtorZ
95e1442b49
Swap arguments to unify when inferring traces
...
The first argument shows as what the compiler expects in the error message. So it must be the correct one or the error is actually misleading.
2023-02-16 20:29:41 -05:00
KtorZ
45454ced01
Make tracing configurable, when relevant.
...
Tracing is now turn OFF by default when:
- building project
- building documentation
- building dependencies
It can be turned ON only when building project using `--keep-traces`.
That means it's not possible to build dependencies with traces. The
address `--rebuild` flag will also rebuild without traces.
Tracing is however turn ON by default when:
- checking the project (and running tests).
In this scenario, tracing can be disabled using `--no-traces` (if for
example, one want to analyze the execution units of specific functions
without having to manually remove traces from code).
2023-02-16 20:29:41 -05:00
KtorZ
e9e3f4f50a
Implement TraceIfFalse type-checking and AST transformation.
...
This caused me some trouble. In my first approach, I ended up having
multiple traces because nested values would be evaluated twice; once
as condition, and once as part of the continuation.
To prevent this, we can simply evaluate the condition once, and return
plain True / False boolean as outcome. So this effectively transforms any
expression:
```
expr
```
as
```
if expr { True } else { trace("...", False) }
```
2023-02-16 20:29:41 -05:00
KtorZ
6a50bde666
Implement parser & formater for 'TraceIfFalse'
...
Interestingly enough, chumsky seems to fail when given a 'choice' with
more than 25 elements. That's why this commit groups together some of
the choices as another nested 'choice'.
2023-02-16 20:29:41 -05:00
KtorZ
60390fe4f0
Add TraceIfFalse untyped expression
...
The goal is to handle this without bothering the code generation down the line. That is, we can handle it when transforming from the untyped AST to the typed one. That's why there's no 'TraceIfFalse' constructor in the typed AST. It has disappeared during type-check.
2023-02-16 20:29:41 -05:00
Kasey White
6ce62115f7
found formatting issue
2023-02-16 20:27:00 -05:00
Kasey White
d7cfca2a57
fix condition and branch body getting passed same scope
2023-02-16 20:27:00 -05:00
Kasey White
d1ca85c4bc
feat: add support for assign and nested assign
...
My formatter is not working :'(
2023-02-16 20:27:00 -05:00
KtorZ
3204322da6
Fix validator lookup by title.
...
We want the lookup to yield a result when there's only a single
validator; and no title is provided. So that users can simply do
'aiken address' in their project if it's unambiguous. The validator's
name is only required to disambiguate between multiple validators.
I also noticed that the order of arguments in with_validator was
wrong. Somehow.
2023-02-16 10:28:27 +01:00
KtorZ
20841962f6
Fix error messages still referring to blueprint's purpose.
2023-02-16 10:06:12 +01:00
Matthias Benkort
ec6baf3a6a
Merge pull request #351 from aiken-lang/acceptance-test-054-pattern-match-on-list
...
Add new acceptance test scenario: 056
2023-02-16 10:01:56 +01:00
rvcas
2151fe4484
fix(infer): if branch bodies need to be checked in a new scope
2023-02-16 00:05:55 -05:00
rvcas
c4a588f3dd
test(check): if scoping
2023-02-16 00:05:55 -05:00
rvcas
7b0faa7c1c
test(check): validator errors and warning
2023-02-16 00:05:55 -05:00
rvcas
a311531508
fix(cli): aiken address
2023-02-16 00:05:55 -05:00
rvcas
8b4985498b
chore: add fmt test for validator
2023-02-16 00:05:55 -05:00
rvcas
2e78b7100c
fix: blueprint tests
2023-02-16 00:05:55 -05:00
rvcas
b057d27465
fix: some updates from latest main
2023-02-16 00:05:55 -05:00
rvcas
673b57b81c
feat: get bluprint stuff compiling again
2023-02-16 00:05:55 -05:00
rvcas
d03288cece
feat(validator): move return type and arity check to infer
2023-02-16 00:05:55 -05:00
rvcas
a88a193383
fix: properly lex new token and adjust parsed spans
2023-02-16 00:05:55 -05:00
rvcas
e647330433
fix: better formating for validator
2023-02-16 00:05:55 -05:00
rvcas
a044c3580e
feat: typecheck validators
2023-02-16 00:05:55 -05:00
rvcas
2e7fe191db
feat(definitions):
...
* add parsing for new validator defs
* start adding typechecking
* add a unit test for parsing
2023-02-16 00:05:55 -05:00
Kasey White
2fa494bda7
fix: calculated list pattern length with tail incorrectly before.
...
Now subtract 1 from length since next item does not need a end of list check
2023-02-15 22:12:41 -05:00
KtorZ
56258dc815
Fix todo/error parser on when clauses.
2023-02-16 00:40:49 +01:00
KtorZ
808ff97c68
Preserve trace, error & todo formatting.
2023-02-15 23:19:07 +01:00
KtorZ
6525f21712
Remove 'Todo' from the AST & AIR
...
Todo is fundamentally just a trace and an error. The only reason we kept it as a separate element in the AST is for the formatter to work out whether it should format something back to a todo or something else.
However, this introduces redundancy in the code internally and makes the AIR more complicated than it needs to be. Both todo and errors can actually be represented as trace + errors, and we only need to record their preferred shape when parsing so that we can format them back to what's expected.
2023-02-15 21:57:08 +01:00
KtorZ
7b676643bd
Lift 'error' up one level in the parser and remove its label.
...
We now parse errors as a combination of a trace plus and error term. This is a baby step in order to simplify the code generation down the line and the internal representation of todo / errors.
2023-02-15 21:09:03 +01:00
KtorZ
7abd76b6ad
Allow to trace expressions (and not only string literals)
...
This however enforces that the argument unifies to a `String`. So this
is more flexible than the previous form, but does fundamentally the
same thing.
Fixes #378 .
2023-02-15 21:07:56 +01:00
KtorZ
7251b2d01e
Remove single-argument function call special-case in formatter
...
Not sure what this special case was trying to achieve, but it's not right. There's no need to handle function call with a single argument differently than the others.
2023-02-15 17:22:08 +01:00
KtorZ
014c7a3d73
Fix error display in tx simulate.
2023-02-15 09:42:46 +01:00
Kasey White
a24fc55993
Delay 2nd arg on trace in case it throws and prevents trace from printing
2023-02-15 03:06:58 -05:00
Kasey White
e15e725bfe
add one more test
2023-02-15 02:20:05 -05:00
Kasey White
5e5a9dd25f
quick fix for test 59
2023-02-15 02:20:05 -05:00
Kasey White
32b0200966
fixes: tuple clauses, zero args funcs, list clause named pattern
...
List Clauses patterns handle var cases
Fixed Tuple Clauses issue with last clause not being a tuple
Redid how zero arg functions and dependencies are handled. Tough one lol
2023-02-15 02:20:05 -05:00
Kasey White
b7fa57027a
scope is now properly handled in expect cases
2023-02-14 12:38:36 -05: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
3b3ec7d95c
format fix
2023-02-12 19:12:38 -05:00
Kasey White
765ceefd38
feat: add ability to downcast void to data
2023-02-12 18:56:38 -05:00
Kasey White
4c838defd1
fix issue with final clause producing clauseguard air
2023-02-12 18:43:11 -05:00
Kasey White
e9883adf12
fix: scope issue when using when with a function call subject
2023-02-12 18:43:11 -05:00
Kasey White
4b1015e0d4
change how expect works on lists and constructors
...
Add more coverage to acceptance test 40 on expect
2023-02-11 22:26:34 -05:00
Matthias Benkort
deb2ab8f80
Merge pull request #362 from aiken-lang/patterns-improvements
...
Patterns improvements
2023-02-11 22:46:04 +01:00
KtorZ
b83a247ff7
Add slightly more informative note for list pattern on int.
2023-02-11 17:00:32 +01:00
KtorZ
2e8fd6e1c2
Remove patterns on 'String'
...
There's arguably no use case ever for that in the context of on-chain
Plutus. Strings are really just meant to be used for tracing. They
aren't meant to be manipulated as heavily as in classic programming
languages.
2023-02-11 16:57:14 +01:00
KtorZ
6649821200
Add type-checker sanity tests for list patterns.
2023-02-11 16:54:49 +01:00
KtorZ
56e90fba21
Add missing newlines to 'join' in error messages.
2023-02-11 16:24:56 +01:00
KtorZ
3c7663cd3c
Basic exhaustivness check on list patterns
...
Before that commit, the type-checker would allow unsafe list patterns
such as:
```
let [x] = xs
when xs is {
[x] -> ...
[x, ..] -> ...
}
```
This is quite unsafe and can lead to confusing situations. Now at
least the compiler warns about this. It isn't perfect though,
especially in the presence of clause guards. But that's a start.
2023-02-11 16:20:28 +01:00
rvcas
831a37d094
feat: shouldn't use this warning on list
2023-02-11 09:42:39 -05: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
ddef61a855
fix: blueprint tests
2023-02-10 19:45:44 -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
KtorZ
21fbd48b8d
Improve error on duplicate imports.
2023-02-10 17:07:08 +01:00
KtorZ
f747ee0aca
Improve error message when finding a non-exhaustive let-binding.
2023-02-10 11:01:13 +01: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
rvcas
cfbe5fd3cc
feat: use BigInt in constant integer
2023-02-09 09:46:42 -05:00
rvcas
ec58279424
test(machine): integer overflow
2023-02-09 09:44:06 -05:00
Matthias Benkort
37bd22a0d2
Merge pull request #353 from aiken-lang/rvcas/assert_expect
...
Rename assert to expect
2023-02-09 15:17:14 +01:00
rvcas
461aaf14bd
chore: no more loose numbers for location offsets
2023-02-09 09:16:54 -05:00
KtorZ
b5cf8c78a5
Add Ordering data-type definition to prelude known constructors.
2023-02-09 14:36:39 +01:00
KtorZ
6be2a9ed80
Fix formatting of unary operators applied to binary operators.
...
Add crucial parenthesis...
2023-02-09 13:58:11 +01:00
KtorZ
83a86e6dc0
Fix logical operator precedence in parser.
...
Whoopsie... || and && were treated with the same precedence, causing very surprising behavior down the line.
I noticed this because of the auto-formatter adding parenthesis where it really shouldn't. The problem came actually from the parser and how it constructed the AST.
2023-02-09 13:57:12 +01:00
KtorZ
62fe321ddf
Add 'Ordering' data-type to the Prelude.
...
Useful to have around to build comparison functions.
2023-02-09 11:07:30 +01:00
Matthias Benkort
b803332f99
Update crates/aiken-lang/src/tipo/error.rs
2023-02-09 09:25:33 +01:00
rvcas
460da20e4a
feat: warn when using expect in a completely safe way
2023-02-09 02:10:22 -05:00
rvcas
e9caa710c4
chore: rename assert_parser to expect_parser
2023-02-09 01:05:11 -05:00
rvcas
9348caab2f
feat(expect): update formatter
...
* Token::Expect should format to expect
* since we still capture assert this means
we can help users update to the new syntax
2023-02-09 00:57:38 -05:00
rvcas
3f540c7c99
chore: rename assignment kind
2023-02-09 00:47:38 -05:00
rvcas
dbd162e985
feat: handle expect in parser
...
* map both assert/expect to Token::Expect
* use the new token in the parser
* new unit test to expect
2023-02-09 00:43:29 -05:00
rvcas
5a4a8df727
feat(token): add Token::Expect
2023-02-09 00:25:54 -05:00
rvcas
fd14da0720
chore: fix blueprint tests
2023-02-09 00:09:23 -05:00
Kasey White
f60b7d84c1
clippy fix
2023-02-09 00:09:23 -05:00
Kasey White
076871492b
fix: unwrap used in a reachable place. Replaced with alternative option
2023-02-09 00:09:23 -05:00
Kasey White
9ae28aaa88
all nebula tests pass. Had one more fix on listaccessor to finish
2023-02-09 00:09:23 -05:00
Kasey White
986a6009f7
fix: Various fixes for FieldsExpose, ListAccessor, TupleAccessor
2023-02-09 00:09:23 -05:00
KtorZ
95a62f7172
Fix oversights in blueprint / schema generation.
2023-02-08 19:04:50 +01:00
alessandrokonrad
221f1afbfe
Changed imports
2023-02-08 16:28:59 +01:00
alessandrokonrad
74b3507777
Added tag/constructor conversion tests
2023-02-08 16:26:58 +01:00
Ales
242eaa8b67
Merge pull request #347 from spacebudz/constr
...
Fix constructor tag range
2023-02-08 14:52:50 +01:00
alessandrokonrad
ce648b7483
Fixed schnorr and limiting it to 32 bytes messages for now
2023-02-08 08:04:24 -05:00
alessandrokonrad
3012a0b41d
Fix constructor tag range
2023-02-08 13:14:26 +01:00
alessandrokonrad
7c9443d87f
Changed to prehash function
2023-02-07 22:53:30 +01:00
KtorZ
6e554129e9
Fix blueprint validator tests.
2023-02-07 12:28:34 +01:00
Matthias Benkort
8feaefe073
Merge pull request #335 from aiken-lang/blueprint-parameters
...
Blueprint parameters
2023-02-07 11:43:01 +01:00
KtorZ
4aa92a6d5e
Use positional argument for blueprint 'apply' command
2023-02-07 11:42:42 +01:00
rvcas
08e8347317
chore: rename feature flag to native-secp256k1
2023-02-07 00:25:22 -05:00
rvcas
67a2674d27
feat: allow verify functions to build for wasm
2023-02-07 00:25:22 -05:00
Kasey White
5d0c5d2a5b
remove a redundant type replacement in build_ir
2023-02-05 23:56:44 -05:00
rvcas
3ff927d30a
feat: reset the generator when generate finishes
2023-02-05 20:35:39 -05:00
rvcas
501d667532
chore: fix tests
2023-02-05 20:35:39 -05:00
Kasey White
f1b24a5f6d
fix: the following issues
...
fix conversion from inner opaque type for when and assignment
This fixes Clause being used in cases where ListClause or TupleClause should be used
Reset defined and zero arg functions between each code gen
Fixes for optimizations when encountering shadowed variables
2023-02-05 20:35:39 -05:00
Kasey White
c32a9d7b6f
commit working changes so far
2023-02-05 20:35:39 -05:00
rvcas
31cd19f198
feat: use secp256k1 to implement verify for ecdsa and schnorr
2023-02-04 22:07:56 -05:00
rvcas
cde3e31723
feat: fill in todo for verify ecdsa and schnorr costing
2023-02-04 22:07:56 -05:00
rvcas
09d8d683b6
fix: switch to error from secp256k1
2023-02-04 22:07:56 -05:00
rvcas
fb69a2c8a9
fix: switch to rust bindings for bitcoin-secp256k1
2023-02-04 22:07:56 -05:00
rvcas
c2ff9389c5
feat(runtime): implement verifyEcdsaSecp256k1Signature
2023-02-04 22:07:56 -05:00
rvcas
d224fe5356
feat(runtime): set force count and arg typechecking for the elliptic curve builtins
2023-02-04 22:07:56 -05:00
rvcas
fb37521857
feat: make a transparent machine error for signature::Error
2023-02-04 22:07:56 -05:00
rvcas
175cd777d8
feat: enable elliptic curve verification builtins
2023-02-04 22:07:56 -05:00
rvcas
7bffb994fc
feat: add k256 for elliptic curve algos
2023-02-04 22:07:56 -05:00
dependabot[bot]
71b7ec6088
chore(deps): bump tokio from 1.23.1 to 1.24.2
...
Bumps [tokio](https://github.com/tokio-rs/tokio ) from 1.23.1 to 1.24.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases )
- [Commits](https://github.com/tokio-rs/tokio/commits )
---
updated-dependencies:
- dependency-name: tokio
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-02-04 20:06:54 -05:00
rvcas
ddad05bf51
chore: leave a comment for later
2023-02-04 15:33:18 -05:00
KtorZ
b04fb5962a
Do not compute addresses of parameterized validators
...
And leave a proper notice.
2023-02-04 11:49:56 +01:00
KtorZ
9b8ff590b8
Implement 'blueprint apply' command.
...
This is still a bit clunky as the interface is expecting parameters in UPLC form and we don't do any kind of verification. So it is easy to shoot oneself in the foot at the moment (for example, to apply an integer into something that should have received a data). To be improved later.
2023-02-04 11:39:55 +01:00
KtorZ
ea269b14a2
Fix deserialization issue when 'parameters' is missing.
...
Deserialize to an empty vector.
2023-02-04 11:38:09 +01:00
KtorZ
592d3d7a1c
Define 'apply_parameter' method on 'Project'
2023-02-04 10:44:33 +01:00
KtorZ
12f4768008
Write method to apply a UPLC term to an existing 'Validator'
2023-02-04 10:22:23 +01:00
KtorZ
9c71aab3db
Factor out reusable parts regarding blueprints from lib/project
...
So we can re-apply the same logic for applying arguments.
2023-02-04 10:21:45 +01:00
KtorZ
55ecc199d1
Add 'parameters' to blueprints for parameterized validators.
...
Without that, we have no way to distinguish between fully applied
validators and those that still require some hard-coded parameters.
Next steps is to make it easier to apply parameters to those, as well
as forbid the creation of addresses of validators that aren't fully
qualified.
2023-02-04 09:31:43 +01:00
Kasey White
4c8221e439
fix: add is data check to recursive_assert_tipo
2023-02-04 02:47:55 -05:00
Kasey White
86ca466807
feat: some code gen improvements
...
* fix assert on pattern Var
* fix tuple index unwrapping closes #334
* allow wrapping when casting with let
* allow wrapping when casting via function call
2023-02-04 02:33:10 -05:00
rvcas
c126f6acda
feat: invert how casting is controlled
...
I decided to invert how I'm doing it. I'm passing
in a new argument to unify in environment called
allow_cast: bool and essentially at various
unification sites I can control whether or not I
want to allow casting to even occur. So we can
assume it's false by default always and then we
turn it on in a few places vs. just opening the
flood gates and locking it down at various sites
as they come up# Please enter the commit message
for your changes. Lines starting
2023-02-04 02:33:10 -05:00
rvcas
2b554d105a
fix: when Data cast bypass
2023-02-04 02:33:10 -05:00
rvcas
a9ed04ef22
feat: newer rules around casting Data
...
* you cannot cast FROM Data with a `let`
* you cannot cast FROM Data by passing
Data to none Data when calling a function
* you MUST use `assert` to cast from data
* you can cast INTO Data with a `let`
* you can cast INTO Data by passing none Data
to Data when calling a function
* You cannot assert cast Data without an
annotation
2023-02-04 02:33:10 -05:00
Niels Mündler
700e9cab5b
Add missing carets when dumping builtin list
2023-02-02 17:32:03 -05:00
rvcas
ae42dc964a
fix: allow var and discard with data on right hand side
2023-02-02 01:16:53 -05:00
rvcas
39e0716f5f
feat: better rules around Data casting
...
* you cannot cast to Data ever
* you can cast from Data to ANY TYPE
* you cannot cast via a function call arg hack
2023-02-02 00:43:45 -05:00
rvcas
c9d0ce0392
chore: fmt
2023-02-01 23:49:33 -05:00
rvcas
50b5273967
fix(tests): validator hashs and cbor changed for blueprints
2023-02-01 23:49:33 -05:00
Kasey White
1843b7e73b
clippy fix and remove some prints
2023-02-01 23:49:33 -05:00
Kasey White
9dc2bac2c3
fix:minor optimization fixes
...
Unique only comparison for equals led to strange results
Fixed by interning in a different spot
2023-02-01 23:49:33 -05:00
Kasey White
fdf89b7326
implement optimizations
...
-Force usage on builtins
-Inline vars used once
-Lambdas that use a var as an arg
-Lambdas that use a const as an arg
2023-02-01 23:49:33 -05:00
rvcas
88ce8ba8b9
feat: remove check assignment
2023-02-01 23:03:35 -05:00
rvcas
21251d6499
fix: remove check from lexer
2023-02-01 20:44:58 -05:00
Kasey White
3123ad9079
change eval_builtin_app to return Rc so that ifthenelse and chooselist are faster
2023-02-01 18:53:11 -05:00
Kasey White
456b08a205
minor performance improvements
...
Changed a couple cases where the inner Rc object was cloned to use the Rc object instead
2023-02-01 18:53:11 -05:00
rvcas
99c1c880b0
chore: more clippy
2023-02-01 18:53:11 -05:00
rvcas
a365649360
chore: clippy autofix
2023-02-01 18:53:11 -05:00
rvcas
9c4e921e79
feat: more Rc in machine
2023-02-01 18:53:11 -05:00
rvcas
c8efe60843
feat: use Rc for more things, fib_iter runs almost 3 seconds faster now
2023-02-01 18:53:11 -05:00
rvcas
eda3194cf0
feat: trying Rc for Name
2023-02-01 18:53:11 -05:00
Kasey White
b5d9a9bb52
Change discharge_value and discharge_value_env to use a stack machine
2023-02-01 18:53:11 -05:00
rvcas
790e8ba680
fix: start trying to get rid of recursion for discharge value
2023-02-01 18:53:11 -05:00
rvcas
618ea0c8dc
feat: switch to zip from zip-extract
2023-02-01 14:50:18 -05:00
dependabot[bot]
6974d31285
chore(deps): bump tokio from 1.23.0 to 1.23.1
...
Bumps [tokio](https://github.com/tokio-rs/tokio ) from 1.23.0 to 1.23.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases )
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.23.0...tokio-1.23.1 )
---
updated-dependencies:
- dependency-name: tokio
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 12:36:49 -05:00
Matthias Benkort
ecc5e13ccd
Merge pull request #316 from aiken-lang/cip-0057-blueprints
...
Blueprints (CIP-0057) as build artifacts
2023-01-31 17:45:56 +01:00
KtorZ
a50b51e086
Fix bytearray literals parsing and formatting.
...
Weirdly enough, we got the parsing wrong for byte literals in expressions (but did okay in constants). But got the formatting wrong in constants (yet did okay for formatting expressions). I've factored out the code in both cases to avoid the duplication that led to this in the first place. Plus added test coverage to make sure this doesn't happen in the future.
2023-01-31 17:19:40 +01:00
KtorZ
daee8e39d6
Implement new command: address
...
This calculates a validator's address from validators found in a blueprint. It also provides a convenient way to attach a delegation part to the validator if needs be. The command is meant to provide a nice user experience and works 'out of the box' for projects that have only a single validator. Just call 'aiken address' to get the validator's address.
Note that the command-line doesn't provide any option to configure the target network. This automatically assumes testnet, and will until we deem the project ready for mainnet. Those brave enough to run an Aiken's program on mainnet will find a way anyway.
2023-01-31 15:39:40 +01:00
KtorZ
1aa12fb368
Implement serde's Deserialize for blueprints.
...
Here's a trick though: I got lazy (a bit) and did not write a full deserializer for Schema because this is busywork and not at all necessary at this stage. Instead, I've made the blueprint parameterized by a generic type <T>; which represents the type of the underlying blueprint's schema. When deserializing from JSON, we can default to 'Value' to get a free deserializer. Since all we're interested about is the program and the metadata (purpose and title) of a validator, it works nicely.
Serialization however expects a Blueprint<Schema>, and most of the functions operates over a Blueprint<Schema> anyway.
2023-01-31 15:39:40 +01:00
KtorZ
cab59c188a
Define serde's Serialize/Deserialize for Program<DeBrujin>
...
This will be useful to re-use this behavior in other structure that contains a Program<DeBruijn> without having to manually serialize or deserialize the entire structure.
2023-01-31 15:39:40 +01:00
KtorZ
4588ccd040
Better use of From/Tryfrom within the blueprint module.
2023-01-31 15:39:40 +01:00
KtorZ
22a1c1dfb4
Use IndexMap throughout
...
In an ideal world, I should have handlded that directly at the conflicting commit in the rebase, but this would have bubbled up through all commits... which I wasn't really quite keen on going through. So here's an extra ugly commit that comes and 'fix the rebase'.
2023-01-31 09:51:00 +01:00
KtorZ
90ee86d14e
Improve error reporting for the blueprint generation.
...
Actually link schema error to source code with a span and a label. This is easily done and provides some extra context.
2023-01-31 09:48:45 +01:00
KtorZ
b3fc2d51cf
Fix help on unknown::module error.
2023-01-31 09:48:45 +01:00
KtorZ
2523816813
Handle opaque single-variant-single-field special case.
2023-01-31 09:48:45 +01:00
KtorZ
aaa8cba0cf
Fix nested generics and phantom-types, and handle list special case
...
List of pairs are actually encoded as 'map'.
2023-01-31 09:48:45 +01:00
KtorZ
9a44cba007
Add support for generics in the blueprint generation.
2023-01-31 09:48:45 +01:00
KtorZ
0bd9d045b0
Support tuples in blueprint generation.
2023-01-31 09:48:44 +01:00
KtorZ
d2cc44e5f4
Allow testing blueprint generation from Aiken programs
...
This is quite something, because now we have a testing pipeline that
can also be used for testing other compiler-related stuff such as the
type-checker or the code generator.
2023-01-31 09:48:44 +01:00
KtorZ
b93e14659c
Refactor blueprint & handle annotated schemas
...
This also now introduce two levels of representable types (because it's needed at least for tuples):
Plutus Data (a.k.a Data) and UPLC primitives / constants (a.k.a Schema).
In practice, we don't want to specify blueprints that use direct UPLC primitives because there's little support for producing those in the ecosystem. So we should aim for producing only Data whenever we can. Yet we don't want to forbid it either in case people know what they're doing. Which means that we need to capture that difference well in the type modelling (in Rust and in the CIP-0057 specification).
I've also simplified the error type for now, just to provide some degree of feedback while working on this. I'll refine it later with proper errors.
2023-01-31 09:48:44 +01:00
KtorZ
547696abde
Add title and description to exported types in the blueprint
...
This also fixes a bug where the documentation of record constructor arguments would be dropped after type-checking. Took me a while to pinpoint.
2023-01-31 09:48:44 +01:00
KtorZ
59ffc6434f
Add title to blueprint's validators
...
And use it to prefix UPLC artifacts' names.
2023-01-31 09:48:44 +01:00
KtorZ
f8970ecb9e
Move UPLC dump into separate function + log event.
...
```
Compiling aiken-lang/stdlib 43d8e740ffdf5febc59e51b7f0d5f8506115340c (examples/hello_world/build/packages/aiken-lang-stdlib)
Compiling aiken-lang/hello_world 1.0.0 (examples/hello_world)
Generating project's blueprint (examples/hello_world/plutus.json)
Exporting UPLC (examples/hello_world/artifacts)
```
2023-01-31 09:48:44 +01:00
KtorZ
b667b7f7b7
Refactor test collection to use the new CheckedModules method
...
And also, caught a little issue regarding the filtering of test cases.
2023-01-31 09:48:44 +01:00
KtorZ
5683d19a4c
Refactor build steps to generate blueprints instead
...
The blueprint is generated at the root of the repository and is
intended to be versioned with the rest. It acts as a business card
that contains many practical information. There's a variety of tools
we can then build on top of open-source contracts. And, quite
importantly, the blueprint is language-agnostic; it isn't specific to
Aiken. So it is really meant as an interop format within the
ecosystem.
2023-01-31 09:48:38 +01:00
KtorZ
3cefbd00af
Draft basic Blueprint schema type definition.
...
This doesn't include validations yet. Let's start simple
and try to get some basic schema generated already.
2023-01-31 09:47:47 +01:00
rvcas
60ad3dae50
chore: fmt builder.rs
2023-01-30 12:07:50 -05:00
rvcas
af67f41ead
fix: Air::Lam not real, probably meant Air::Let
2023-01-30 12:01:40 -05:00
Lucas
b653714c0c
Merge branch 'main' into when-clause-guards
2023-01-30 11:40:29 -05:00
Kasey White
0ea2be0e95
feat: Add codegen for handling clause guards
2023-01-30 05:11:27 -05:00
Kasey White
a638388747
Add more complex test 40.
...
Add assert for when constr index is given
2023-01-30 04:17:03 -05:00
Kasey White
8c04ab093a
update test 40
2023-01-30 03:24:52 -05:00
Kasey White
afd040fda5
feat: Finish up assert feature
...
Better error reporing on NonFunctionalApplication Error
Refactor redundant code
Add handling of whens with one clause.
2023-01-29 05:21:55 -05:00
Kasey White
4c8089c28a
Assert now works for a variety of types.
...
Still some final work to finish and test. Things are good so far
2023-01-28 05:14:12 -05:00
Kasey White
60736b4a54
chore: Add error when type casting without annotation
...
Also implement and test most of assert. Finishing last few cases.
2023-01-28 02:40:53 -05:00
Kasey White
fc88028034
some refactoring and adding assert on lists
2023-01-27 05:02:19 -05:00
Kasey White
d4eec1fe79
chore: Add scaffolding for assert
2023-01-27 05:02:19 -05:00
Kasey White
38c24cca01
single clause when not yet implemented
2023-01-27 05:02:19 -05:00
Kasey White
1af1b6d898
finalize aiken ir with typing
2023-01-27 05:02:19 -05:00
rvcas
4976ea4164
chore: add test for the new token captures
2023-01-26 10:16:29 -05:00
rvcas
703fcb451d
fix(parser,windows): capture carriage return properly
2023-01-26 10:16:29 -05:00
rvcas
3c97f057cc
chore: fix clippy
2023-01-24 12:07:06 -05:00
rvcas
ba05f1f070
feat: add label to span
2023-01-24 12:07:06 -05:00
rvcas
a485406e3d
fix: use the location of the pattern not the entire clause
2023-01-24 12:07:06 -05:00
rvcas
7206360baa
feat(when): single when clause now emits warning
2023-01-24 12:07:06 -05:00
Kasey White
e36f91c39c
fix: multiple list cases of the same length weren't being handled
2023-01-21 19:42:17 -05:00
Kasey White
e8fb386bdc
chore: Switch from hashmap and hashset to indexmap and indexset
2023-01-21 18:10:15 -05:00
KtorZ
5d7585cc05
Implement parser for when clause guard
...
With pretty parse errors on failures. The type-checker was already
implemented for those, so it now only requires some work in the code
generation.
Fixes #297 .
2023-01-21 17:43:13 +01:00
KtorZ
91bd0d1d77
Display warning help + minor error improvements.
2023-01-21 17:42:58 +01:00
KtorZ
333a990249
Fix parsing of subtractions and negations in the absence of space.
2023-01-21 12:43:11 +01:00
KtorZ
bb360cd7c8
Fix display of 'UnknownLabels'
...
This is a bit annoying as we are forced to use #[related] here which isn't quite what we want.
Ideally, this would use #[diagnostic_source] but, there's a bug upstream. See: zkat/miette#172 .
2023-01-21 11:37:19 +01:00
KtorZ
d905f24e7f
Forbid solo-assignment as the only function body
...
In the similar spirit to what we did for sequences. Yet, we need to handle the case of body being just an assignment -- or a trace of an assignment which is basically the same thing.
2023-01-21 10:32:06 +01:00
KtorZ
2101bb924d
Fix tuple-pattern parser
...
This case was originally left out but, tuple parsers are almost always exclusively starting with a NewLineLeftParen token.
2023-01-21 10:04:11 +01:00
KtorZ
d321b85df2
Refactor type errors back into macro annotations
...
Far less verbose than defining classes by hand, plus, it allows to have everything about a single error be co-located. And finally, it allows to use 'related', 'label' and so on more easily.
2023-01-20 20:11:44 +01:00
KtorZ
4459fdb360
Fix error reporting on cyclic definitions.
...
Fixes #292
2023-01-20 20:09:00 +01:00
KtorZ
ce65236514
Parse tests as private functions.
...
They actually are private; we can't export / import tests. Fixes #284 .
2023-01-20 12:50:07 +01:00
KtorZ
61be8ca73e
Add diagnostic codes to type-check warnings.
2023-01-20 12:27:48 +01:00
KtorZ
10fb7455f3
Forbid let-binding as last expression of a sequence
...
Fixes #283
2023-01-19 18:05:57 +01:00
KtorZ
c5e876e817
Fix typo in variant name: Implicity -> Implicitly
2023-01-19 17:26:33 +01:00
KtorZ
bb82b1bc1e
slightly rework hint for 'ImpliclyDiscardedExpression'
2023-01-19 17:25:18 +01:00
KtorZ
092151d6a0
Remove dead-code and fix comment about discarded expressions
...
While Gleam originally allowed various kinds of expressions to be discarded in a sequence, we simply do not allow expressions to be discarded implicitly. So any non-final expression in a sequence must be a let-binding. This prevents silly mistakes.
2023-01-19 16:35:39 +01:00
Kasey White
52724ea0e0
feat: handle anon zero arg functions.
...
Test 045
2023-01-19 01:34:27 -05:00
Kasey White
7215bf33e9
fix: get_variant_name was not properly traversing type args on map and data types
2023-01-18 16:06:44 -05:00
Kasey White
71ae85a720
missing a condition check on when
2023-01-18 15:29:51 -05:00
Kasey White
d7e4aef4c5
feat: Add boolean conditions to when statements
2023-01-18 15:29:51 -05:00
KtorZ
c440026e36
Fix generated projects' README + rename 'certify' -> 'publish'
...
This hints to how this particular purpose is about publishing
certificate (either delegation or key de-registration).
2023-01-18 16:48:42 +01:00
KtorZ
20ac9c20a2
Remove some dead-code.
2023-01-18 16:43:40 +01:00
KtorZ
b475d6a6a4
Provide better errors when packages aren't found.
2023-01-18 16:34:26 +01:00
KtorZ
071dc00624
Implement various visual improvements for the doc generator
...
- Display function's signature next to the function name
(instead of being repeated below the function documentation).
- Same for module constants
- Display record constructors in a more concise manner, with
constructors fields next to constructors.
- Display generic parameters, if any, next to the type
- Plus some minor color and icon rework.
2023-01-18 15:12:15 +01:00
Kasey White
33d902ba2a
feat: Now opaque types with one constr and one field are converted to inner field type
2023-01-17 08:44:28 -05:00
Kasey White
98d2cb5afc
in progress: working on taking special opaque types and converting them to their inner type
2023-01-17 08:44:28 -05:00
Kasey White
0da4560792
fix failing unit tests
2023-01-17 03:02:06 -05:00
rvcas
5ceb3b07fb
fix: call was not capturing full span
2023-01-16 15:26:07 -05:00
rvcas
38734361d0
feat: make part of summary red if errors exist
2023-01-16 15:17:39 -05:00
rvcas
4024add4da
feat: error when an expression is implicitly discarded
2023-01-16 15:17:39 -05:00
KtorZ
844570caf5
Fix multi-line type-alias tuple definitions
...
Somehow missed it when reworking tuples. We need to allow the new
'NewLineLeftParen' token in this situation as well. Especially because
this is what the formatter outputs.
2023-01-16 11:30:20 +01:00
rvcas
1adac64585
feat(imports): return a nice error if a validator module is imported
2023-01-15 18:54:35 -05:00
rvcas
f114905f7d
fix: small typos in error messages
2023-01-15 18:54:35 -05:00
rvcas
c66d07a54c
feat: validator fns no longer need to be public
...
If the function doesn't match a script purpose
and is unused then it will till present as a
warning.
2023-01-15 12:33:10 -05:00
rvcas
00f2150eed
feat: add identity, always, & flip
2023-01-14 23:33:49 -05:00
rvcas
b69c1f66d7
feat: return err if data type contains functions
...
Due to how PlutusData works it doesn't make sense
to allow user defined types to contain
functions.
```
type Foo {
bar: fn(Int) -> Int
}
```
The above definition will now return an error.
2023-01-14 22:03:56 -05:00
KtorZ
d2c03b0094
Remove restriction on the project's package name
...
There are restrictions regarding how modules are called, but given that packages are tight to repositories anyway; there's no way someone can publish and use an aiken package on 'aiken-lang' without being part of the organization. So the restriction on the command-line is pointless. Plus, it prevents us from using 'aiken-lang' as a placeholder name for tutorials.
2023-01-14 23:47:57 +01:00
KtorZ
219e81cb75
Add 'packages upgrade' command.
2023-01-14 23:29:28 +01:00
KtorZ
6286132a3e
Rename sub-command 'deps' → 'packages'
...
Slightly more readable and self-explanatory.
2023-01-14 23:29:28 +01:00
KtorZ
38df9a586e
Add new 'deps add' command
...
This makes it easier to add new dependencies, without having to
manually edit the `aiken.toml` file.
The command is accessible via two different paths:
- aiken deps add
or simply
- aiken add
for this is quite common to find at the top-level of the command-line,
and, we still want to keep commands for managing dependencies grouped
under a command sub-group and not all at the top-level. So we're
merely promoting that one for visibility.
2023-01-14 23:29:28 +01:00
KtorZ
d4f905b1db
Also move some associated methods to the 'Config' module
...
And refactor the 'new' command implementation.
2023-01-14 23:29:28 +01:00
KtorZ
0771ab24bd
Move 'PackageName' and associated methods in its own module.
...
This is a bit cleaner, as the 'cmd/new' had many on-the-fly functions
which are better scoped inside this module.
Plus, it plays nicely with the std::str::FromStr trait definition.
2023-01-14 23:29:28 +01:00
KtorZ
5b7147fc43
Remove leading '#' for tuple definitions.
...
This possibly breaks many Aiken programs out there, but it's for the
best. We haven't released the alpha yet so we still have a bit of
freedom when it comes to breaking change.
Plus, the migration path is easy, simply run:
```
find . -name "*.ak" | xargs sed -i "s/#(/(/g"
```
(or `-i ''` on MacOS).
2023-01-14 20:22:19 +01:00
KtorZ
db22395764
Add new command group 'deps' and 'clear-cache' command.
...
This allows in case of issues with dependencies to at least safely
remove cached packages. Before that, it could be hard to know where
are even located the cached files without looking at the source code.
```
Clearing /Users/ktorz/Library/Caches/aiken/packages
Removing aiken-lang-stdlib-7ca9e659688ea88e1cfdc439b6c20c4c7fae9985.zip
Removing aiken-lang-stdlib-main@04eb45df3c77f6611bbdff842a0e311be2c56390f0fa01f020d69c93ff567fe5.zip
Removing aiken-lang-stdlib-6b482fa00ec37fe936c93155e8c670f32288a686.zip
Removing aiken-lang-stdlib-1cedbe85b7c7e9c4036d63d45cad4ced27b0d50b.zip
Done
```
2023-01-14 11:51:18 -05:00
KtorZ
3a5f77da12
Invalidate cache using etag for deps by branch
...
Aiken's build system uses an internal global cache system to avoid
downloading the same packages over and over across projects. However,
prior to this commit, the cache key would be based of the dependency
version which can be either:
- A commit hash
- A branch or tag name
However, in the latter case, it means that the very first time we end
up fetching a dependency will lock its version forever (or until the
cache is cleared). This was inconvenient.
This commit changes that so that we use not only a branch name as
cache key, but additionally, the etag returned by the GitHub API
server. The etag is part of the HTTP headers, so it can be fetched
quickly using a simple HEAD request. It changes whenever the content
behind the endpoint changes -- which happens to be exactly what we
want. With this, we can quickly check whether an upstream package has
been updated and download the latest version should users have
specified a branch name as a version number.
For example, my current cache now looks as follow:
```
/Users/ktorz/Library/Caches/aiken/packages/
├── aiken-lang-stdlib-1cedbe85b7c7e9c4036d63d45cad4ced27b0d50b.zip
├── aiken-lang-stdlib-6b482fa00ec37fe936c93155e8c670f32288a686.zip
├── aiken-lang-stdlib-7ca9e659688ea88e1cfdc439b6c20c4c7fae9985.zip
└── aiken-lang-stdlib-main@04eb45df3c77f6611bbdff842a0e311be2c56390f0fa01f020d69c93ff567fe5.zip
```
2023-01-14 11:51:18 -05:00
KtorZ
2d99c07dd3
Support (and default to) parenthesis for block expressions
...
This changes allow to use parenthesis `(` `)` to encapsulate
expressions in addition to braces `{` `}` used to define blocks.
The main use-case is for arithmetic and boolean expressions for which
developers are used to using parenthesis. For example:
```
{ 14 + 42 } * 1337
```
can now be written as:
```
( 14 + 42 ) * 1337
```
This may sound straightforward at first but wasn't necessarily trivial
in Aiken given that (a) everything is an expression, (b) whitespaces
do not generally matter and (c) there's no symbol indicating the end
of a 'statement' (because there's no statement).
Thus, we have to properly disambiguate between:
```
let foo = bar(14 + 42)
```
and
```
let foo = bar
(14 + 42)
```
Before this commit, the latter would be interpreted as a function call
and would lead to a somewhat puzzling error. Now, the newline serves
as a delimiting symbol. The trade-off being that for a function call,
the left parenthesis has to be on the same line as the function name
identifier -- which is a fair trade off. So this is still allowed:
```
let foo = bar(
14 + 42
)
```
As there's very little ambiguity about it.
This fixes #236 and would seemingly allow us to get rid of the leading
`#` in front of tuples.
2023-01-14 11:49:45 -05:00
KtorZ
b791131fd0
Small tweak on error messages; better grammer.
2023-01-14 14:13:30 +01:00
Kasey White
7b023911af
add assert and record
...
Record is a more efficient air for making records
Assert guarantees a custom is of a certain variant.
2023-01-13 13:50:27 -05:00
Kasey White
1721c3945b
Refactors:
...
Add test 40
refactor how we get data type from type
Call contains type now to handle certain record cases
2023-01-13 13:50:27 -05:00
rvcas
59ef63b513
chore: field might not always need to be plural
2023-01-11 20:47:47 -05:00
rvcas
99a334b132
fix(check): the expected arity with hardcoded to 0
2023-01-11 20:47:47 -05:00
rvcas
3be05b1545
fix(fmt): error fmt was removing label
2023-01-11 19:47:11 -05:00
Kasey White
eac8f7a80e
replace discard assignment with nothing
2023-01-11 09:46:37 -05:00
KtorZ
e06bbc4e73
Slightly edit module matching logic for conciseness/clarity
...
Also allow using identifier names directly as shorthand, without
surrounding .{ ... }
2023-01-10 18:41:02 +01:00
rvcas
99ec0ff6b0
feat(check): change some logic around and add --exact-match
2023-01-10 11:46:44 -05:00
rvcas
9002ea263f
feat(check): make match tests flag fancier
2023-01-10 10:19:13 -05:00
rvcas
6a95d23811
fix: filter on regular iter before par iter cc @kprotty
2023-01-09 18:21:40 -05:00
rvcas
158b3dfe51
feat(aiken-project): use rayon to run tests in parallel
2023-01-09 18:12:18 -05:00
rvcas
6ea9ad9c41
chore: clippy warnings
2023-01-09 18:12:18 -05:00
Kasey White
ce2de96226
clippy fix
2023-01-08 19:42:49 -05:00
Kasey White
42c8d50fa1
feat: finish record update
2023-01-08 19:42:49 -05:00
Kasey White
ea135e6f42
refactor term::apply to apply_wrap. Fixed a list eq binop
2023-01-08 19:42:49 -05:00
rvcas
d649b34ec3
Release 0.0.28
...
aiken@0.0.28
aiken-lang@0.0.28
aiken-lsp@0.0.28
aiken-project@0.0.28
uplc@0.0.28
Generated by cargo-workspaces
2023-01-06 13:41:00 -05:00
rvcas
c89802eaed
chore: bump pallas version
2023-01-06 13:39:18 -05:00
Kasey White
1a29ee3b72
my discard add got lost in the rebasing -_-
2023-01-06 14:23:46 +01:00
Kasey White
dc052bf9b8
fix nested lists without removing discard pop
...
Also fix bool constants created as a data type like in a list
start on record update
fix: nested list issues in when statements
2023-01-06 14:23:45 +01:00
KtorZ
4b34617466
Revert "fix: nested list issues in when statements"
...
This reverts commit 542962a2ea
.
2023-01-06 06:50:42 +01:00
alessandrokonrad
3aba9baba5
Fixed reward account creation in ScriptContext
2023-01-05 10:31:32 -05:00
Kasey White
542962a2ea
fix: nested list issues in when statements
2023-01-03 01:31:18 -05:00
Kasey White
67e4ff8317
feat: allow functions from prelude
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-12-31 00:09:02 -05:00
Kasey White
e495eefb34
feat implement tuple index
2022-12-31 00:09:02 -05:00
Kasey White
3514e66234
Fix to variant name creation for dependencies.
...
Last few changes to go Tuple Index,
Assert, Check, not
change test 35 to produce intended functionality
2022-12-30 14:01:11 -05:00
Kasey White
b0ea187151
better data deserialization errors and test hint
...
now runs even being in a sequence
2022-12-30 14:01:11 -05:00
rvcas
ee678f2978
Release 0.0.27
...
aiken@0.0.27
aiken-lang@0.0.27
aiken-lsp@0.0.27
aiken-project@0.0.27
flat-rs@0.0.27
uplc@0.0.27
Generated by cargo-workspaces
2022-12-30 00:57:49 -05:00
Kasey White
34d398ab3b
fix dependencies ordering so now test 34 passes
2022-12-29 17:14:23 -05:00
Kasey White
306fa891a0
validator params are now converted to type from data
2022-12-29 17:14:23 -05:00
KtorZ
85a6a711e1
Add more colors to error messages.
...
And, let 'formatdoc' insert newlines when relevant to
format the text to the same column length.
2022-12-29 17:38:34 +01:00
KtorZ
3139c85fe8
Support declaring bytearray literals as base16 strings.
2022-12-29 13:08:58 +01:00
KtorZ
1701cacb52
Add builtin functions to the prelude
...
Starting with 'not', will add 'always' and 'identity' later.
2022-12-29 12:05:30 +01:00
KtorZ
ad5a393c4d
Add 'docs' and 'assets' to generated gitignore
...
And also make 'docs' the default folder (instead of doc) to be more aligned with Github's defaults.
2022-12-29 10:54:46 +01:00
Kasey White
cce76bbd63
fix issue with constructor clauses and clause props
2022-12-28 18:00:11 -05:00
KtorZ
c4c0ace3a6
Align warnings message's style with errors.
2022-12-28 18:45:04 +01:00
KtorZ
7c1b8e8f3b
Map remaining relevant builtins.
2022-12-28 18:27:28 +01:00
KtorZ
f2e716dd86
Fix else/if formatter.
2022-12-28 17:55:11 +01:00
KtorZ
bae8267f18
Fix formatter for unary operation
...
Was wrongly converting any unary operation into '!'
2022-12-28 17:51:00 +01:00
Kasey White
722117bfc4
one minor scope fix
2022-12-27 22:33:09 -05:00
Kasey White
551d4eea93
fix test 28
2022-12-27 22:33:09 -05:00
Kasey White
010024fb95
fix: acceptance test 031
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-12-27 22:33:09 -05:00
Kasey White
083b7fcb5f
feat: support negation of int
...
* add unary op
* parse, typecheck, and code gen it
* express boolean not as unary op as well, previously called negate
Co-authored-by: rvcas <x@rvcas.dev>
2022-12-27 20:39:03 -05:00
Kasey White
542e39f093
feat: finish up zero arg issues with dependencies
2022-12-27 19:35:08 -05:00
Kasey White
30487cc232
fix test 23
2022-12-27 19:35:08 -05:00
Kasey White
919ea6c723
tuple destructuring nested and not now works
2022-12-27 19:35:08 -05:00
Kasey White
a08c615da4
checkpoint
2022-12-27 19:35:08 -05:00
Kasey White
b7d506a8db
nested lists now work
2022-12-27 19:35:08 -05:00
Kasey White
6126ee4cb4
checkpoint
2022-12-27 19:35:08 -05:00
alessandrokonrad
b97570bc00
Fixed clippy issue
2022-12-27 17:08:05 -05:00
alessandrokonrad
c6b5380c27
Fixed ex unit budget limit per redeemer
2022-12-27 17:08:05 -05:00
rvcas
01f2142606
fix: the push was in the wrong place
2022-12-23 22:00:59 -05:00
rvcas
cbaf629645
feat: warn if no validators on build
2022-12-23 22:00:59 -05:00
rvcas
38a716d94e
feat: allow error to hold a label
2022-12-23 15:52:44 -05:00
rvcas
37196a29ee
feat: error keyword
2022-12-23 15:52:44 -05:00
rvcas
22103739c3
chore: some clippy warnings
2022-12-23 15:52:44 -05:00
KtorZ
39f5d1a86d
Make build, check and docs target directory an (optional) argument
...
Instead of being an option. Feels more natural that way.
2022-12-23 20:23:27 +01:00
KtorZ
b1b57406e7
Do not generate placeholder files when creating new projects.
...
And fix the --lib flag to be a flag.
2022-12-23 20:19:28 +01:00
KtorZ
7b9ea5dabb
Add links to the user-manual to errors, when applicable.
2022-12-23 19:50:14 +01:00
KtorZ
69f060e675
Rework all errors to provide better help text.
2022-12-23 19:27:06 +01:00
KtorZ
c47c50ffb8
Show most type-checking error on a single line; reads better.
2022-12-23 00:25:18 +01:00
KtorZ
ce0c6e0d0f
Use smart-constructor for UnexpectedLabeledArg errors.
...
Reduce duplications and keep the formatting of the error inside the error module.
2022-12-23 00:24:57 +01:00
KtorZ
dca633da48
Refactor 'UnknownVariable' and 'UnknownTypeConstructor' as smart-constructor.
2022-12-23 00:09:07 +01:00
KtorZ
aa2a235790
Suggest possible candidate on unknown imports.
...
## Before
```
× Type-checking
╰─▶ Unknown module field 'ValidityRaneg' in module 'aiken/transaction'
```
## After
```
× Type-checking
╰─▶ Unknown import 'ValidityRaneg' from module 'aiken/transaction'
╭─[../stdlib/validators/tmp.ak:2:1]
2 │ use aiken/interval.{Interval, IntervalBound, IntervalBoundType}
3 │ use aiken/transaction.{ScriptContext, ValidityRaneg}
· ─────────────
4 │
╰────
help: Did you mean to import 'ValidityRange'?
```
2022-12-22 23:46:17 +01:00
KtorZ
70b1ec4324
Add function to calculate lenvenshtein distance of two strings
...
Will be useful to make import or usage suggestions.
2022-12-22 23:44:15 +01:00
KtorZ
666761efef
Make 'UnexpectedLabelArg' errors more helpful
...
## Before
```
× Checking
╰─▶ Unexpected labeled argument
t
╭─[/Users/mati/Devel/OpenSource/time_lock_aiken/validators/time_lock.ak:13:1]
13 │ let now = when context.transaction.validity_range.lower_bound.bound_type is {
14 │ Finite { t } -> t
· ─
15 │ NegativeInfinity -> 0
╰────
```
## After
```
× Type-checking
╰─▶ Unexpected labeled argument 't'
╭─[../stdlib/validators/tmp.ak:10:1]
10 │ let now = when context.transaction.validity_range.lower_bound.bound_type is {
11 │ interval.Finite { t } -> t
· ─
12 │ interval.NegativeInfinity -> 0
╰────
help: The constructor 'Finite' does not have any labeled field. Its fields
must therefore be matched only by position.
Perhaps, try the following:
╰─▶ interval.Finite(t)
```
2022-12-22 21:45:49 +01:00
KtorZ
0682781460
Better errors when using unknown data-type constructor.
...
## Before
```
× Checking
╰─▶ Unknown variable
Finite
╭─[../stdlib/validators/tmp.ak:10:1]
10 │ let now = when context.transaction.validity_range.lower_bound.bound_type is {
11 │ Finite { t } -> t
· ────────────
12 │ NegativeInfinity -> 0
╰────
```
## After
```
× Type-checking
╰─▶ Unknown data-type constructor 'Finite'
╭─[../stdlib/validators/tmp.ak:10:1]
10 │ let now = when context.transaction.validity_range.lower_bound.bound_type is {
11 │ Finite { t } -> t
· ────────────
12 │ NegativeInfinity -> 0
╰────
help: Did you forget to import it?
Data-type constructors are not automatically imported, even if their type is
imported. So, if a module `aiken/pet` defines the following type:
┍━ aiken/pet.ak ━━━━━━━━
│ pub type Pet {
│ Cat
│ Dog
│ }
You must import its constructors explicitly to use them, or prefix them
with the module's name.
┍━ foo.ak ━━━━━━━━
│ use aiken/pet.{Pet, Dog}
│
│ fn foo(pet : Pet) {
│ when pet is {
│ pet.Cat -> // ...
│ Dog -> // ...
│ }
│ }
```
2022-12-22 19:34:50 +01:00
KtorZ
2aa4429231
Rename Unit -> Void
2022-12-22 18:52:28 +01:00
KtorZ
5cf9742e5e
Move tuple-index hint as diagnostic's help
2022-12-22 18:52:28 +01:00
Lucas
168196f903
Merge pull request #210 from aiken-lang/fix-if-expressions
2022-12-22 12:46:24 -05:00
KtorZ
1f15c2ca20
Sort import alphabetically when formatting.
...
Fixes #211 .
2022-12-22 18:00:25 +01:00
rvcas
c723f4f796
feat: redo the new command
2022-12-22 10:52:49 -05:00
KtorZ
1ca705005d
Fix formatting of if-expressions
...
Fixes #129 .
2022-12-22 16:51:23 +01:00
Matthias Benkort
a129a8a0d3
Merge pull request #208 from aiken-lang/tuple-when2
...
fix todo and list and tuple not equal operator
2022-12-22 10:28:06 +01:00
KtorZ
7ad8babf17
Rename ArgName::{Discard,NamedLabeled} as ArgName::{Discarded,Named}
...
Now that the other variants are gone, this is clearer.
2022-12-22 09:36:44 +01:00
KtorZ
8ab05509b1
Remove Named & DiscardLabeled, now unused
...
And unify everything into either 'Discard' or 'NamedLabeled'
2022-12-22 09:36:44 +01:00
KtorZ
bf7cdfba73
Implement parser & type-checker for tuple indexes.
...
```aiken
fn foo() {
let tuple = #(1, 2, 3, 4)
tuple.1st + tuple.2nd + tuple.3rd + tuple.4th
}
```
2022-12-22 09:14:23 +01:00
Kasey White
b1dec1259d
fix todo and list and tuple not equal comparator
2022-12-22 01:09:06 -05:00
rvcas
7867793bcd
feat: on fmt if label and name are the same only print one
2022-12-21 19:17:15 -05:00
rvcas
4c4e454ea3
feat: all function args are now labeled implicitly
2022-12-21 19:17:15 -05:00
rvcas
42204d2d71
chore: make folder names match crate name
2022-12-21 18:11:07 -05:00
rvcas
9028424a96
feat: rename Nil to Unit
2022-12-21 17:27:20 -05:00
rvcas
9df5005820
feat: add IData and BData builtins
2022-12-21 14:39:46 -05:00
rvcas
429126e38f
feat: add trace
2022-12-21 14:39:46 -05:00
KtorZ
9068c89c00
Show trace logs as part of the test output when any.
...
```
┍━ test ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem: 6370, cpu: 2591822] trace_1
│ ↳ is negative
│ ↳ is non-negative
┕━━━━━━━━━ 1 tests | 1 passed | 0 failed
```
2022-12-21 14:39:46 -05:00
KtorZ
2fc14c7c1f
Make box-drawing code more reusable
...
- Move it to 'pretty' module.
- Have function work on colored strings titles and contents
2022-12-21 14:39:46 -05:00
KtorZ
f26737ecb4
Remove the 'trace/try' keyword, use builtin.trace
...
I am not entirely sure what the intent was for that keyword, but
nothing really matched between the parser, the formatter and the uplc
code gen. I don't think there's any need for a keyword here, trace is
already readily available from the builtins.
2022-12-21 14:39:46 -05:00
KtorZ
2aad1794a1
make dependencies optional in Aiken's manifest.
2022-12-21 14:32:40 +01:00
Matthias Benkort
e6f4b378e1
Merge pull request #146 from aiken-lang/micah/file-errors
...
Raise more descriptive errors when the `aiken.toml` manifest is missing.
2022-12-21 11:05:02 +01:00
Micah Kendall
bd816615d7
Display more descriptive error on missing manifest
...
Before:
```
❯ aiken check
Error:
× No such file or directory (os error 2)
```
After:
```
❯ aiken check
Error:
× Missing 'aiken.toml' manifest in /Users/ktorz/Documents/Projects/aiken-lang/aiken
help: Try running `aiken new <REPOSITORY/PROJECT>` to initialise a project with an example manifest.
```
Co-authored-by: KtorZ <matthias.benkort@gmail.com>
2022-12-21 10:10:17 +01:00
KtorZ
28c907d9de
Fix acceptance 021: allow registering type aliases in any order.
...
This is the most intuitive thing I could come up with: since the
problem is mainly due to the order in which we try declaring the
aliases, then it suffices to simply try as much as we can, and retry
on failure until there's no more failure.
Note that it's important to detect cycles if we do such thing (which
we can by noticing that a given iteration didn't make any progress).
It works pretty well in the end and even allow us to define a new kind
of type error should there be a cyclic definition.
2022-12-21 09:43:37 +01:00
KtorZ
a3591cc7dc
Fix 'aiken new', now require project name in specific format.
2022-12-21 00:19:24 +01:00
rvcas
796ac28044
feat: change the printing a little
2022-12-20 16:32:31 -05:00
rvcas
e34cbc8e7e
feat: compile deps
2022-12-20 16:32:31 -05:00
rvcas
b06bf610b7
feat: dep downloading now works
2022-12-20 16:32:31 -05:00
rvcas
6a0b1ce5c3
feat: start trying to use deps
2022-12-20 16:32:31 -05:00
rvcas
5bd2a9336c
feat: tons of boilerplate for fetching packages
2022-12-20 16:32:31 -05:00
rvcas
a6fd8f92a8
feat(deps): start laying out some types and functions
2022-12-20 16:32:31 -05:00
rvcas
b3266fb837
chore: clippy warnings
2022-12-20 16:32:31 -05:00
Kasey White
ac14512706
feat: fix nil equals nil, and fix funcs with discard params
2022-12-20 15:40:01 -05:00
Kasey White
9177267570
feat: test 24 passes
...
fixed issue with is_tuple in types
minor monomorphize change
2022-12-20 15:40:01 -05:00
Kasey White
17603e8cca
checkpoint
2022-12-20 15:40:01 -05:00
Kasey White
43ff66cd01
all tests pass besides todo in 13, couple changes
...
Use more cost efficient recurse
Monomorphize needed to deal with function arg return types
bytearray variant added for variant names
2022-12-19 00:41:27 -05:00
KtorZ
b6556e6739
Rework 'new' to not generate needless boilerplate
...
Instead, prints out a README with useful informations.
2022-12-19 00:41:27 -05:00
Kasey White
421e7148d0
zero arg functions now work: test 15
2022-12-19 00:41:27 -05:00
Kasey White
3a765ddef5
add better todo
2022-12-19 00:41:27 -05:00
KtorZ
529b3e87ff
Rename builtin as 'verify_ed25519_signature'
...
It's best to keep builtin as-close-as possible to their standard name
because they're hard to document. We can then leverage the prelude and
the standard lib for convenient names.
2022-12-19 00:41:27 -05:00
KtorZ
44d72c046e
Print files / tests as they're processed when --debug
...
This is because there's no proper way to catch panics in Rust, which
makes it hard to know _which_ test did cause the panic when this
happen. The stack trace gives little detail about this, but we can
print this information before it happens -- making it easier to
identify the culprit.
2022-12-19 00:41:27 -05:00
Kasey White
eb386f4606
feat: Add nil support for test 19
2022-12-19 00:41:27 -05:00
Kasey White
5b908aaeb7
fix: fieldsexpose getting wrong generic id and not replacing type
2022-12-19 00:41:27 -05:00
Kasey White
47fae21af7
minor fix to monomorphize
2022-12-19 00:41:27 -05:00
Kasey White
2bce818110
chore: fix list insertion order, function insertion order,
...
and Inner function issues with variant
2022-12-19 00:41:27 -05:00
Kasey White
e6c59dca2c
cleanup if then else a bit
2022-12-19 00:41:27 -05:00
Kasey White
eddd202253
tests 1 through 10 pass now, add negate
2022-12-19 00:41:27 -05:00
rvcas
841babae5c
chore: clean some links up so they point to the new repo
2022-12-17 11:19:02 -05:00
KtorZ
1055e342b1
Tweak syntax-highlighting for better output.
2022-12-17 17:09:13 +01:00
KtorZ
202678e21e
Improve rendering of type-signatures in docs
...
- [x] Display function arguments using a newline-multiline strategy
when the signature gets too long. For example:
```
union_with
( left left: AssocList<key, value>
, right right: AssocList<key, value>
, with with: fn(key, value, value) -> value
) -> AssocList<key, value>
```
- [x] Show type-aliases as type-aliases in signatures; provided
they've been specified as type annotations. Otherwise, fallback to
the inferred type.
- [x] Do not show argument names in signatures, but show labels when
they're present. This reflects more the original intent behind
labels (which are meant as public-facing documentation).
2022-12-17 13:07:28 +01:00
KtorZ
579030db36
Highlight current module in the sidebar.
2022-12-17 12:13:51 +01:00
KtorZ
a34d7d4dbb
Revert 71e71ff
...
Redundant with the `kind: ModuleKind` field already.
2022-12-17 11:54:39 +01:00
KtorZ
1178fa3f01
Add source repository to config & docs.
2022-12-17 04:11:54 +01:00
KtorZ
a83900409b
Adjust docs theme to catppuccin
...
- light-mode uses catpuccin-latte
- dark-mode uses catpuccin-mocha
2022-12-17 04:11:54 +01:00
KtorZ
5c0920d6bb
Factor out common module prefix when all modules are under a same namespace.
2022-12-17 02:38:04 +01:00
KtorZ
600c7747da
Do not show link to source.
...
This require slightly more work and has little benefits at this stage given that the sources are literally inlined in the docs.
2022-12-17 01:02:21 +01:00
KtorZ
e7f729c61b
Define HighlightJS definition for Aiken.
2022-12-17 01:02:21 +01:00
KtorZ
e1065e892a
Support module constants in docs.
2022-12-17 01:02:21 +01:00
KtorZ
ac0d180c5c
Apply suggestions from clippy.
2022-12-17 01:02:21 +01:00
KtorZ
873bd85d8b
Implement modules' extra, to get function & module comments in docs.
2022-12-17 01:02:21 +01:00
KtorZ
536c9457b3
Refactor project source parsing
...
There was already a 'parse_sources' function, and 'parse' was actually more about typechecking than parsing.
2022-12-17 01:02:21 +01:00
KtorZ
b323c95241
Fix type-parameter pretty printing (use chevrons)
2022-12-17 01:02:20 +01:00
KtorZ
d2c6d27545
Support data-types in documentation.
2022-12-17 01:02:20 +01:00
KtorZ
1f3f769b53
Add command 'docs' for generating project documentation.
2022-12-16 18:34:05 +01:00
KtorZ
6da53fd875
Add a 'docs' method to projects, using the newly introduced docs::generate_all
2022-12-16 18:33:36 +01:00
KtorZ
16b0a9fbe4
Introduce 'docs' for generating documentation for aiken libraries.
2022-12-16 18:33:04 +01:00
KtorZ
71e71fffe8
Define 'is_library' for 'CheckedModule'
...
So that we can separate libraries from executable modules if necessary.
2022-12-16 15:33:27 +01:00
jmhrpr
775e90d782
chore: remove unnecessary Option wrapper on type
2022-12-15 18:22:31 -05:00
jmhrpr
325a7b7b45
fix: correct V1 to_plutus_data() for txout with no datum hash
2022-12-15 18:22:31 -05:00
rvcas
0188003323
refactor: move helper option builder to lang
2022-12-15 13:28:30 -05:00
rvcas
42f8a694f4
tests: missing token broke a test
2022-12-15 11:12:35 -05:00
rvcas
53bc9aa56f
fix: properly capture empty lines
2022-12-15 11:12:35 -05:00
Matthias Benkort
d9d1310c6d
Merge pull request #166 from aiken-lang/some-interesting-test-cases
...
Include generics to get test cases working
2022-12-15 02:07:05 +01:00
KtorZ
5024bd884c
Remove debug line for pretty-printing test, and add '--debug' flag to 'check instead.
2022-12-15 02:02:10 +01:00
KtorZ
e5972640d2
Remove 'eval' command.
...
Was introduced as a work-around to get some debugging info out of scripts, but tests do now provide the same capability with a better output and, do so automatically.
2022-12-14 22:14:35 +01:00
KtorZ
978a6c6981
Collect and display evaluation hints on test failures.
2022-12-14 22:00:56 +01:00
KtorZ
7b22b63ad8
move 'EvalInfo' to project::script & define a new 'EvalHint'
2022-12-14 22:00:09 +01:00
KtorZ
921e7abbb6
Move pretty-printing utilities to project::pretty
2022-12-14 21:59:09 +01:00
Carlos Souza
6343fa7105
Change generated assets file extensions
2022-12-14 12:48:29 -05:00
KtorZ
87546e0abd
Return non-zero exit code on test failure
...
And integrated test results with miette report.
2022-12-14 18:44:31 +01:00
Carlos Souza
c77b7c293b
Fix errors on aiken build
...
- Update generics syntax
- Add required args to default validator function
This allows running a successful aiken build from
files generated by aiken new.
2022-12-14 12:03:30 -05:00
KtorZ
3a9cc668fc
Use bright_black (i.e. grey) for box drawing.
2022-12-14 17:45:16 +01:00
KtorZ
2d6fc8bd54
Group test results by module.
2022-12-14 17:34:24 +01:00
Kasey White
3c664b9651
test 1-9 passing
2022-12-14 09:45:26 +01:00
rvcas
b71315ba2f
chore: trying to fix test 5
2022-12-14 09:45:26 +01:00
Kasey White
6635a918b5
clean up minor warnings
2022-12-14 09:45:26 +01:00
KtorZ
b6962ba9d3
Add 'eval' command to evaluate target aiken function
...
Pretty useful for debbugging. Though, on second-thoughts, this is
something we may want to review later and maybe have that done by
default for tests.
At the moment, we expects tests to unify to `bool`, and treat `false`
values as failing tests. Yet, on failures, this gives little
information about what's wrong with the test.
It'd be nice to either have better way to assert in tests, or, to
simply accept non-bool tests, and show whatever the test evaluates
to as a debug output.
2022-12-14 09:45:26 +01:00
rvcas
11c793dd2a
feat(Type): add is_option method
2022-12-14 09:45:25 +01:00
Kasey White
8393d8555c
fill constants to data so now test 006 passes
2022-12-14 09:45:25 +01:00
Kasey White
dc5ae296db
implement anonymous functions, more tests pass now
2022-12-14 09:45:25 +01:00
Kasey White
d78e2c9c6f
feat: finish up generic match cases
2022-12-14 09:45:23 +01:00
Kasey White
e43063d447
overhaul monomorphize to cover all generic cases
...
test b passes
2022-12-14 09:45:23 +01:00
Kasey White
15dc202810
Feat: generic function call tests work
2022-12-14 09:45:23 +01:00
Kasey White
e4d9ca4586
support generics
2022-12-14 09:45:23 +01:00
rvcas
16fbf5bbcd
feat: fix recursive functions
2022-12-14 09:45:22 +01:00
Kasey White
3d3b3d7e10
checkpoint
2022-12-14 09:45:22 +01:00
KtorZ
95986fed83
Fix lexer for signed integers.
2022-12-13 19:52:30 -05:00
KtorZ
18bf89418a
Fix codegen for binary operator 'or'
...
a && b → if a { b } else { false }
a || b → if a { true } else { b }
2022-12-13 18:52:23 -05:00
KtorZ
431b0cfcf2
Preserve newlines after blocks of comments.
...
This is an example of output from the formatter now:
```
//// Some module documentation
// foo
const a: Int = 42
// Some comment block
// For which newlines are respected.
// Foo
// Another one
/// add_one documentation
pub fn add_one(n: Int) -> Int {
// n + 1
n + 1
}
```
before this commit, comments would all be collapsed into one group
above the function as:
```
// Some comment block
// For which newlines are respected.
// Foo
// Another one
/// add_one documentation
pub fn add_one(n: Int) -> Int {
```
2022-12-13 18:52:23 -05:00
KtorZ
22a526bb13
Enforce unique top-level names for tests too.
...
This prevents the compiler from crashing later on. Test names should be unique and not clash with function names.
2022-12-13 18:52:23 -05:00
rvcas
4dfb454d8a
refactor: change match to if matches!
2022-12-13 10:34:34 -05:00
KtorZ
1637a0d30e
Add --match-tests to 'check' cmd
...
For running only tests matching a certain pattern. Useful when doing TDD.
2022-12-13 10:34:34 -05:00
rvcas
69db9696d6
feat: prefix tuples with hash again cause ambguity with call
2022-12-13 10:27:17 -05:00
rvcas
6dc4738b66
feat: update formatter for new changes
2022-12-12 19:22:11 -05:00
rvcas
a4f6388eca
feat: remove the need for # in front of tuples
2022-12-12 19:22:11 -05:00
rvcas
dfc57b347a
feat: switch generic type args to be delimited by chevrons
2022-12-12 19:22:11 -05:00
rvcas
a18aad7daf
refactor(project): use new Options instead of a spiderweb of bools
2022-12-10 19:14:58 -05:00
KtorZ
0eb3cf221b
Trigger and report on more events in the compilation pipeline.
2022-12-09 15:04:02 +01:00
KtorZ
749d8ecb10
Fix formatter to not prefix tests as 'pub'
2022-12-09 14:35:50 +01:00
KtorZ
d09d38d65b
Add a flag '--skip-tests' to the 'check' cmd.
...
So that tests can be skipped, and the old behavior recovered if necessary.
Tests execution is on by default however.
2022-12-09 14:14:15 +01:00
rvcas
4ad74bef1f
refactor: move prints to cli via EventListener trait
2022-12-08 19:25:28 -05:00
KtorZ
801ab3989e
feat: display test runner summary alongside test results.
...
Moar sexy.
2022-12-08 19:25:28 -05:00
KtorZ
4cae4a4467
pad left instead of right, so units/thousands are aligned.
2022-12-08 19:25:28 -05:00
rvcas
2ba712eef6
feat: start adding padding to test output
2022-12-08 19:25:28 -05:00
KtorZ
5770ea2456
Make test runner more sexy.
...
Using colors.
2022-12-08 19:25:28 -05:00
KtorZ
db25ff3817
refactor: run_tests to avoid repetition.
2022-12-08 19:25:28 -05:00
rvcas
e9d8e1d317
feat: print budget consumed by test
2022-12-08 19:25:24 -05:00
rvcas
141a9aef30
feat: impl Sub for ExBudget
2022-12-08 19:24:20 -05:00
rvcas
f250d3df84
feat: eval should take initial budget
2022-12-08 19:24:20 -05:00
KtorZ
4cdb5d8d02
Implement test runner.
...
easy.
2022-12-08 19:24:20 -05:00
rvcas
384c4daa4a
feat: add test_gen function
2022-12-08 19:24:20 -05:00
KtorZ
bc785673b2
Fix compilation errors for the newly introduce test & add type inference.
...
Tests are basically functions for which the return type should unify with bool. In principle, the type checker could also check that a test function has no arguments but, a test function with arguments wouldn't parse in the first place; feels a bit hacky but it works when considering the pipeline as a whole.
Note that the code generation is still to be done.
2022-12-08 19:24:20 -05:00
KtorZ
ea48747825
Extend parser for 'test' keyword.
2022-12-08 19:24:20 -05:00
rvcas
a65b4aa471
feat: add test def and test token
2022-12-08 19:24:20 -05:00
Kasey White
80a9b7b36a
feat: add map support and tuple deconstruction in let
2022-12-08 14:28:30 -05:00
Kasey White
26d2a95618
missing a couple forces
2022-12-08 14:28:30 -05:00
Kasey White
2f7131e9b8
feat: add tuples and streamline conversion of types to and from data
2022-12-07 08:40:23 -05:00
rvcas
45990f1f84
feat: unify tuples and stdlib updates
2022-12-06 22:23:40 -05:00
Kasey White
3f47a1f4b8
fix: constr issue
...
- also fixed constant parsing
- added new cbor flag to eval
Co-authored-by: rvcas <x@rvcas.dev>
2022-12-05 22:55:57 -05:00
rvcas
7875af7d35
feat: better errors for incorrect contructor making
2022-12-05 18:11:04 -05:00
rvcas
7e6dc978a1
feat: commit latest build assets for sample
2022-12-05 14:18:44 -05:00
rvcas
ed3d143477
feat: rename ir to air
2022-12-05 14:18:44 -05:00
rvcas
24d724e10e
chore: fix fmt
2022-12-05 14:18:44 -05:00
Kasey White
3e68204768
replace uplc with uplc_two and move structs over
2022-12-05 14:18:44 -05:00
Kasey White
22fbef2fbe
feat: finish up binops and fix constr creation
2022-12-05 14:18:44 -05:00
Kasey White
0fda535c50
feat: add module constants except for tuple
2022-12-05 14:18:44 -05:00
Kasey White
de9302a877
feat: finish list destructure in when matches
2022-12-05 14:18:44 -05:00
Kasey White
8cbdf97d22
finish uplc code gen for complex clauses with constr
2022-12-05 14:18:44 -05:00
Kasey White
f48039fd4f
Add ability to generate ir with complex constructor cases
2022-12-05 14:18:44 -05:00
Kasey White
64cbae938d
Add clause guard to IR and use it for complex clauses
2022-12-05 14:18:44 -05:00
Kasey White
e1d6ffa92a
add more binops
2022-12-05 14:18:44 -05:00
Kasey White
044d609a24
feat: nested constr access and module funcs now work
2022-12-05 14:18:44 -05:00
Kasey White
3d3beef7d4
feat: uplc code gen for functions and minor recursion fix
2022-12-05 14:18:44 -05:00
Kasey White
8f984ad131
fix up function definitions in the IR
2022-12-05 14:18:44 -05:00
Kasey White
02ee129615
feat: function insertion IR done, code gen will be easy
2022-12-05 14:18:44 -05:00
Kasey White
29a30aa61f
feat: finished when constr is for IR and code gen
2022-12-05 14:18:44 -05:00
Kasey White
3fb3a3240a
checkpoint
2022-12-05 14:18:44 -05:00
rvcas
86ea41adc3
feat: start when expressions
2022-12-05 14:18:44 -05:00
Kasey White
8b24a66b7e
add field access and list patterns are finished
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-12-05 14:18:44 -05:00
Kasey White
abe29a3883
make progress on list deconstruction with IR
2022-12-05 14:18:44 -05:00
Kasey White
2a00b896fc
create ir and start to replace plutus code gen with ir
2022-12-05 14:18:44 -05:00
Kasey White
6870a5cab7
fix minor scope issue
2022-12-05 14:18:44 -05:00
Kasey White
e3267310c5
remove unListData
2022-12-05 14:18:44 -05:00
rvcas
84da69411d
chore: fix test
2022-12-04 21:12:29 -05:00
rvcas
f2c359f9d5
test(parser): add record creation tests
2022-12-04 21:12:29 -05:00
rvcas
85f839abe4
feat: support punning in record updates
2022-12-04 21:12:29 -05:00
rvcas
9ebc836b89
feat: handle punning in a non-ambiguous way
2022-12-04 21:12:29 -05:00
rvcas
391849bf37
feat: parser improvements
...
- record creation with punning
- disambiguate if condition from record creation with punning
- split parser tests up into many smaller ones
2022-12-04 21:12:29 -05:00
KtorZ
375499930a
Add UPLC support for 'ProtoList' & 'ProtoPair' constants
...
Supersedes #35 .
The syntax for these elements isn't "set in stone"; in the sense that it is unspecified in [input-output-hk/plutus](https://github.com/input-output-hk/plutus ). There's no visible plan from IOG to extend the Haskell parser to support this syntax, though there are samples of imagined syntax in the code. Thus, we can lead the way and simply choose a suitable syntax and let the Haskell implementation align to it later.
This syntax is thus inspired from input-output-hk/plutus' samples, with only a small change: we use `<` and `>` for encapsulating type declaration instead of `(`, `)`. There are already enough parentheses in the UPLC syntax, adding more reduces visibility.
Doing this, I've also added a lot more test cases for the UPLC parser. There could be more, but this is a good start.
Here are some example programs (taken from test cases) utilizing this syntax:
```
(program 0.0.0 (con list<bytestring> [#00 , #01 ]))
```
```
(program 0.0.0
(con pair
<integer, integer>
[14, 42]
)
)
```
```
(program 0.0.0
(con pair<string, list<integer>> ["foo", [14, 42]])
)
```
_(Note that this was mainly done as an exercise to get more familiar with Rust and parts of Aiken.)_
2022-12-03 10:16:16 -05:00
rvcas
5ec93a8692
feat: format bytearrays
2022-12-01 15:28:15 -05:00
rvcas
fedafed845
feat: add module constants
2022-12-01 15:28:15 -05:00
rvcas
34c8a58391
feat: complete language tour
2022-11-30 15:35:55 -05:00
rvcas
0823b78bf8
feat: some new features
...
- tuples `#(Int, Int)`
- `trace` and `trace("text")`
2022-11-28 22:33:53 -05:00
eyelash
6066e3176c
move `to_string()` outside of the match
2022-11-28 17:30:45 -05:00
vh-zuka
269cf8c13f
fix: update aiken new
2022-11-26 10:30:41 -05:00
rvcas
d5087dbcc7
fix: it's more consistent to have snakecase builtins
2022-11-24 18:36:22 -05:00
rvcas
67d160230b
feat: new build command flag
...
- `uplc` to optionally dump raw uplc
2022-11-24 18:17:03 -05:00
Kasey White
1c3511b073
insert def should run after all sequences have run
2022-11-24 17:51:49 -05:00
Kasey White
6babebde28
feat: support self recursion functions and fix making constrs
2022-11-24 15:19:32 -05:00
rvcas
09e77e1918
feat: display named source
2022-11-24 11:38:43 -05:00
rvcas
ba8855add9
fix: implicit discard in list patterns
2022-11-24 10:06:54 -05:00
rvcas
27e0286d01
fix: most places should allow trailing comma
2022-11-23 21:09:06 -05:00
rvcas
c07b9a1a81
feat: allow assignments to be cast to other types
2022-11-23 21:09:06 -05:00
rvcas
34d7a28351
feat: add check keyword and new assignment syntax
2022-11-23 21:09:06 -05:00
Kasey White
6687b9fe4c
add forces to pair usage and fix clippy
2022-11-23 17:57:02 -05:00
Kasey White
dc510b1c7a
feat: finish list deconstruct
2022-11-23 17:57:02 -05:00
Kasey White
e6f6d8a42d
small edge case to fix and some ordering to go
2022-11-23 17:57:02 -05:00
rvcas
1de2640a48
feat: list patterns
2022-11-23 17:57:02 -05:00
Kasey White
f09a3bd121
feat:list construction, no pairs yet
2022-11-23 17:57:02 -05:00
rvcas
0358952984
Release 0.0.26
...
aiken@0.0.26
aiken-lang@0.0.26
aiken-lsp@0.0.26
aiken-project@0.0.26
Generated by cargo-workspaces
2022-11-23 00:31:24 -05:00
Kasey White
74712711c4
include when deconstructor discard
2022-11-20 15:42:12 -05:00
Kasey White
d4f3eafc22
refactor away from tuples
2022-11-20 15:42:12 -05:00
jacfra
0069c1f68a
correct typo
2022-11-19 15:35:07 -05:00
rvcas
89153a4d82
allow single var patterns to double as a label in records
2022-11-17 12:56:03 -05:00
rvcas
d94ae82901
fix: none does not need a type variable
2022-11-16 21:41:03 -05:00
alessandrokonrad
6c5ec9bb25
Extended ScriptContext; added Option to builtins
2022-11-16 21:34:46 -05:00
rvcas
72bf27d467
fix: better constructor pattern parsing
2022-11-16 21:30:43 -05:00
rvcas
ef9fd15e12
chore: remove loose println!
2022-11-16 14:49:06 -05:00
rvcas
132af027dc
feat(aiken-lang): add doc, module, and regular comment support
2022-11-16 14:28:02 -05:00
rvcas
f7313ee61a
feat: some parsing for comments
2022-11-16 14:28:02 -05:00
rvcas
00e5f99304
feat: pull comment tokens out of the Iter before parsing
2022-11-16 14:28:02 -05:00
Kasey White
f10c78d800
feat: when statements with field access now work
2022-11-16 13:11:24 -05:00
Kasey White
8d1e73bbea
checkpoint
2022-11-16 13:11:24 -05:00
rvcas
742a5ea19b
feat: handle didSave notification
2022-11-15 17:44:50 -05:00
rvcas
bff99b0cf2
feat: publish errors as lsp diagnostic messages
2022-11-15 17:44:50 -05:00
rvcas
f089eff97d
Release 0.0.25
...
aiken@0.0.25
aiken-lang@0.0.25
aiken-lsp@0.0.25
aiken-project@0.0.25
uplc@0.0.25
Generated by cargo-workspaces
2022-11-14 18:04:19 -05:00
rvcas
3f952cdf0e
feat: add new Data type to prelude and allow it to unify with any user defined type
2022-11-14 15:09:56 -05:00
rvcas
123e729137
fix: when formatting we need to use the in memory edited version
2022-11-14 14:20:41 -05:00
vh-zuka
2736df5466
Validate project name on aiken new
2022-11-14 14:15:02 -05:00
Kasey White
2cac7963c3
feat: add complex function composability. Minor scope changes
2022-11-14 14:13:21 -05:00
Kasey White
491c13f3aa
chore: name_field_label should return actual constant for bytearray and int
2022-11-14 14:13:21 -05:00
Kasey White
aa0f258ea2
add pipelines functionality
2022-11-14 14:13:21 -05:00
Kasey White
d11b8858ba
clean up some unused parts in created hashmaps
2022-11-12 20:57:44 -05:00
Kasey White
b450c41438
finish up binops for code gen
2022-11-12 20:57:44 -05:00
Kasey White
a73fc345fe
clippy fix
2022-11-11 20:24:21 -05:00
Kasey White
d0463b3218
missing into on a term
2022-11-11 20:24:21 -05:00
Kasey White
c36fa8cee5
fix issue with scope for data creation and wrap program with ifthenelse
2022-11-11 20:24:21 -05:00
Kasey White
a3935c5df7
almost done data constr creation
2022-11-11 20:24:21 -05:00
rvcas
4a95fc5588
chore: fix parser tests
2022-11-10 17:41:39 -05:00
KtorZ
2e5406afa3
Rename 'scripts' as 'validators' across the codebase.
2022-11-10 17:41:39 -05:00
rvcas
c9da049712
feat: rework how modules are loaded
2022-11-10 17:41:39 -05:00
KtorZ
7b5763edeb
Respond to 'notification' requests from language-client
2022-11-10 17:41:39 -05:00
vh-zuka
bdf91d287b
Add a few more files
2022-11-10 01:45:32 -05:00
vh-zuka
9d6f9fd013
Use indoc for better raw text
2022-11-10 01:45:32 -05:00
vh-zuka
3faed5c980
Add new project template
2022-11-10 01:45:32 -05:00
rvcas
01e91b9fe5
chore: deal with clippy warnings
2022-11-10 01:27:18 -05:00
rvcas
e90a210537
feat: add a basic lsp
2022-11-10 01:27:18 -05:00
rvcas
c4f2a1ffec
fix: weird test error after rebase
2022-11-08 22:21:07 -05:00
rvcas
7e0767ef74
feat: output build assets
2022-11-08 22:21:07 -05:00
rvcas
4db0c93061
chore: clean up warnings
2022-11-08 22:21:07 -05:00
rvcas
3787cce275
chore: fix some stuff after rebase
2022-11-08 22:21:07 -05:00
Kasey White
6c6aefd1c4
get basic when conditions to work
2022-11-08 22:21:07 -05:00
Kasey White
6950b66b55
checkpoint commit
2022-11-08 22:21:07 -05:00
Kasey White
28697586f2
remove some warnings and start on when
2022-11-08 22:21:07 -05:00
Kasey White
805bf19081
Got nested field access working efficiently. Will clean up code soon.
2022-11-08 22:21:07 -05:00
Kasey White
e3fa9ac105
checkpoint commit
2022-11-08 22:21:07 -05:00
Kasey White
9864a3fe31
figured out the recursion based uplc terms to get item from a list
2022-11-08 22:21:07 -05:00
Kasey White
ad4a5e927d
starting on field access in aiken
2022-11-08 22:21:07 -05:00
Kasey White
3cafb2bcbe
checkpoint commit
2022-11-08 22:21:07 -05:00
rvcas
d8f3ada13e
chore: add default for Interner
2022-11-08 22:21:07 -05:00
Kasey White
6162128427
add string comparison and int comparison
2022-11-08 22:21:07 -05:00
Kasey White
8a99b8c071
Remove println
2022-11-08 22:21:07 -05:00
Kasey White
6d720f6265
implement scope level in a consistent way.
2022-11-08 22:21:07 -05:00
Kasey White
f6a72cc7f9
did hacky way for scope level, but now i know how it works and how to fix
2022-11-08 22:21:07 -05:00
Kasey White
f7276df355
checkpoint commit
2022-11-08 22:21:07 -05:00
rvcas
483aa0784e
chore: clean up some errors after rebase and rename project to aiken_project
2022-11-08 22:21:07 -05:00
Kasey White
a993bea2a2
try code gen for assignment
2022-11-08 22:21:07 -05:00
Kasey White
ffa78e4c30
work out some initial direction for code gen
2022-11-08 22:21:07 -05:00
rvcas
51302f1730
feat: error if validators have wrong arity
2022-11-08 22:21:07 -05:00
rvcas
4130e0f2c3
feat: validate if scripts return Bool
2022-11-08 22:21:07 -05:00
rvcas
d830060683
fix: tests
2022-11-05 18:27:02 -04:00
rvcas
3a653b6624
chore: all dead code till we sort out doc comments
2022-11-05 18:20:23 -04:00
rvcas
7092673c45
feat: if expression formatting
2022-11-05 17:53:11 -04:00
rvcas
809d5ea5c5
fix: record formatting
2022-11-05 17:28:32 -04:00
rvcas
9d14acbe0a
fix: when formatting and add some methods to Project::Error
2022-11-05 16:23:46 -04:00
rvcas
14724f924c
fix: weird extra space above definitions
2022-11-05 15:42:53 -04:00
rvcas
4cad053e15
fix: capture variables are a bit different
2022-11-05 15:35:18 -04:00
rvcas
cba7a6f46e
feat: bring over the formatter from gleam
2022-11-05 15:35:11 -04:00
rvcas
3df275043a
Release 0.0.24
...
aiken@0.0.24
aiken-lang@0.0.24
aiken-project@0.0.24
uplc@0.0.24
Generated by cargo-workspaces
2022-11-04 13:56:15 -04:00
alessandrokonrad
af7ca87ffc
Fixed more clippy issues
2022-11-04 18:21:22 +01:00
alessandrokonrad
9a2c6753cd
Fixed clippy issues
2022-11-04 18:13:46 +01:00
alessandrokonrad
d1141f306a
Sorted all relevant structures in ScriptContext
2022-11-04 17:58:23 +01:00
rvcas
c4db8c951f
Release 0.0.23
...
aiken@0.0.23
aiken-lang@0.0.23
aiken-project@0.0.23
uplc@0.0.23
Generated by cargo-workspaces
2022-11-03 20:27:03 -04:00
Kasey White
887f5eeee9
sorts inputs for sc
2022-11-03 05:04:21 -04:00
rvcas
1b6e5d262f
Release 0.0.22
...
aiken@0.0.22
aiken-lang@0.0.22
aiken-project@0.0.22
uplc@0.0.22
Generated by cargo-workspaces
2022-10-31 13:32:54 -04:00
rvcas
09462bbb42
chore: rename project to aiken-project
2022-10-31 13:25:19 -04:00
Lucas
11c0e4e193
Merge pull request #85 from txpipe/expose-pallas-plutus-data
2022-10-29 16:30:23 -04:00
Turner
9bbcdfd0b3
Revert versions, fix changelog
2022-10-28 11:50:19 -07:00
KtorZ
4316d5c382
Factor out common project-logic between build and check.
2022-10-28 17:20:41 +02:00
KtorZ
8d45b2a2f5
Enforce ordering of commands/sub-commands according to source
...
By default, clap orders command alphabetically, which can be quite
confusing when listing commands with `--help`:
```
SUBCOMMANDS:
eval Evaluate an Untyped Plutus Core program
flat Encode textual Untyped Plutus Core to flat bytes
fmt Format an Untyped Plutus Core program
help Print this message or the help of the given subcommand(s)
unflat Decode flat bytes to textual Untyped Plutus Cor
```
It is possible to instrument clap to order commands in the same way
they are declared in the source, giving us back the freedom to order
and group them in a manner that makes sense, e.g.:
```
SUBCOMMANDS:
fmt Format an Untyped Plutus Core program
eval Evaluate an Untyped Plutus Core program
flat Encode textual Untyped Plutus Core to flat bytes
unflat Decode flat bytes to textual Untyped Plutus Cor
help Print this message or the help of the given subcommand(s)
```
2022-10-28 17:20:41 +02:00
KtorZ
9c608ad9f1
Refactor cli's crate; split code into a hierarchy of modules.
...
This follows a simple convention:
- `main.rs` contains as little as possible and delegates both
data-types definitions and command executions to sub-modules.
- modules are named after their respective commands. For
sub-commands,
- Each command module can be in one of two forms:
- Either it is a leaf command, and it then contains an `Args`
struct that defines the command arguments; and a function
`exec` when outlines the execution logic.
- Or, it is a group command with multiple sub-commands. In which
case the module defines a `Cmd` struct encapsulating all
sub-commands; and also an `exec` function which simply
dispatches the logic to sub-functions.
---
This commit also removes the `dev` command which is currently
unused. The rationale being: if it's not there, it's not there.
2022-10-28 17:20:39 +02:00
KtorZ
6d0d938fb9
Extra project utilities in their own crate.
...
This was currently in the 'cli' crates, but this code is pretty standalone and need not to be mixed with the rest of the cli logic.
Ideally, we want the cli crate to be only a thin wrapper over functionality available from the rest of the lib crates.
2022-10-28 13:48:40 +02:00
Turner
aabcacbe87
Expose Pallas stuff, bump version, update changelog
2022-10-27 20:40:37 -07:00
rvcas
819256df99
feat: wrap up adding uplc builtins for now
2022-10-25 18:52:27 -04:00
rvcas
d5d2ba9cd7
feat: start creating aiken/builtin module
2022-10-25 18:52:27 -04:00
rvcas
a41d05f7b6
feat: change project structure
2022-10-24 00:09:00 -04:00
rvcas
825783ca61
feat: typecheck If expressions
2022-10-24 00:09:00 -04:00
rvcas
5244e58c9f
feat: typechecking is working
2022-10-24 00:09:00 -04:00
rvcas
cabc653167
feat: start expr inference
2022-10-24 00:09:00 -04:00
rvcas
81c87ab4da
feat: register import, types, and values in environment
2022-10-24 00:09:00 -04:00
rvcas
d0287d418b
feat: add prelude
2022-10-24 00:09:00 -04:00
rvcas
4df3de0a03
feat: some boilerplate for typechecking
2022-10-24 00:09:00 -04:00
rvcas
ed2ef4fa9b
feat: sort modules and detect cycles
2022-10-24 00:09:00 -04:00
rvcas
15c774b7d0
Release 0.0.21
...
aiken@0.0.21
flat-rs@0.0.21
uplc@0.0.21
Generated by cargo-workspaces
2022-10-23 17:58:21 -04:00
Kasey White
c89690aa77
Create unknown constructor error for decode
2022-10-23 17:54:21 -04:00
Kasey White
360a5b6017
preceding bytes output changes if you error before position 5
2022-10-23 17:54:21 -04:00
Kasey White
56984dea36
more spacing for parse error
2022-10-23 17:54:21 -04:00
Kasey White
15cfb22c8f
more detailed parse errors when decoding with flat
2022-10-23 17:54:21 -04:00
alessandrokonrad
4ef654b660
fixed clippy issue
2022-10-22 18:01:36 -04:00
alessandrokonrad
c6de827721
added apply_params_to_script function
2022-10-22 18:01:36 -04:00
alessandrokonrad
e6f3c40429
changed i64 -> i128
2022-10-19 17:04:43 -04:00
rvcas
ce875a3c47
Release 0.0.20
...
aiken@0.0.20
aiken-lang@0.0.20
flat-rs@0.0.20
uplc@0.0.20
Generated by cargo-workspaces
2022-10-17 17:22:50 -04:00
alessandrokonrad
a83c731eb1
fixed err description
2022-10-17 08:35:45 -04:00
alessandrokonrad
ad542a68e8
removed unnecessary return statement
2022-10-17 08:35:45 -04:00
alessandrokonrad
0856f6ccf2
added checked operators to some DefaultFunction
2022-10-17 08:35:45 -04:00
alessandrokonrad
cfc1f92646
leave as i128
2022-10-17 08:35:45 -04:00
alessandrokonrad
4e8fd53e70
fixed comments
2022-10-17 08:35:45 -04:00
alessandrokonrad
a14dae5863
changed slot_length to u32
2022-10-17 08:35:45 -04:00
alessandrokonrad
28b9fed8e5
added i128 integer support
2022-10-17 08:35:45 -04:00
rvcas
6e7ea45e11
fix: flip the cbor_hex if condition
2022-10-13 10:56:04 -04:00
rvcas
da89e9902c
feat: starting to get pretty error messages
2022-10-11 14:34:27 -04:00
rvcas
59d7b54473
feat: start integrating miette
2022-10-11 14:34:27 -04:00
rvcas
57dc50e3aa
chore: temp allow dead code
2022-10-09 15:39:28 -04:00
rvcas
03d4a6f1e1
chore: rename
2022-10-09 15:39:28 -04:00
rvcas
ff26db2245
feat: start project building
2022-10-09 15:39:28 -04:00
rvcas
2896b92203
Release 0.0.19
...
aiken@0.0.19
aiken-lang@0.0.19
Generated by cargo-workspaces
2022-10-04 17:10:21 -04:00
rvcas
6de41e64be
feat: add simple check command
2022-10-04 17:09:43 -04:00
rvcas
6ef8ba5c35
feat: if expressions
2022-10-04 16:32:32 -04:00
rvcas
dba82d544d
feat: record update syntax
2022-10-04 16:32:32 -04:00
rvcas
3ad915cafd
fix: list spread allowing no comma before spread
2022-10-04 16:32:32 -04:00
rvcas
fb1ff759e1
feat: function calls and captures
2022-10-04 16:32:32 -04:00
rvcas
1b61f4b25b
feat: field access
2022-10-04 16:32:32 -04:00
rvcas
34492f600c
test: empty function definition
2022-10-04 16:32:32 -04:00
rvcas
512431d27f
feat: anonymous functions
2022-10-04 16:32:32 -04:00
rvcas
695ac409b7
feat: assert and boolean negation
2022-10-04 16:32:32 -04:00
rvcas
c7c11d1bd5
feat: finish when clauses
2022-10-04 16:32:32 -04:00
Kasey White
722dc4b477
work on adding when clause
2022-10-04 16:32:32 -04:00
Kasey White
118a5ac54e
add some block parsing and a test (incomplete)
2022-10-04 16:32:32 -04:00
rvcas
4acb849f09
fix: include return type in one function def
2022-10-04 16:32:32 -04:00
rvcas
55f906482a
feat: strip for release builds
2022-10-04 16:32:32 -04:00
rvcas
c5450d37d5
chore: move lang tests to a submodule
2022-10-04 16:32:32 -04:00
rvcas
43b147a9e0
feat: lists and flatten sequences
2022-10-04 16:32:32 -04:00
rvcas
3208dab718
feat: finish parsing let bindings
2022-10-04 16:32:32 -04:00
Kasey White
3c5039134f
attempt to parse let
2022-10-04 16:32:32 -04:00
Kasey White
60359ec9b0
add pipeline and logical ops to expr parsing
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-10-04 16:32:32 -04:00
rvcas
fff38e30d2
test: add more stuff to get successfully parsing
2022-10-04 16:32:32 -04:00
rvcas
8e3b32fe2c
Release 0.0.18
...
aiken@0.0.18
uplc@0.0.18
Generated by cargo-workspaces
2022-09-27 09:15:41 -04:00
rvcas
037297880c
Release 0.0.17
...
aiken@0.0.17
uplc@0.0.17
Generated by cargo-workspaces
2022-09-27 09:15:26 -04:00
rvcas
8f9481079c
Release 0.0.16
...
aiken@0.0.16
uplc@0.0.16
Generated by cargo-workspaces
2022-09-27 09:14:11 -04:00
alessandrokonrad
f3b9d33f32
added deserialisation error to machine
2022-09-27 09:13:00 -04:00
rvcas
94bfc2846c
Release 0.0.17
...
aiken-lang@0.0.17
Generated by cargo-workspaces
2022-09-26 17:13:44 -04:00
rvcas
4c1b04e022
chore: add Cargo.toml fields
2022-09-26 17:13:30 -04:00
rvcas
65f39432fa
Release 0.0.16
...
aiken@0.0.16
aiken-lang@0.0.16
Generated by cargo-workspaces
2022-09-26 17:11:01 -04:00
Lucas
28553e3d03
Merge pull request #33 from txpipe/lang
...
Lang
2022-09-26 17:10:30 -04:00
rvcas
119a6f1e77
feat: use pretty assert
2022-09-26 17:04:54 -04:00
rvcas
ae2866f784
Release 0.0.15
...
aiken@0.0.15
uplc@0.0.15
Generated by cargo-workspaces
2022-09-26 16:34:26 -04:00
alessandrokonrad
3256bfbc32
Wrapped errors in redeemer error
2022-09-26 16:33:52 -04:00
rvcas
81dd826ab8
Merge branch 'main' into lang
2022-09-26 11:15:02 -04:00
rvcas
4f26957806
feat: some expr with precendence parsing
2022-09-26 11:14:42 -04:00
rvcas
e817b39e4c
Release 0.0.14
...
aiken@0.0.14
uplc@0.0.14
Generated by cargo-workspaces
2022-09-26 09:59:28 -04:00
alessandrokonrad
5ec991d83a
fixed error handling in eval raw
2022-09-26 03:24:31 -04:00
rvcas
c08f6a8454
Merge branch 'main' into lang
2022-09-25 17:44:20 -04:00
rvcas
25790287b7
Release 0.0.13
...
aiken@0.0.13
uplc@0.0.13
Generated by cargo-workspaces
2022-09-24 20:35:36 -04:00
rvcas
08596588a7
feat: output total budget spent from cli
2022-09-24 20:23:51 -04:00
rvcas
4166e27fd7
chore: v1 comments
2022-09-24 19:52:40 -04:00
rvcas
8620332b75
feat: move input from json to helper method
2022-09-24 19:40:07 -04:00
Kasey White
3cb24a1d00
update test mem and cpu assertions for eval tx tests
2022-09-24 18:19:18 -04:00
alessandrokonrad
aa111f0a65
fixed slot
2022-09-25 00:01:01 +02:00
alessandrokonrad
35d09c642b
fixed time conversion
2022-09-24 23:59:58 +02:00
alessandrokonrad
fb0af3cfcf
fixed bugs
2022-09-24 17:47:07 -04:00
alessandrokonrad
3eb4fb7523
fixed bugs
2022-09-24 23:09:55 +02:00
Kasey White
ca2d8f0a1f
ada policy is now empty and mintValue includes 0 ada
2022-09-24 15:47:51 -04:00
alessandrokonrad
99a27f6a3d
new tests
2022-09-24 00:43:46 +02:00
Kasey White
3bb5826b91
change how mint gets converted to plutus data
2022-09-23 18:34:24 -04:00
Kasey White
c45643bb01
empty bytestring should return 0 not 1
2022-09-23 04:09:28 -04:00
Kasey White
9b6d4e20c7
check exunits for eval tests
2022-09-22 03:13:30 -04:00
rvcas
2572ed6bbd
fix: remove BadTerm
2022-09-19 16:40:08 -04:00
alessandrokonrad
169fa05572
added ex units from haskell plc
2022-09-19 22:32:56 +02:00
alessandrokonrad
3e10fcbfbb
changed example 4 to check 'False'
2022-09-19 22:15:31 +02:00
rvcas
caa88dab12
fix: valid condition for a script
2022-09-19 16:00:25 -04:00
Kasey White
6ccd0aa2fb
adding better debug for wrong term tag in uplc
2022-09-19 14:59:55 -04:00
alessandrokonrad
21d71e94b3
added more tests
2022-09-19 18:19:56 +02:00
alessandrokonrad
f12540d8e2
fixed missing script test
2022-09-19 17:17:15 +02:00
rvcas
0ba8787b97
chore: clippy
2022-09-19 11:11:52 -04:00
rvcas
f10e3836ad
feat: new error for bad term
2022-09-19 11:04:21 -04:00
alessandrokonrad
30ed8d9150
fixed initial_budget
2022-09-19 14:53:44 +02:00
alessandrokonrad
ea735428dd
fixed typos
2022-09-19 13:48:05 +02:00
alessandrokonrad
4a6496db3f
Replaced unreachable statements with Error
2022-09-19 13:38:56 +02:00
alessandrokonrad
1148863a43
Allow to set initial budget
2022-09-19 12:02:41 +02:00
alessandrokonrad
83bac598de
removed deprecated comment
2022-09-19 10:58:45 +02:00
alessandrokonrad
d5f398bc5f
Fixed output decoding for ResolvedInput
2022-09-19 10:50:25 +02:00
rvcas
6c34c9be19
feat: even more errors work
2022-09-19 01:05:33 -04:00
rvcas
9bab3187b1
feat: more errors
2022-09-19 00:39:52 -04:00
Harper
6e901de2f0
feat: implement script-related ledger checks for Tx Simulate ( #57 )
...
* feat: functions for extraneous/missing redeemers checks
* chore: typos
* feat: implement function to check for missing/extraneous scripts
* feat: check for missing/extraneous redeemers and scripts in eval_tx
* chore: add tests for missing/extraneous redeemers
* chore: remove duplicate file
2022-09-18 23:31:30 -04:00
rvcas
9e280f9cb5
feat: rename transaction eval and add error enum
2022-09-18 15:35:10 -04:00
rvcas
68fc0f643e
feat: add some v1 methods so that cost_mdls can be optional
2022-09-18 15:16:41 -04:00
Kasey White
dac25b6f41
fix cpu mem mix up on steps
2022-09-18 04:15:30 -04:00
alessandrokonrad
6619a0e431
moved cost_mdls language determination into eval_redeemer
2022-09-18 09:37:14 +02:00
Kasey White
472cea6c41
parameratize cost model
2022-09-17 21:12:48 -04:00
alessandrokonrad
d426f4922f
added eval_tx_raw
2022-09-16 17:13:42 +02:00
Kasey White
02a8a34fe8
expose tx simulation with simulate cli command
2022-09-16 04:35:20 -04:00
Kasey White
3f27bd9f13
move utils to uplc and break up
2022-09-16 04:00:29 -04:00
rvcas
ddf3cdb6ec
chore: use alpha 3 instead of main
2022-09-15 11:29:08 -04:00
rvcas
26deb6df10
fix: it compiles again
2022-09-15 11:27:33 -04:00
rvcas
348ed3b719
fix: changes from pallas bump
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2022-09-14 22:00:52 -04:00
rvcas
336af376e1
chore: bump pallas version
2022-09-14 18:52:42 -04:00
alessandrokonrad
806d98e5fc
added error messages to execution purpose
2022-09-14 18:52:05 -04:00
alessandrokonrad
fc92c40c3c
fixed typo
2022-09-14 18:52:05 -04:00
alessandrokonrad
2bd46f90bb
error statemens after program
2022-09-14 18:52:05 -04:00
alessandrokonrad
829d959fa3
more error statements
2022-09-14 18:52:05 -04:00
alessandrokonrad
a408491e41
added error messages
2022-09-14 18:52:05 -04:00
alessandrokonrad
be8daa00dd
added plutusV1 test
2022-09-14 18:52:04 -04:00
alessandrokonrad
6e4ff1e282
added plutusV1
2022-09-14 18:52:04 -04:00
alessandrokonrad
d9b34973c7
fixed constructor tags
2022-09-14 18:52:04 -04:00
alessandrokonrad
61bf55e151
added example
2022-09-14 18:52:04 -04:00
alessandrokonrad
eb1466d269
fixed budget calc
2022-09-14 18:52:04 -04:00
alessandrokonrad
fa6520e585
added full evaluation; still fails because hashes mismatch regarding pallas
2022-09-14 18:52:04 -04:00
alessandrokonrad
76d326b9ac
completed execution part
2022-09-14 18:52:04 -04:00
alessandrokonrad
b1b9d3a5d4
preliminary work on execution
2022-09-14 18:52:04 -04:00
alessandrokonrad
080985b7c6
more bug fixes
2022-09-14 18:52:04 -04:00
alessandrokonrad
33c2a25fa3
bit more refactoring
2022-09-14 18:52:03 -04:00
alessandrokonrad
ec63bd2365
fixed bugs in conversion to plutus data; little refactoring
2022-09-14 18:52:03 -04:00
alessandrokonrad
f0d17897ab
fixed bug in tx_in_info
2022-09-14 18:52:03 -04:00
alessandrokonrad
ecd363e67d
fixed bugs; preliminary work on eval
2022-09-14 18:52:03 -04:00
alessandrokonrad
4060a25324
fixed bugs
2022-09-14 18:52:03 -04:00
alessandrokonrad
24397d4b58
fixed time range
2022-09-14 18:52:03 -04:00
alessandrokonrad
57816d4c09
added get script purpose
2022-09-14 18:52:03 -04:00
alessandrokonrad
8b894f7351
added functions to get script context
2022-09-14 18:52:03 -04:00
alessandrokonrad
c0c7bd58b3
added all necessary trait impl for PlutusV2 scriptContext
2022-09-14 18:52:02 -04:00
alessandrokonrad
4e51826981
added more implementations for ToPlutusData
2022-09-14 18:52:02 -04:00
alessandrokonrad
60d7c52c26
added some structs; added ToPlutusData
2022-09-14 18:52:01 -04:00
rvcas
bc983d694a
feat: some cbor hex flags for flat and unflat
2022-09-14 18:51:38 -04:00
rvcas
da73995124
fix: resolved inputs should be a flag
2022-09-14 18:51:38 -04:00
Harper
d8cdeaf925
ouput ( #51 )
2022-09-14 18:51:38 -04:00
rvcas
564cd41626
chore: clean up tx in info
2022-09-14 18:51:37 -04:00
Kasey White
d5f8b749ae
add txininfo plutus data to main
2022-09-14 18:51:36 -04:00
rvcas
cf27c0c755
feat: apply redeemers and datum to script
2022-09-14 18:51:08 -04:00
rvcas
c9072deb09
feat: print some info
2022-09-14 18:50:11 -04:00
rvcas
055ca5c66b
feat: add a new subcommand for tx simulation
2022-09-14 18:50:05 -04:00
rvcas
4615132b05
Release 0.0.12
...
aiken@0.0.12
uplc@0.0.12
Generated by cargo-workspaces
2022-09-08 18:22:46 -04:00
Lucas
6d6f671f4f
eval with inputs ( #56 )
2022-09-08 18:20:52 -04:00
Niels Mündler
739f38beac
UPLC data parsing support by CBOR notation ( #37 )
...
* Implement constant data parsing support
New notation: (con data #0000 )
Where #0000 is the CBOR hex representation of a PlutusDatum
* Add pretty printing support for data
* Format
2022-09-08 16:10:12 -04:00
rvcas
d54aaff5de
feat: fill in expr unit parser a bit
2022-09-07 17:53:07 -04:00
rvcas
59a9bac9b5
feat: finish expr_seq_parser
2022-09-07 17:52:49 -04:00
rvcas
3bc507c9e8
feat: beginnings of expr parsing
2022-09-07 17:52:49 -04:00
rvcas
d87bb17a27
feat: type aliases and some fn parsing
2022-09-07 17:52:49 -04:00
rvcas
fbc9b27efe
feat: parse custom types
2022-09-07 17:52:49 -04:00
rvcas
1d1a6fc404
feat: parse imports
2022-09-07 17:52:49 -04:00
rvcas
1d6809661c
feat: lexer
2022-09-07 17:52:49 -04:00
rvcas
208f2e80ea
feat: more ast elements and some sample syntax
2022-09-07 17:52:48 -04:00
rvcas
35143f1544
feat: add the ast module
2022-09-07 17:52:48 -04:00
rvcas
fd17605e4d
feat: add deps
2022-09-07 17:52:46 -04:00
rvcas
e74eace15c
chore: init lang crate
2022-09-07 17:52:18 -04:00
rvcas
db5695a1c4
Release 0.0.11
...
aiken@0.0.11
uplc@0.0.11
Generated by cargo-workspaces
2022-09-07 17:49:27 -04:00
rvcas
4d742b5b47
chore: fix formatting
2022-09-06 15:45:08 -04:00
Niels Mündler
9b491b3777
Print machine logs (debug trace)
...
This may be made optional with a --verbose flag, but usually the user wants to see all invocations of the Trace command
2022-09-06 15:44:23 -04:00
Kasey White
c88e5df8b1
finish up builtin implementations for Vasil
2022-08-30 18:15:50 -04:00
Kasey White
2d1f147d40
remove extra dependencies and return result for data encode/decode
2022-08-29 14:07:13 -04:00
Kasey White
65b133251a
change pretty vars and handle larger range of cbor tags
2022-08-29 14:07:13 -04:00
Kasey White
833914c80c
done with data builtins
2022-08-29 14:07:13 -04:00
Kasey White
368cd4ad55
one more data builtin to go
2022-08-29 14:07:13 -04:00
Kasey White
00cc9f93d5
start making data with builtins
2022-08-29 14:07:13 -04:00
Kasey White
1a09a34873
mknil builtins
2022-08-29 14:07:13 -04:00
Kasey White
c34344ce21
add a few additional data builtins
2022-08-29 14:07:13 -04:00
Kasey White
c9c8e6e554
add unmap and other builtins to deconstruct data
2022-08-29 14:07:13 -04:00
Kasey White
73e367ad53
add a data builtin and do ex_mem for pairs, list, data
2022-08-29 14:07:13 -04:00
rvcas
45e22c1ea8
Release 0.0.10
...
aiken@0.0.10
flat-rs@0.0.10
uplc@0.0.10
Generated by cargo-workspaces
2022-08-27 16:45:04 -04:00
zypeh
03847259f7
Removing whitespace
2022-08-27 10:59:48 -04:00
zypeh
b474abdb9b
Rewrite test in proptest, remove quickcheck dep
2022-08-27 10:59:48 -04:00
Kasey White
8eb2d24704
fix clippy check
2022-08-25 19:36:03 -04:00
zypeh
aeae9aa51e
zigzag zagzig
2022-08-25 19:36:03 -04:00
zypeh
b81986c44c
Adding more tests
2022-08-25 19:36:03 -04:00
zypeh
ef81427b62
Fixed bug if byte array exceed 255 bytes
2022-08-25 19:36:03 -04:00
zypeh
10461779af
Moved the test and use compiler specific function
2022-08-25 19:36:03 -04:00
zypeh
7cff93e718
Code linting
2022-08-25 19:36:03 -04:00
zypeh
40fd4ae447
Adding test cover the write_blk encode function
2022-08-25 19:36:03 -04:00
zypeh
9ded4d79d5
Move test to tests directory
2022-08-25 19:36:03 -04:00
zypeh
f997a6250c
Eliminate the recursive call
2022-08-25 19:36:03 -04:00
Kasey White
09ae98065c
remaining buitlins for list and integer
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-08-24 00:06:17 -04:00
Kasey White
3f6ad6be60
verify signature changed name and cost
2022-08-24 00:06:17 -04:00
Kasey White
c03d3e3604
fix budget restriction back to protocol params ( #39 )
2022-08-21 16:52:31 -04:00
rvcas
2b27261711
Release 0.0.9
...
aiken@0.0.9
uplc@0.0.9
Generated by cargo-workspaces
2022-08-17 22:48:06 -04:00
rvcas
8ed87c5f17
chore: fix clippy issues
2022-08-17 22:40:32 -04:00
Kasey White
2bb482d9ec
Using rc we now get code that runs much faster and
...
can run jpg contract with no inputs
2022-08-17 22:40:32 -04:00
Kasey White
fb81955f51
start changing machine to use rc instead of box (does compile)
2022-08-17 22:40:32 -04:00
Kasey White
c050a5647f
remove some unnecessary clones with more optimizations to come
2022-08-17 22:40:32 -04:00
rvcas
c3f0814c9b
Release 0.0.8
...
aiken@0.0.8
uplc@0.0.8
Generated by cargo-workspaces
2022-08-12 19:45:20 -04:00
Kasey White
f3ace55355
Implement more builtins for bytestring and integer
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-08-10 12:23:34 -04:00
Kasey White
11ee99c199
Add several builtins for strings and bytestring
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-08-07 22:21:58 -04:00
rvcas
4d04942a5e
Release 0.0.7
...
aiken@0.0.7
flat-rs@0.0.7
uplc@0.0.7
Generated by cargo-workspaces
2022-08-05 13:15:26 -04:00
rvcas
b83394be74
feat: decode proto list and proto pair
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2022-08-05 00:38:41 -04:00
rvcas
e8f783e7bb
feat: decode plutus data
2022-08-05 00:38:41 -04:00
rvcas
fa3c88a31e
feat: add from_cbor and from_hex
2022-08-05 00:38:41 -04:00
rvcas
e6be899b2a
feat: fill in encode constant todos
2022-08-05 00:38:41 -04:00
rvcas
61b70e7e3d
feat: encode plutus data
2022-08-05 00:38:41 -04:00
Kasey White
d14920265e
flat encoding for list and pairs
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-08-05 00:38:41 -04:00
rvcas
198dae7f5d
feat: impl display for Program and Term where T: Binder
2022-08-05 00:38:41 -04:00
rvcas
e70881c27c
feat: add some missing enum members to constant
2022-08-05 00:38:41 -04:00
rvcas
8e8f1270b5
feat: to_cbor and to_hex for Program
2022-08-03 17:17:15 -04:00
rvcas
339e638705
feat: impl eval for Program<DeBruijn>
2022-08-02 19:04:25 -04:00
rvcas
207f9e5ab0
Release 0.0.6
...
aiken@0.0.6
flat-rs@0.0.6
uplc@0.0.6
Generated by cargo-workspaces
2022-08-02 14:04:30 -04:00
Kasey White
a3a175d74b
switch to stack model for plutus eval
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-07-28 02:48:08 -04:00
Kasey White
4acbd704e0
fix compilation issue
2022-07-27 11:27:27 -04:00
Kasey White
234ab7c7cb
Try out recursion for environment and frames
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-07-27 11:27:27 -04:00
Kasey White
be38d1eebe
fix fmt error
2022-07-24 19:58:20 -04:00
Kasey White
2552a9c203
Finish docs for decoder
2022-07-24 19:58:20 -04:00
Kasey White
ac3ab5b47a
chore: start decoding docs and fix wording for encode docs
2022-07-24 19:58:20 -04:00
Kasey White
3aaec0936d
chore: create docs for encoding
2022-07-24 19:58:20 -04:00
Kasey White
b3cb9c4510
use expect instead of unwrap
2022-07-24 19:51:57 -04:00
rvcas
2a85567154
chore: clippy
2022-07-24 19:51:57 -04:00
rvcas
9e62181caa
feat: new Error not a constant
2022-07-24 19:51:57 -04:00
rvcas
77a7b11467
feat: finish to_ex_mem for constant
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2022-07-24 19:51:57 -04:00
rvcas
f332dfeb38
feat: 3 new error cases and more generic pretty printing
2022-07-24 19:51:57 -04:00
Kasey White
598c5364fe
implement force for builtins
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-07-24 19:51:57 -04:00
rvcas
22f90bf07f
feat: impl ifThenElse kinda
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2022-07-24 19:51:57 -04:00
rvcas
83b9294ac1
chore: print runtime
2022-07-24 19:51:57 -04:00
rvcas
b7e6f7b27f
feat: add default builtin costs
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2022-07-24 19:51:57 -04:00
Kasey White
9f977f7e58
add costing capability for builtins
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-07-24 19:51:57 -04:00
Kasey White
84df3be139
start filling in builtin cost model
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-07-24 19:51:57 -04:00
Kasey White
a5140513de
fix: debruijn index - 1
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-07-24 19:51:57 -04:00
rvcas
d55409d8c5
feat: basic builtin execution
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2022-07-24 19:51:57 -04:00
Kasey White
9ea57aa461
Add some runtime types
2022-07-24 19:51:57 -04:00
Kasey White
045dc8fed8
add builtin cost model
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-07-24 19:51:57 -04:00
rvcas
e8aa013aa4
chore: set to zero in spend loop
2022-07-24 19:51:57 -04:00
Kasey White
93f7849fc0
Finish machine evaluation for all terms except builtin
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-07-24 19:51:57 -04:00
Kasey White
0e2214a908
Implement apply evaluate
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-07-24 19:51:57 -04:00
rvcas
650a789194
chore: step and maybe spend
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2022-07-24 19:51:57 -04:00
Kasey White
0bf93e59b5
add evaluation for terms
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-07-24 19:51:57 -04:00
rvcas
795d9ee028
feat: clean up the machine a bit
2022-07-24 19:51:57 -04:00
Kasey White
de476c801b
Add costing to steps
2022-07-24 19:51:57 -04:00
Kasey White
7b8018447f
create initial enums and function of the UPLC cek interpreter
2022-07-24 19:51:57 -04:00
MitchTurner
0ea42ab7e7
Remove commented code related to closed story ( #23 )
...
Co-authored-by: Turner <mitch@tpfs.io>
2022-07-10 12:32:36 -07:00
MitchTurner
ada7b00b49
Expand builder ( #20 )
...
* Add bool method
* Add proptest
* Add some more consts and stuff
* Refactor Lambda stuff out
* REfactor
* Convert bytestring test to prop test
* Add string constant
* Add char stuff, despite it not being ready
* Add unit
* Add var
* Add delay
* Add apply
* Add force
* Add error
* Add builtin
* Add example, remove feature
* Rename some stuff
Co-authored-by: Turner <mitch@tpfs.io>
2022-07-01 20:50:58 -07:00
Turner
7f70ae0f74
Remove experimentation in features
2022-06-29 14:02:57 -04:00
Turner
a238dc58a6
Move program builder to uplc crate
2022-06-29 14:02:57 -04:00
Turner
f8aae49fce
Appease Clippy-sama
2022-06-29 14:02:57 -04:00
Turner
6748395d9e
Remove TODOs
2022-06-29 14:02:57 -04:00
Turner
35bdd542f1
Add test for nested lambdas
2022-06-29 14:02:57 -04:00
Turner
888e64d485
Refactor Lambda too
2022-06-29 14:02:57 -04:00
Turner
c7dfd01a5e
Refactor
2022-06-29 14:02:57 -04:00
Turner
41a7b73877
Add test for lambda and some edge cases for constant
2022-06-29 14:02:57 -04:00
Turner
e667fc3613
Add passing tests for builder
2022-06-29 14:02:57 -04:00
rvcas
4db39c8790
Release 0.0.5
...
aiken@0.0.5
uplc@0.0.5
Generated by cargo-workspaces
2022-06-27 11:46:21 -04:00
Kasey White
302da5e20d
Fix clippy warning
2022-06-26 21:38:27 -04:00
Kasey White
4eafdd2d39
fix issue with same names causing 0 index debruijn for var
2022-06-26 21:38:27 -04:00
Turner
027daf30ea
Add TODO for failing test with link to bug
2022-06-26 19:03:17 -04:00
Turner
19fd6a0e8c
Add comment explaining why that test is only one-way
2022-06-26 19:03:17 -04:00
Turner
1b00e4d416
Sanitize fibonacci program to make round-trip tests happy, isolate unsanitary code
2022-06-26 19:03:17 -04:00
Turner
787f345275
Add new uplc case to test, it is failing
2022-06-26 19:03:17 -04:00
Turner
5ba7349f4a
Refactor tests, move them into integ folder
2022-06-26 19:03:17 -04:00
rvcas
38e78cafeb
chore: readmes in uplc and cli
2022-06-18 23:15:05 -04:00
rvcas
0dd5cf2cb6
Release 0.0.4
...
aiken@0.0.4
Generated by cargo-workspaces
2022-06-18 23:06:15 -04:00
rvcas
7129ad6202
feat: remove authors from cli help
2022-06-18 23:06:05 -04:00
rvcas
5bd848b0b8
Release 0.0.3
...
aiken@0.0.3
uplc@0.0.3
Generated by cargo-workspaces
2022-06-18 22:55:04 -04:00
rvcas
6aae184848
feat: new fmt command and pretty printing works
2022-06-18 22:54:26 -04:00
rvcas
6a39d4349a
feat: everything lines up
2022-06-18 22:54:26 -04:00
Kasey White
d18ac475d1
modification to pretty printing for constants and nesting
2022-06-18 22:54:26 -04:00
rvcas
672c7037f6
fix: add new assert
2022-06-18 22:54:26 -04:00
rvcas
7e86a71772
feat: more pretty printing logic
2022-06-18 22:54:26 -04:00
rvcas
5a6ba40557
feat: start pretty printing
2022-06-18 22:54:26 -04:00
rvcas
cbea795f68
feat: only need to compare unique and index
2022-06-17 15:39:31 -04:00
rvcas
b8c5c268d4
feat: add conversion to tests
2022-06-16 16:54:34 -04:00
rvcas
59a8f6477b
feat: convet a named debruijn to a name
2022-06-15 20:12:12 -04:00
rvcas
7693da4bbf
Release 0.0.2
...
aiken@0.0.2
Generated by cargo-workspaces
2022-06-14 19:16:18 -04:00
rvcas
f8284ebaa0
chore: reset aiken version
2022-06-14 19:15:59 -04:00
rvcas
8d12332fa8
chore: version for uplc dep
2022-06-14 19:14:13 -04:00
rvcas
575585205b
Release 0.0.2
...
aiken@0.0.2
flat-rs@0.0.2
uplc@0.0.2
Generated by cargo-workspaces
2022-06-14 19:12:46 -04:00
rvcas
f7fba12a5f
chore: flat is taken in crates.io
2022-06-14 19:11:00 -04:00
rvcas
f511dce353
chore
2022-06-14 18:55:59 -04:00
rvcas
c210803adf
chore: add package description
2022-06-14 18:51:25 -04:00
rvcas
969cc80abf
chore: prepare to publish
2022-06-14 18:46:18 -04:00
rvcas
dc4246244d
chore: document somethings
2022-06-14 17:27:27 -04:00
rvcas
984c253f31
feat: rename to aiken and add e2e tests for uplc
2022-06-11 23:22:24 -04:00
Kasey White
1ef116fcda
fix: parse negative numbers and empty bytestrings
2022-06-10 17:23:36 -04:00
rvcas
2afded2d27
fix: builtin parsing
2022-06-10 11:48:46 -04:00
rvcas
b05f0846a8
fix: moving to a parser that can handle left recursion
2022-06-10 01:55:28 -04:00
rvcas
86089b4bee
fix: different attempt
2022-06-09 00:44:52 -04:00
rvcas
474df4a3ae
fix: different attempt
2022-06-08 23:22:34 -04:00
rvcas
74df7f8a7c
fix: potential fix for left recursion
2022-06-08 22:21:22 -04:00
rvcas
1c8f3a736b
feat: new uplc parser
2022-06-08 21:51:04 -04:00
Kasey White
33fcb77681
fix: put byte_array final pos incrementer in wrong scope
2022-06-08 15:42:58 -04:00
Kasey White
be477917f2
fix: fixed edge cases to get flat encode and decode working with stress test case
2022-06-08 03:33:09 -04:00
rvcas
21d713ece3
feat: change term parsing order
2022-06-07 22:02:20 -04:00
rvcas
b47030b86d
feat: better clap commands
2022-06-06 23:55:01 -04:00
Kasey White
895f279be0
fix: parser fixes for spacing
2022-06-06 23:28:36 -04:00
rvcas
60a920a0ac
fix: more subtle things
2022-06-06 22:51:09 -04:00
rvcas
4c45c95620
fix: var parsing
2022-06-06 22:40:15 -04:00
rvcas
d4251206e7
feat: fake named debruijn
2022-06-05 22:47:04 -04:00
rvcas
349364d867
chore: builtins implement Copy
2022-06-04 14:06:46 -04:00
rvcas
1ecd47a361
feat: clean up errors
2022-06-04 14:01:45 -04:00
rvcas
377c5c206c
feat: better errors for debruijn converter
2022-06-04 12:16:56 -04:00
rvcas
2f51b23e7e
feat: debruijn conversions and binder
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2022-06-04 11:15:34 -04:00
rvcas
2ad630de90
feat: use a stack for scope
2022-06-04 00:29:30 -04:00
rvcas
946937f945
feat: more debruijn stuff
2022-06-03 22:00:16 -04:00
rvcas
f8edb5d519
feat: start debruijn conversion
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2022-06-03 00:36:39 -04:00
rvcas
83d6b5243e
feat: get program ready for debruijn
2022-06-02 21:39:09 -04:00
rvcas
c7037ff8d9
feat: get string interning working
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2022-06-01 01:11:30 -04:00
Kasey White
581b8fc85d
feat: flat tweaks and string interning
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-05-31 22:57:55 -04:00
rvcas
31e7d63d9a
chore: use ref to get slice
2022-05-30 18:26:49 -04:00
rvcas
3f1ddef635
chore: slight clean up
2022-05-30 18:05:50 -04:00
Kasey White
83a784c745
add simple test for decoding
2022-05-30 17:12:32 -04:00
Kasey White
d4b659c04e
feat: finish up most of decoding (integer, decodeListWith, Term, Program, Version, Constant, Builtin)
2022-05-30 16:49:43 -04:00
rvcas
bf3b984405
fix: add back the decoder lifetime
2022-05-30 10:49:23 -04:00
Kasey White
4fb508e3b2
Add decoding for bytestring, string, char, bool, and filler
2022-05-30 02:32:39 -04:00
rvcas
9d8afee3d2
chore: impl todo for filler decode
2022-05-29 21:53:13 -04:00
rvcas
0a476d0592
feat: prepare decoding traits and make new Flat trait
2022-05-28 20:12:03 -04:00
Kasey White
41487733f7
feat: builtin encoding
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-05-28 00:23:34 -04:00
Kasey White
c01469ea51
feat: spec complaint program encoding
...
Co-authored-by: rvcas <x@rvcas.dev>
2022-05-27 22:37:08 -04:00
Kasey White
2e130ac5f0
add integer based on plutus core manual information
2022-05-24 04:55:10 -04:00
rvcas
b345afd12f
feat: we're flat encoding plutus core
2022-05-23 12:45:13 -04:00
Kasey White
344620136f
use encode_list_with with safe_encode_bits func
2022-05-23 12:20:04 -04:00
Kasey White
c38da6426f
implement encode_constant and add term tags for encoding
2022-05-23 02:22:37 -04:00
Kasey White
52f9f5ab41
feat: start on encoding constants with Flat Encoder
2022-05-22 20:29:59 -04:00
Kasey White
fdfaf91bcf
feat: create encoding for char, string, byte array
2022-05-22 18:16:42 -04:00
rvcas
52523516fe
feat: u8
2022-05-22 12:56:28 -04:00
rvcas
33fee5b3e0
chore: switch to a mono repo
2022-05-22 12:40:52 -04:00