R7RS/R6RS Scheme implementation in Rust using CPS & JIT compilation
  • Rust 49.7%
  • Scheme 49.1%
  • Makefile 0.5%
  • Python 0.4%
  • C 0.3%
Find a file
2026-04-08 00:02:17 +00:00
.cargo
.forgejo/workflows feat: graphical CPS 2026-03-16 13:43:52 +07:00
.github/workflows remove build-runtime from release workflow 2026-01-03 10:46:54 +07:00
.vscode
asmgen feat: add new SRFIs to build system and cond-expand 2026-01-31 10:08:11 +07:00
bin
c
capy refactor: cleanup Rust code 2026-04-07 19:25:07 +07:00
capy-bytecode bump version 2026-02-25 22:42:57 +07:00
capy-derive Fix clippy warnings in capy and capy-derive crates 2026-04-07 18:55:12 +07:00
docs BOOTSTRAP.md 2025-12-25 23:55:34 +07:00
lib refactor(runtime): stats and cleaner code 2026-02-25 15:13:52 +07:00
tests move from double barelled CPS to single return continuation 2026-02-24 12:46:17 +07:00
.DS_Store comment out failed tests for now 2026-01-14 20:36:00 +07:00
.git-blame-ignore-revs chore: add fmt commit to git-blame-ignore-vars 2026-01-08 19:42:00 +07:00
.gitignore chore: the great formatting 2026-01-08 19:13:53 +07:00
.gitmodules remove nanopass submodule 2025-12-26 11:52:08 +07:00
Cargo.lock feat: graphical CPS 2026-03-16 13:43:52 +07:00
Cargo.toml feat: graphical CPS 2026-03-16 13:43:52 +07:00
CHANGELOG.md chore: update CHANGELOG.md [skip ci] 2026-04-08 00:02:17 +00:00
cliff.toml fix(ci): do not include [skip ci] into changelog 2026-01-31 10:11:05 +07:00
INSTALLATION.md disable tree-sitter dependency after bootstrap 2025-12-19 16:10:57 +07:00
LICENSE Change license from GPLv3 to LGPLv3 2025-12-25 22:17:12 +07:00
Makefile fix(makefile): trim v prefix from VERSION in dist-deb recipe 2026-02-26 07:50:33 +07:00
README.md
rust-toolchain.toml CI job 2025-12-17 20:51:43 +07:00
TODO.md

CapyScheme

R6RS/R7RS compiler and runtime written in Rust.

Goals

  • Continuation-Passing Style compiler based on Compiling with Continuations, Continued together with JIT compiler utilizing Cranelift to emit native code in CPS style.
  • Runtime with support for loading modules, native extensions, and fast GC.
  • User-friendly: develop standard library and set of utilities to make using Scheme easier.
  • Interactive: Provide a REPL with auto-complete, debugger, disassembler etc.

R6RS/R7RS support

Most of R6RS and R7RS-small should be "just working" apart from some bugs. R6RS test-suite from racket/r6rs is used to guide development and at the moment 99.3% of tests are passing.

To run tests yourself:

$ capy -L . -s tests/r6rs/run-via-eval.sps

Thanks

Big thanks to authors of Larceny, Guile and Ypsilon. CapyScheme uses stdlib parts from all of them and takes inspiration from them.