Releases: eddmann/santa-lang-prancer
1.0.2
What's Changed
Fix for JSONL streaming output to emit initial state before execution begins.
Bug Fixes
- Emit JSONL initial state before execution for streaming UI compatibility
Full Changelog: 1.0.1...1.0.2
1.0.1
What's Changed
Added JSON output support for the --version flag.
Features
- Add JSON output support for --version flag
Other Changes
- Add Vixen to related implementations table
Full Changelog: 1.0.0...1.0.1
1.0.0
What's Changed
This release marks the 1.0.0 milestone for Prancer, featuring CLI improvements with new output formats, enhanced environment inspection, and improved documentation.
Features
- Add JSON and JSONL output formats for machine-readable CLI output
- Improve env() to show all scoped variables and update CLI branding
- Add version-resolver for PR-based version bumps
Other Changes
- Rename repository references to santa-lang-prancer
- Remove evaluate builtin
- Align exit codes and help text with specification
- Use type aliases instead of interfaces for object types
- Add comprehensive architecture documentation and update README
- Add AGENTS.md for AI coding agent guidance
- Standardize GitHub workflow configuration
- Add MIT license
Full Changelog: 0.1.7...1.0.0
0.1.7
What's Changed
Adds string and sequence operations, fixes arity-aware map/filter, all? for strings, and infinite sequence handling.
Features
- Add reverse(), multiply(), and cycle() methods to strings
- Add cycle() method to Range and Sequence classes
Bug Fixes
- Make map/filter arity-aware and fix all? for strings
- Fix Sequence.fold() to handle infinite sequences with manual iteration
- Fix zip() spread bug by converting Immutable.Seq to array before spreading
Other Changes
- Add test coverage for arity-aware map/filter and cycle operations
Full Changelog: 0.1.6...0.1.7
0.1.6
What's Changed
This release adds grapheme cluster indexing for strings and aligns the implementation with the language specification.
Features
- Implement grapheme cluster indexing for strings
Bug Fixes
- Add missing
md5andsignumfunctions and fixint()rounding behavior - Align with spec: remove
and/orbuiltins, fix type names, fix dictionaryincludes?
Full Changelog: 0.1.5...0.1.6
0.1.5
Minor Enhancement: Version Flag
Adds -v/--version flag to the CLI with dynamic release versioning.
Usage
santa --version
santa -v0.1.4
Breaking Change: Remove else if Syntax
This release removes support for the else if syntax. Use match expressions for multi-way conditionals instead.
Migration
// Before (no longer supported)
if score >= 90 { "A" }
else if score >= 80 { "B" }
else { "C" }
// After (use match)
match score {
90.. => "A",
80..90 => "B",
_ => "C"
}
Why?
matchis more declarative and expresses intent clearly- Pattern matching with destructuring is built-in
- Exhaustiveness is clearer
- Aligns with functional programming idioms
0.1.3
Introducing Prancer
This release officially introduces Prancer as the codename for the TypeScript tree-walking interpreter implementation of santa-lang.
Standardized Release Artifacts
All release artifacts have been renamed to follow a consistent naming convention:
| Old Name | New Name |
|---|---|
santa-lang-cli-{version}-linux-amd64 |
santa-lang-prancer-cli-{version}-linux-amd64 |
santa-lang-cli-{version}-linux-arm64 |
santa-lang-prancer-cli-{version}-linux-arm64 |
santa-lang-cli-{version}-macos-amd64 |
santa-lang-prancer-cli-{version}-macos-amd64 |
santa-lang-cli-{version}-macos-arm64 |
santa-lang-prancer-cli-{version}-macos-arm64 |
santa-lang-lambda-{version}.zip |
santa-lang-prancer-lambda-{version}.zip |
Docker Images
ghcr.io/eddmann/santa-lang-prancer:cli-{version}ghcr.io/eddmann/santa-lang-prancer:cli-latest
About Prancer
Prancer is the original santa-lang implementation, featuring:
- Tree-walking interpreter in TypeScript
- CLI for running solutions
- Web runtime (JavaScript)
- AWS Lambda runtime
Try it online: eddmann.com/santa-lang-ts
0.1.2
What's Changed
New env() Builtin Function
Added env() for REPL introspection - displays all variables defined in the current session.
let x = 42;
let add = |a, b| a + b;
env();
// Environment:
// x = 42
// add = Function
New bit_not Bitwise Function
Added bitwise NOT (complement) operation.
bit_not(0); // -1
bit_not(5); // -6
String Comparison Operators
Strings now support <= and >= comparison operators for lexicographic ordering.
"a" <= "b"; // true
"b" >= "a"; // true
Fold Over Infinite Ranges
Infinite ranges can now be folded using break to terminate.
fold(0, |acc, v| if v > 5 { break acc } else { acc + v }, 1..); // 15
Bug Fixes
- Fixed short-circuit evaluation for
&&and||operators - Fixed match expression case scoping to prevent variable leakage
- Fixed parser consuming trailing semicolons after match expressions
0.1.1
What's Changed
Enhanced List Pattern Matching
Rest patterns (..name) can now appear at any position in list patterns, not just the end.
New patterns supported:
- Prefix patterns:
[..init, last]- capture all but the last element - Middle patterns:
[first, ..middle, last]- capture elements between first and last
Examples:
let [..init, last] = [1, 2, 3, 4];
// init = [1, 2, 3], last = 4
let [first, ..middle, last] = [1, 2, 3, 4, 5];
// first = 1, middle = [2, 3, 4], last = 5
This enhancement enables more expressive pattern matching, particularly useful for AoC puzzles requiring list manipulation from both ends.