Commit Graph

876 Commits

Author SHA1 Message Date
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
rvcas
c6fe5235fe chore: fmt acceptance test 40 2023-01-13 14:55:18 -05: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
KtorZ
2b26d9a0c1 Align README's tagline with website. 2023-01-13 10:18:03 +01: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
Matthias Benkort
e61a56566d Merge pull request #248 from aiken-lang/rvcas/match_tests
`aiken check` make match tests flag fancier
2023-01-10 19:33:51 +01: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
b6de2549a2 chore: update changelog 2023-01-06 13:39:18 -05:00
rvcas
c89802eaed chore: bump pallas version 2023-01-06 13:39:18 -05:00
Matthias Benkort
a51736187f Merge pull request #238 from aiken-lang/record-update
Nested list fix and Boolean constant fix
2023-01-06 14:30:59 +01:00
KtorZ
7e8e8fd4a7 Try fixing acceptance step in CI. 2023-01-06 14:23:46 +01: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
Matthias Benkort
de7a8f6f20 Merge pull request #240 from matiwinnetou/aiken-examples
hello world for starters
2023-01-06 13:49:30 +01:00
KtorZ
193792b48f Draft quick README, use ENV var for passing configuration. 2023-01-06 13:44:20 +01:00
KtorZ
1b7be32d74 rename 'hello_world-keygen.ts' as 'generate-credentials'
And add *.sk to .gitignore!
2023-01-06 13:32:27 +01:00
KtorZ
eb2f4a8056 Use pinned version of the stdlib. 2023-01-06 13:31:18 +01:00
KtorZ
7c2b1ac269 Define 'local' gitignore for examples' packages. 2023-01-06 13:30:56 +01:00
Mateusz Czeladka
1142c6ca6d hello world for starters 2023-01-06 13:24:15 +01:00
KtorZ
aff96d99af Return non-zero exit code on acceptance test failure. 2023-01-06 13:10:11 +01:00
KtorZ
3e4f7c0422 Fix acceptance test runner path in CI workflow. 2023-01-06 13:01:52 +01:00
KtorZ
470e331b26 Include acceptance tests in the CI workflow 2023-01-06 06:56:09 +01:00
KtorZ
4b34617466 Revert "fix: nested list issues in when statements"
This reverts commit 542962a2ea.
2023-01-06 06:50:42 +01:00
KtorZ
613fb3c957 Add new acceptance test scenario 038 2023-01-06 06:46:15 +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
88d5d1b7f7 chore: add 036 assets 2022-12-31 00:09:02 -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