Skip to content

Releases: eddmann/santa-lang-prancer

1.0.2

09 Jan 16:53

Choose a tag to compare

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

07 Jan 12:04

Choose a tag to compare

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

07 Jan 00:56

Choose a tag to compare

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

20 Dec 13:43

Choose a tag to compare

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

19 Dec 12:13

Choose a tag to compare

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 md5 and signum functions and fix int() rounding behavior
  • Align with spec: remove and/or builtins, fix type names, fix dictionary includes?

Full Changelog: 0.1.5...0.1.6

0.1.5

11 Dec 14:21

Choose a tag to compare

Minor Enhancement: Version Flag

Adds -v/--version flag to the CLI with dynamic release versioning.

Usage

santa --version
santa -v

0.1.4

09 Dec 08:14

Choose a tag to compare

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?

  • match is more declarative and expresses intent clearly
  • Pattern matching with destructuring is built-in
  • Exhaustiveness is clearer
  • Aligns with functional programming idioms

0.1.3

08 Dec 17:04

Choose a tag to compare

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

08 Dec 15:59

Choose a tag to compare

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

05 Dec 13:36

Choose a tag to compare

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.