{"id":35769902,"url":"https://github.com/eddmann/santa-lang-dasher","last_synced_at":"2026-02-19T15:36:05.559Z","repository":{"id":332412791,"uuid":"1126825798","full_name":"eddmann/santa-lang-dasher","owner":"eddmann","description":"Dasher - Rust LLVM-based AOT native compiler for santa-lang, compiling to optimized machine code","archived":false,"fork":false,"pushed_at":"2026-01-07T12:04:17.000Z","size":1999,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T19:57:56.970Z","etag":null,"topics":["advent-of-code","aot-compiler","cli","compiler","dasher","llvm","native-compiler","rust","santa-lang"],"latest_commit_sha":null,"homepage":"https://eddmann.com/santa-lang/reindeer/dasher/","language":"Rust","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eddmann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-02T16:39:55.000Z","updated_at":"2026-01-08T18:17:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/eddmann/santa-lang-dasher","commit_stats":null,"previous_names":["eddmann/santa-lang-dasher"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/eddmann/santa-lang-dasher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddmann%2Fsanta-lang-dasher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddmann%2Fsanta-lang-dasher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddmann%2Fsanta-lang-dasher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddmann%2Fsanta-lang-dasher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eddmann","download_url":"https://codeload.github.com/eddmann/santa-lang-dasher/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddmann%2Fsanta-lang-dasher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29620144,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T13:04:20.082Z","status":"ssl_error","status_checked_at":"2026-02-19T13:03:33.775Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["advent-of-code","aot-compiler","cli","compiler","dasher","llvm","native-compiler","rust","santa-lang"],"created_at":"2026-01-07T03:12:45.088Z","updated_at":"2026-02-19T15:36:05.554Z","avatar_url":"https://github.com/eddmann.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://eddmann.com/santa-lang/\"\u003e\u003cimg src=\"./docs/logo.png\" alt=\"santa-lang\" width=\"400px\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\n# santa-lang Dasher\n\nLLVM-based AOT native compiler implementation of [santa-lang](https://eddmann.com/santa-lang/), written in Rust.\n\n## Overview\n\nsanta-lang is a functional, expression-oriented programming language designed for solving Advent of Code puzzles. This implementation compiles to native executables via LLVM, with type inference enabling specialization for native operations.\n\nKey language features:\n\n- First-class functions and closures with tail-call optimization\n- Pipeline and composition operators for expressive data flow\n- Persistent immutable data structures\n- Lazy sequences and infinite ranges\n- Pattern matching with guards\n- [Rich built-in function library](https://eddmann.com/santa-lang/builtins/)\n- AoC runner with automatic input fetching\n\n## Architecture\n\n```\nSource Code → Lexer → Parser → Type Inference → Codegen → LLVM → Native Binary\n                                                    ↓\n                                          Runtime Library (FFI)\n```\n\n| Component          | Description                                             |\n| ------------------ | ------------------------------------------------------- |\n| **Lexer**          | Tokenizes source into keywords, operators, literals     |\n| **Parser**         | Builds an Abstract Syntax Tree (AST) using Pratt parser |\n| **Type Inference** | Infers and specializes types for native operations      |\n| **Codegen**        | Generates LLVM IR using inkwell                         |\n| **LLVM**           | Compiles IR to native machine code (AOT)                |\n| **Runtime**        | FFI library for type-aware operations and collections   |\n\nFor detailed implementation internals, see [ARCHITECTURE.md](docs/ARCHITECTURE.md).\n\n## Installation\n\n### Docker\n\n```bash\ndocker pull ghcr.io/eddmann/santa-lang-dasher:cli-latest\ndocker run --rm ghcr.io/eddmann/santa-lang-dasher:cli-latest --help\n```\n\n### Release Binaries\n\nDownload pre-built binaries from [GitHub Releases](https://github.com/eddmann/santa-lang-dasher/releases):\n\n| Platform              | Artifact                                      |\n| --------------------- | --------------------------------------------- |\n| Linux (x86_64)        | `santa-lang-dasher-cli-{version}-linux-amd64` |\n| Linux (ARM64)         | `santa-lang-dasher-cli-{version}-linux-arm64` |\n| macOS (Intel)         | `santa-lang-dasher-cli-{version}-macos-amd64` |\n| macOS (Apple Silicon) | `santa-lang-dasher-cli-{version}-macos-arm64` |\n\n## Usage\n\n```bash\n# Run a solution\nsanta-cli solution.santa\n\n# Run tests defined in a solution\nsanta-cli -t solution.santa\n\n# Include slow tests (marked with @slow)\nsanta-cli -t -s solution.santa\n\n# Evaluate inline code\nsanta-cli -e '1 + 2'\n\n# Read from stdin\necho 'puts(42)' | santa-cli\n\n# Compile to standalone executable\nsanta-cli -c solution.santa\n./solution\n```\n\n## Example\n\nHere's a complete Advent of Code solution (2015 Day 1):\n\n```santa\ninput: read(\"aoc://2015/1\")\n\npart_one: {\n  input |\u003e fold(0) |floor, direction| {\n    if direction == \"(\" { floor + 1 } else { floor - 1 };\n  }\n}\n\npart_two: {\n  zip(1.., input) |\u003e fold(0) |floor, [index, direction]| {\n    let next_floor = if direction == \"(\" { floor + 1 } else { floor - 1 };\n    if next_floor \u003c 0 { break index } else { next_floor };\n  }\n}\n\ntest: {\n  input: \"()())\"\n  part_one: -1\n  part_two: 5\n}\n```\n\nKey language features shown:\n\n- **`input:`** / **`part_one:`** / **`part_two:`** - AoC runner sections\n- **`|\u003e`** - Pipeline operator (thread value through functions)\n- **`fold`** - Reduce with early exit support via `break`\n- **`test:`** - Inline test cases with expected values\n\n## Building\n\nRequires Rust 1.85+ and LLVM 18:\n\n```bash\n# Build CLI (debug)\nmake build\n\n# Build CLI (release)\nmake release\n\n# Run tests\nmake test\n\n# Run linting\nmake lint\n```\n\n## Development\n\nRun `make help` to see all available targets:\n\n```bash\nmake help          # Show all targets\nmake can-release   # Run all CI checks (lint + test)\nmake lint          # Run rustfmt and clippy checks\nmake test          # Run all tests\nmake fmt           # Format code\nmake bench         # Run Criterion benchmarks\nmake install       # Install to ~/.cargo/bin\n```\n\n## Project Structure\n\n```\n├── lang/                  # Core compiler library\n│   └── src/\n│       ├── lexer/         # Tokenization\n│       ├── parser/        # AST construction (Pratt parser)\n│       ├── types/         # Type inference\n│       ├── codegen/       # LLVM IR generation\n│       └── runner/        # AoC solution runner\n├── runtime/               # FFI runtime library\n│   └── src/\n│       ├── value.rs       # NaN-boxed value representation\n│       ├── heap.rs        # Heap object types\n│       ├── operations.rs  # Type-aware dispatch\n│       └── builtins.rs    # 80+ built-in functions\n├── cli/                   # Command-line interface\n└── benchmarks/            # Performance benchmarks\n```\n\n## Other Reindeer\n\nThe language has been implemented multiple times to explore different execution models and technologies.\n\n| Codename                                                 | Type                     | Language   |\n| -------------------------------------------------------- | ------------------------ | ---------- |\n| [Comet](https://github.com/eddmann/santa-lang-comet)     | Tree-walking interpreter | Rust       |\n| [Blitzen](https://github.com/eddmann/santa-lang-blitzen) | Bytecode VM              | Rust       |\n| [Dasher](https://github.com/eddmann/santa-lang-dasher)   | LLVM native compiler     | Rust       |\n| [Donner](https://github.com/eddmann/santa-lang-donner)   | JVM bytecode compiler    | Kotlin     |\n| [Vixen](https://github.com/eddmann/santa-lang-vixen)     | Embedded bytecode VM     | C          |\n| [Prancer](https://github.com/eddmann/santa-lang-prancer) | Tree-walking interpreter | TypeScript |\n\n## Tooling\n\n| Name                                                         | Description    | Language    |\n| ------------------------------------------------------------ | -------------- | ----------- |\n| [Workbench](https://github.com/eddmann/santa-lang-workbench) | Desktop IDE    | Tauri/React |\n| [Tinsel](https://github.com/eddmann/santa-lang-tinsel)       | Code formatter | Zig         |\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddmann%2Fsanta-lang-dasher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feddmann%2Fsanta-lang-dasher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddmann%2Fsanta-lang-dasher/lists"}