Skip to content

Releases: dev-parkins/FerrisScript

v0.0.4

13 Oct 22:24
20cb2c5

Choose a tag to compare

What's Changed

  • Post-v0.0.3 Release: Critical Fixes and Improvements by @dev-parkins in #45
  • feat(godot): Phase 5 Sub-Phase 3 - Inspector Integration Complete (Bundles 5-8) by @dev-parkins in #52
  • Revert "feat(godot): Phase 5 Sub-Phase 3 - Inspector Integration Complete (Bundles 5-8)" by @dev-parkins in #53
  • Develop by @dev-parkins in #54

Full Changelog: v0.0.3...v0.0.4

v0.0.3

08 Oct 22:31
75b09bc

Choose a tag to compare

What's Changed

Full Changelog: v0.0.2...v0.0.3

v0.0.2

05 Oct 19:32
c57aed7

Choose a tag to compare

What's Changed

  • docs: Phase 1 validation - fix installation and create duplication matrix by @dev-parkins in #1
  • docs: Phase 2 - add comprehensive community documentation by @dev-parkins in #2
  • Phase 4: Security, Architecture, and Enhanced Examples by @dev-parkins in #3
  • feature/code quality improvements by @dev-parkins in #7
  • docs: organize version-specific documentation into v0.0.2 subdirectory by @dev-parkins in #8
  • docs(prompts): add comprehensive workstream execution templates and quick reference guide by @dev-parkins in #9
  • docs(workflows): add comprehensive GitHub Actions workflows README by @dev-parkins in #10
  • test(compiler): add 15 edge case tests for v0.0.2 by @dev-parkins in #11
  • Feature/error messages phase2 by @dev-parkins in #12
  • Feature/error messages phase3 by @dev-parkins in #13
  • ci: add SonarCloud integration for code quality analysis by @Copilot in #14
  • docs(v0.0.2): enhance README and add development scripts (Phase 4A) by @dev-parkins in #15
  • Feature: Comprehensive Rustdoc API Documentation (Phase 4B, v0.0.2) by @dev-parkins in #16
  • docs: Reprioritize v0.1.0 roadmap and create detailed version planning documents by @Copilot in #6
  • feat: Phase 5A - GitHub Project Setup by @dev-parkins in #17
  • feat(vscode): Phase 5B - Syntax Highlighting Foundation by @dev-parkins in #18
  • docs: Phase 5C - Documentation Polish by @dev-parkins in #19
  • release: v0.0.2 Phase 6 - Release Preparation & Closeout by @dev-parkins in #20

New Contributors

Full Changelog: v0.0.1...v0.0.2

v0.0.1

02 Oct 14:55

Choose a tag to compare

FerrisScript 🦀 Release Notes

v0.0.1 - Initial Release (October 2025)

Status: ✅ Complete
Tag: v0.0.1
Codename: "Ferris Awakens"

🎉 Highlights

FerrisScript v0.0.1 is the initial proof-of-concept release of a Rust-inspired scripting language for Godot 4.x. Named after Ferris 🦀 (the Rust mascot), this release demonstrates core language features and functional Godot integration.

✨ Features

Language Support

  • Variables: let (immutable) and let mut (mutable)
  • Types: i32, f32, bool, String, Vector2, Node
  • Type Coercion: Automatic i32 → f32 conversion
  • Operators: Arithmetic (+, -, *, /, %), comparison, logical
  • Compound Assignment: +=, -=
  • Control Flow: if/else, while loops
  • Functions: Function definitions with parameters and return values
  • Comments: Line comments (//)
  • Field Access: Chained access (e.g., self.position.x)

Godot Integration

  • GDExtension: Full Godot 4.x integration via gdext
  • FerrisScriptNode: Custom node type (extends Node2D)
  • Script Loading: Load .ferris files from res:// paths
  • Callbacks: _ready() and _process(delta: f32)
  • Self Binding: Access node properties via self.position
  • Built-ins: print() function for console output
  • Error Reporting: Compilation and runtime errors to Godot console

Developer Experience

  • 96 Automated Tests: Comprehensive test coverage
  • Example Scripts: 11 examples demonstrating all features
  • Documentation: Complete README, architecture docs, testing guides
  • Build System: Cargo workspace with 3 crates
  • Cross-Platform: Windows, Linux, macOS support

📦 Installation

Prerequisites

  • Rust 1.70+ with Cargo
  • Godot 4.2+

Build from Source

# Clone repository
git clone https://github.com/dev-parkins/FerrisScript.git
cd FerrisScript

# Build all crates
cargo build --workspace

# Run tests
cargo test --workspace

# Build for release
cargo build --workspace --release

Godot Integration

  1. Copy ferrisscript.gdextension to your Godot project
  2. Ensure the extension points to the correct DLL/SO/DYLIB path:
    • Windows: target/debug/ferrisscript_godot_bind.dll
    • Linux: target/debug/libferrisscript_godot_bind.so
    • macOS: target/debug/libferrisscript_godot_bind.dylib
  3. Place .ferris scripts in your project (e.g., res://scripts/)
  4. Add FerrisScriptNode to your scene
  5. Set the script_path property to your script

See README.md for detailed instructions.

📝 Example Scripts

Hello World (hello.ferris)

fn _ready() {
    print("Hello, Godot! FerrisScript is working!");
}

Movement (move.ferris)

fn _process(delta: f32) {
    self.position.x += 50.0 * delta;
}

Bouncing (bounce.ferris)

let mut velocity: f32 = 100.0;

fn _process(delta: f32) {
    self.position.y += velocity * delta;
    
    if self.position.y > 400.0 {
        velocity = -100.0;
    } else if self.position.y < 100.0 {
        velocity = 100.0;
    }
}

🧪 Testing

# Run all tests
cargo test --workspace

# Run specific crate tests
cargo test -p ferrisscript_compiler
cargo test -p ferrisscript_runtime

# Run with output
cargo test --workspace -- --show-output

Test Results: 96/96 passing (100% success rate)

  • Compiler: 69 tests
  • Runtime: 26 tests
  • Godot Bind: 1 test

📊 Project Statistics

  • Total Commits: 22 (across 9 development phases)
  • Lines of Code: ~3,500 (Rust)
  • Example Scripts: 11 (.ferris files)
  • Documentation: 5 main docs + 4 archived phase guides
  • Build Time: ~2-3 seconds (debug), ~30 seconds (release)

🔍 Known Limitations

Language Features

  • ❌ No struct definitions (only built-in types)
  • ❌ No enums or pattern matching
  • ❌ No generics
  • ❌ No method calls (only free functions)
  • ❌ No array/collection types
  • ❌ No string interpolation

Godot Integration

  • ❌ Limited Godot type support (only Vector2, Node)
  • ❌ No signals
  • ❌ No custom properties (only position)
  • ❌ No hot reload
  • ❌ No debugging support
  • ❌ No editor integration

Performance

  • ⚠️ Interpreted execution (no bytecode)
  • ⚠️ Value cloning (no reference counting)

See ARCHITECTURE.md for full technical details.

🐛 Known Issues

  • None reported as of release

🛣️ Roadmap (v0.1.0+)

Language Features

  • Struct definitions with methods
  • Enums and match expressions
  • Array and dictionary types
  • String interpolation
  • For loops

Godot Integration

  • More Godot types (Color, Rect2, Transform2D, etc.)
  • Signal support
  • Custom properties
  • More callbacks (input, physics)
  • Hot reload

Tooling

  • Language Server Protocol (LSP)
  • Syntax highlighting plugin
  • Debugger integration
  • REPL

Performance

  • Bytecode compilation
  • Constant folding
  • Reference counting

🙏 Acknowledgments

  • Ferris 🦀: The Rust mascot and our project's namesake
  • Godot Engine: For creating an amazing open-source game engine
  • gdext: For excellent Rust bindings to Godot 4.x
  • Rust Community: For building such a wonderful language and ecosystem

📄 License

FerrisScript is licensed under the MIT License.

🤝 Contributing

Contributions are welcome! Please see README.md for contribution guidelines.

📧 Contact


Release Checklist

  • All 96 tests passing
  • Documentation complete (README, ARCHITECTURE, godot_test/README)
  • Example scripts working (hello.ferris, move.ferris, bounce.ferris)
  • Manual Godot validation passed
  • License added (MIT)
  • Project rebranded to FerrisScript
  • File extensions updated (.rscr.ferris)
  • GitHub repository created (dev-parkins/FerrisScript)
  • CI/CD workflow configured
  • Code pushed to GitHub
  • Release tagged (v0.0.1)
  • Release published on GitHub

Released by: FerrisScript Contributors
Release Date: October 2025
Build: v0.0.1-stable