Home / aiken-lang / aiken
Dec 31, 8-9 PM (0)
Dec 31, 9-10 PM (0)
Dec 31, 10-11 PM (0)
Dec 31, 11-12 AM (0)
Jan 01, 12-1 AM (0)
Jan 01, 1-2 AM (0)
Jan 01, 2-3 AM (0)
Jan 01, 3-4 AM (0)
Jan 01, 4-5 AM (0)
Jan 01, 5-6 AM (0)
Jan 01, 6-7 AM (0)
Jan 01, 7-8 AM (0)
Jan 01, 8-9 AM (0)
Jan 01, 9-10 AM (0)
Jan 01, 10-11 AM (0)
Jan 01, 11-12 PM (0)
Jan 01, 12-1 PM (0)
Jan 01, 1-2 PM (0)
Jan 01, 2-3 PM (0)
Jan 01, 3-4 PM (0)
Jan 01, 4-5 PM (0)
Jan 01, 5-6 PM (0)
Jan 01, 6-7 PM (0)
Jan 01, 7-8 PM (8)
Jan 01, 8-9 PM (0)
Jan 01, 9-10 PM (0)
Jan 01, 10-11 PM (0)
Jan 01, 11-12 AM (0)
Jan 02, 12-1 AM (0)
Jan 02, 1-2 AM (0)
Jan 02, 2-3 AM (0)
Jan 02, 3-4 AM (0)
Jan 02, 4-5 AM (0)
Jan 02, 5-6 AM (0)
Jan 02, 6-7 AM (0)
Jan 02, 7-8 AM (0)
Jan 02, 8-9 AM (0)
Jan 02, 9-10 AM (0)
Jan 02, 10-11 AM (0)
Jan 02, 11-12 PM (0)
Jan 02, 12-1 PM (0)
Jan 02, 1-2 PM (0)
Jan 02, 2-3 PM (0)
Jan 02, 3-4 PM (0)
Jan 02, 4-5 PM (0)
Jan 02, 5-6 PM (0)
Jan 02, 6-7 PM (0)
Jan 02, 7-8 PM (0)
Jan 02, 8-9 PM (0)
Jan 02, 9-10 PM (0)
Jan 02, 10-11 PM (0)
Jan 02, 11-12 AM (0)
Jan 03, 12-1 AM (0)
Jan 03, 1-2 AM (0)
Jan 03, 2-3 AM (0)
Jan 03, 3-4 AM (0)
Jan 03, 4-5 AM (0)
Jan 03, 5-6 AM (0)
Jan 03, 6-7 AM (0)
Jan 03, 7-8 AM (0)
Jan 03, 8-9 AM (0)
Jan 03, 9-10 AM (0)
Jan 03, 10-11 AM (0)
Jan 03, 11-12 PM (0)
Jan 03, 12-1 PM (0)
Jan 03, 1-2 PM (0)
Jan 03, 2-3 PM (0)
Jan 03, 3-4 PM (0)
Jan 03, 4-5 PM (0)
Jan 03, 5-6 PM (0)
Jan 03, 6-7 PM (0)
Jan 03, 7-8 PM (0)
Jan 03, 8-9 PM (0)
Jan 03, 9-10 PM (0)
Jan 03, 10-11 PM (0)
Jan 03, 11-12 AM (0)
Jan 04, 12-1 AM (0)
Jan 04, 1-2 AM (0)
Jan 04, 2-3 AM (0)
Jan 04, 3-4 AM (0)
Jan 04, 4-5 AM (0)
Jan 04, 5-6 AM (0)
Jan 04, 6-7 AM (0)
Jan 04, 7-8 AM (0)
Jan 04, 8-9 AM (0)
Jan 04, 9-10 AM (0)
Jan 04, 10-11 AM (0)
Jan 04, 11-12 PM (0)
Jan 04, 12-1 PM (0)
Jan 04, 1-2 PM (0)
Jan 04, 2-3 PM (0)
Jan 04, 3-4 PM (0)
Jan 04, 4-5 PM (0)
Jan 04, 5-6 PM (0)
Jan 04, 6-7 PM (0)
Jan 04, 7-8 PM (0)
Jan 04, 8-9 PM (0)
Jan 04, 9-10 PM (0)
Jan 04, 10-11 PM (0)
Jan 04, 11-12 AM (0)
Jan 05, 12-1 AM (0)
Jan 05, 1-2 AM (0)
Jan 05, 2-3 AM (0)
Jan 05, 3-4 AM (0)
Jan 05, 4-5 AM (0)
Jan 05, 5-6 AM (0)
Jan 05, 6-7 AM (0)
Jan 05, 7-8 AM (0)
Jan 05, 8-9 AM (0)
Jan 05, 9-10 AM (0)
Jan 05, 10-11 AM (0)
Jan 05, 11-12 PM (0)
Jan 05, 12-1 PM (0)
Jan 05, 1-2 PM (0)
Jan 05, 2-3 PM (0)
Jan 05, 3-4 PM (0)
Jan 05, 4-5 PM (0)
Jan 05, 5-6 PM (0)
Jan 05, 6-7 PM (0)
Jan 05, 7-8 PM (0)
Jan 05, 8-9 PM (1)
Jan 05, 9-10 PM (0)
Jan 05, 10-11 PM (0)
Jan 05, 11-12 AM (0)
Jan 06, 12-1 AM (0)
Jan 06, 1-2 AM (0)
Jan 06, 2-3 AM (0)
Jan 06, 3-4 AM (0)
Jan 06, 4-5 AM (0)
Jan 06, 5-6 AM (0)
Jan 06, 6-7 AM (0)
Jan 06, 7-8 AM (0)
Jan 06, 8-9 AM (0)
Jan 06, 9-10 AM (0)
Jan 06, 10-11 AM (0)
Jan 06, 11-12 PM (0)
Jan 06, 12-1 PM (0)
Jan 06, 1-2 PM (0)
Jan 06, 2-3 PM (0)
Jan 06, 3-4 PM (0)
Jan 06, 4-5 PM (0)
Jan 06, 5-6 PM (0)
Jan 06, 6-7 PM (0)
Jan 06, 7-8 PM (0)
Jan 06, 8-9 PM (0)
Jan 06, 9-10 PM (0)
Jan 06, 10-11 PM (0)
Jan 06, 11-12 AM (0)
Jan 07, 12-1 AM (0)
Jan 07, 1-2 AM (0)
Jan 07, 2-3 AM (0)
Jan 07, 3-4 AM (0)
Jan 07, 4-5 AM (0)
Jan 07, 5-6 AM (0)
Jan 07, 6-7 AM (0)
Jan 07, 7-8 AM (0)
Jan 07, 8-9 AM (0)
Jan 07, 9-10 AM (0)
Jan 07, 10-11 AM (0)
Jan 07, 11-12 PM (0)
Jan 07, 12-1 PM (0)
Jan 07, 1-2 PM (0)
Jan 07, 2-3 PM (0)
Jan 07, 3-4 PM (0)
Jan 07, 4-5 PM (12)
Jan 07, 5-6 PM (3)
Jan 07, 6-7 PM (0)
Jan 07, 7-8 PM (0)
Jan 07, 8-9 PM (0)
24 commits this week Dec 31, 2025 - Jan 07, 2026
Add stepping interface, make generic over context
Exposes an interface to run the CEK machine one step at a time
(essentially just exporing a few functions);

More importantly, Now that we've added Context to terms, and propagated that through
compilation, when we *run* the machine, we have to erase the context
down to unit ().

This makes things like debugger support awkward, because as the machine
executes, the term being executed gets manipulated. That means to map it
back to the generated source maps, we'd need some kind of pattern
matching system.

So, instead if we update the Machine to be able to run generically over
context (i.e. preserve the context as we juggle the CEK machine), then
we can use that context to attach a post-order numbering to each node,
and use that to index into the source maps.

To that end, we add a context parameter to Value, BuiltinRuntime, and
Env.

Of note, we don't make Error generic over Context. While that might be
useful for better error messages on failure, it's a much bigger
refactor, and isn't critical for debugging steps; so for now, we just
erase the context when constructing errors, and provide a utility for
lifting Value<()> into the default context.
Construct UPLC Terms with location info
This now passes the location information we have down into the Term!

It's not *super* useful yet; the things generated by the compiler that
*should* be able to derive their span info from the things around them
aren't yet being provided; but it's a good start, all the tests pass!

For example, here's a little fibonacci test I put together:

=== Source code ===

          fn fib(n: Int) -> Int {
            if n < 2 {
              n
            } else {
              fib(n - 1) + fib(n - 2)
            }
          }

          test fib_test() {
            fib(10) == 55
          }

    === Term tree with source locations ===
    Apply (no span)
      Apply (no span)
        Builtin(EqualsInteger) (no span)
        Apply (no span)
          Apply (no span)
            Lambda(test_module_fib) (no span)
              Apply (no span)
                Lambda(test_module_fib) (no span)
                  Var(test_module_fib) @ 164..167 = "fib"
                Apply (no span)
                  Var(test_module_fib) (no span)
                  Var(test_module_fib) (no span)
            Lambda(__no_inline__) (no span)                                                 Lambda(test_module_fib) (no span)
                Lambda(n_id_0) (no span)
                  Force (no span)
                    Apply (no span)
                      Apply (no span)
                        Apply (no span)
                          Force (no span)
                            Builtin(IfThenElse) (no span)
                          Apply (no span)
                            Apply (no span)
                              Builtin(LessThanInteger) @ 42..47 = "n < 2"
                              Var(n_id_0) @ 42..43 = "n"
                            Constant(Integer(2)) (no span)
                        Delay (no span)
                          Var(n_id_0) @ 60..61 = "n"
                      Delay (no span)
                        Apply (no span)
                          Apply (no span)
                            Builtin(AddInteger) (no span)
                            Apply (no span)
                              Apply (no span)
                                Var(test_module_fib) @ 89..92 = "fib"                                         Var(test_module_fib) @ 89..92 = "fib"
                              Apply (no span)
                                Apply (no span)
                                  Builtin(SubtractInteger) @ 93..98 = "n
    - 1"
                                  Var(n_id_0) @ 93..94 = "n"
                                Constant(Integer(1)) (no span)                                          Apply (no span)
                            Apply (no span)
                              Var(test_module_fib) @ 102..105 = "fib"                                       Var(test_module_fib) @ 102..105 = "fib"
                            Apply (no span)
                              Apply (no span)
                                Builtin(SubtractInteger) @ 106..111 = "n
    - 2"
                                Var(n_id_0) @ 106..107 = "n"
                              Constant(Integer(2)) (no span)
          Constant(Integer(10)) (no span)
      Constant(Integer(55)) (no span)
chore(deps): bump actions/download-artifact from 6 to 7
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump DeterminateSystems/nix-installer-action from 4 to 21
Bumps [DeterminateSystems/nix-installer-action](https://github.com/determinatesystems/nix-installer-action) from 4 to 21.
- [Release notes](https://github.com/determinatesystems/nix-installer-action/releases)
- [Commits](https://github.com/determinatesystems/nix-installer-action/compare/v4...v21)

---
updated-dependencies:
- dependency-name: DeterminateSystems/nix-installer-action
  dependency-version: '21'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump actions/upload-artifact from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump regex from 1.11.1 to 1.12.2
Bumps [regex](https://github.com/rust-lang/regex) from 1.11.1 to 1.12.2.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.11.1...1.12.2)

---
updated-dependencies:
- dependency-name: regex
  dependency-version: 1.12.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump rayon from 1.10.0 to 1.11.0
Bumps [rayon](https://github.com/rayon-rs/rayon) from 1.10.0 to 1.11.0.
- [Changelog](https://github.com/rayon-rs/rayon/blob/main/RELEASES.md)
- [Commits](https://github.com/rayon-rs/rayon/compare/rayon-core-v1.10.0...rayon-core-v1.11.0)

---
updated-dependencies:
- dependency-name: rayon
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump tracing from 0.1.43 to 0.1.44
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.43 to 0.1.44.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.43...tracing-0.1.44)

---
updated-dependencies:
- dependency-name: tracing
  dependency-version: 0.1.44
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): bump serde_json from 1.0.140 to 1.0.148
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.140 to 1.0.148.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.140...v1.0.148)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-version: 1.0.148
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>