Releases: dev-parkins/FerrisScript
Releases · dev-parkins/FerrisScript
v0.0.4
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
What's Changed
- Update Badge Versioning to be based on release version by @dev-parkins in #21
- feat: v0.0.3 infrastructure - branching workflow and CI optimization … by @dev-parkins in #23
- fix: prevent duplicate docs-lint runs on PR merge by @dev-parkins in #24
- Update current status version to v0.0.2 by @dev-parkins in #26
- v0.0.3 - IN PROGRESS by @dev-parkins in #31
Full Changelog: v0.0.2...v0.0.3
v0.0.2
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
- @dev-parkins made their first contribution in #1
Full Changelog: v0.0.1...v0.0.2
v0.0.1
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) andlet mut(mutable) - ✅ Types:
i32,f32,bool,String,Vector2,Node - ✅ Type Coercion: Automatic
i32 → f32conversion - ✅ Operators: Arithmetic (
+,-,*,/,%), comparison, logical - ✅ Compound Assignment:
+=,-= - ✅ Control Flow:
if/else,whileloops - ✅ 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
.ferrisfiles fromres://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 --releaseGodot Integration
- Copy
ferrisscript.gdextensionto your Godot project - 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
- Windows:
- Place
.ferrisscripts in your project (e.g.,res://scripts/) - Add
FerrisScriptNodeto your scene - Set the
script_pathproperty 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-outputTest 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 (
.ferrisfiles) - 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
- Repository: github.com/dev-parkins/FerrisScript
- Issues: GitHub Issues
- Discussions: GitHub Discussions
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