
CLI - Web - Lambda - PHP Extension - Jupyter
santa-lang
An functional, C-like programming language for solving Advent of Code puzzles.
Influenced by: Rust, Python, Clojure, F#, Scala
Release
The recommended implementation is Comet (Rust tree-walking interpreter).
| Runtime | Platform | Release |
|---|---|---|
| CLI | Linux (x64) | santa-lang-comet-cli-1.0.1-linux-amd64 |
| CLI | Linux (ARM) | santa-lang-comet-cli-1.0.1-linux-arm64 |
| CLI | macOS (Intel) | santa-lang-comet-cli-1.0.1-macos-amd64 |
| CLI | macOS (ARM) | santa-lang-comet-cli-1.0.1-macos-arm64 |
| CLI | Docker | ghcr.io/eddmann/santa-lang-cli:latest |
| Web | WASM | @eddmann/santa-lang-wasm |
| Lambda | provided.al2 | santa-lang-comet-lambda-1.0.1.zip |
| PHP | Linux (x64) | santa-lang-comet-php-1.0.1-linux-amd64.so |
| Jupyter | Linux (x64) | santa-lang-comet-jupyter-1.0.1-linux-amd64 |
| Jupyter | macOS (Intel) | santa-lang-comet-jupyter-1.0.1-macos-amd64 |
See Reindeer below for alternative implementations (Blitzen, Dasher, Donner, Prancer).
Why?
Over the past several years I have been slowly working through the previous Advent of Code calendars. For each calendar I opt to solve the puzzles in a new programming language, to familiarise myself with other ways of understanding and working. However, there comes a time in each calendar that I grow to dislike some aspect of the language. So I had an idea... why not give this whole programming language design a go. That way if I grow to dislike this language, I only have myself to blame!
Welcome santa-lang, my programming language designed to help tackle Advent of Code puzzles.
Reindeer
There are multiple implementations (affectionately called "reindeer") of the language, all of which follow the language specification. See the Reindeer section for detailed comparisons, downloads, and architecture information.
| Implementation | Language | Execution Model | Runtimes |
|---|---|---|---|
| Comet | Rust | Tree-walking interpreter | CLI, Web (WASM), Lambda, PHP, Jupyter |
| Blitzen | Rust | Bytecode VM | CLI |
| Dasher | Rust | LLVM native compiler | CLI |
| Donner | Kotlin | JVM bytecode compiler | CLI |
| Prancer | TypeScript | Tree-walking interpreter | CLI, Web (JS), Lambda |
Tooling
| Tool | Language | Description |
|---|---|---|
| Formatter | Zig | Opinionated code formatter for santa-lang |