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