Releases: fcoury/huskog
Releases · fcoury/huskog
v0.1.1
v0.1.0
[0.1.0] - 2025-06-27
🚀 Features
- Small program works
- Strings and function return values
- Floats and fixed spans
- Handle float on intepreter
- Bool
- If
- Structs and struct members access
- Assignment
- Improved repl
- Command line parser
- Added equality oper, broken returning structs from functions
- GitHub CI
- Initial enum implementation
- Enum variants with associated values
- Match with enums
- Error handling when matching unknown enum variants
- Line comments
- Block comments
- Run integration tests from rust
- Error handling when matching unknown enum variants
- Array declaration
- Array access
- Range declaration
- Range of arrays
- For loop with ranges and arrays
- Break and continue for loops
- Enabled static analysis
- Save history on REPL
- Simplified command line arguments
- += and -= operators
- Better integrated tests
- New % (modulo) /= *= %= operators
- Compound and comparison operators for int and float
- While statement
- Semantic analysis of binary operators
- Loop statement
- Transpile husk code to javascript
- Transpile while
- Impl blocks for structs
- Impl methods on transpiler
- Transpiler integrated test
- Implement type system and AST visitor pattern
- Add semicolon tracking to AST and parser
- Implement visitor pattern for semantic analyzer
- Implement visitor pattern for interpreter
- Implement typed AST for proper enum/method disambiguation
- Implement expression blocks
- Implement recursive function calls
- Complete block type inference with proper scoping
- Organize test files into tests/scripts directory
- Implement expression semantics for semantic analyzer and interpreter
- Complete transpiler JavaScript compatibility for expression semantics
- Enhance non-exhaustive match detection for enums
- Clean up dead code and add planning documents
- Implement return statements support
- Add comprehensive unit tests for semantic analyzer
- Implement if expressions and comprehensive documentation
- Implement unary operators (-, !)
- Implement logical operators (&&, ||) and not-equals (!=)
- Add comprehensive type system unit tests
- Implement method call syntax and self type handling
- Extend compound assignment to support array elements and struct fields
- Add enhanced integration tests for error scenarios
- Implement JavaScript interop foundation with use statements
- Implement module loading and caching for interpreter
- Implement module loading with export collection and semantic analyzer support
- Implement extern keyword for JavaScript API declarations
- Implement async/await syntax with transpiler-only support
- Implement generic type parsing for extern declarations
- Implement closure/lambda syntax with Rust-style pipes
- Implement format! macro for string formatting
- Implement Option and Result as built-in types with full JS interop
- Implement try operator (?) for Result error propagation
- Implement .await? operator for Promise-to-Result conversion
- Implement comprehensive error mapping helpers for JS interop
- Implement generic type parameters for all constructs
- Implement husk.toml configuration parser
- Implement complete project build system with husk.toml configuration
- Implement built-in methods for strings and arrays
- Implement type casting with as operator
- Support extern types in function signatures with qualified names
- Add comprehensive local module system example
- Complete CLI tool example and validate JavaScript interop features
- Implement struct destructuring patterns and struct-like enum variants
- Add struct-like enum variant construction support
- Add support for implicit Result/Option variants (Ok, Err, Some, None)
- Implement local module imports for JavaScript transpiler
- Add tuple type and expression support
- Implement escape sequences in string literals
- Implement tuple pattern matching in match expressions
- Implement object literal syntax for JavaScript interop
- Implement high-priority JavaScript interop features
- Implement local module type inference infrastructure
- Complete method resolution for local types
- Add support for Vec generic type as alias for array
- Implement Self:: method resolution in impl blocks
- Improve Result/Option type inference for match expressions
- Fix enum pattern matching type inference
- Support nested patterns in Result/Option and validate CLI compilation
- Implement shorthand fields, rest patterns, and tuple destructuring
- Add comprehensive integration tests and fix struct pattern matching
- Add 'husk new' command for project scaffolding
- Husk new command
- VSCode and NeoVim syntax highlighters as submodules
- Add method call support for struct instances
- Test case for new static method
- Implement pass-by-reference semantics for self in methods
- Implement string.chars() method with extensible registry pattern
- Implement transpiler method registry for extensible code generation
- Implement extensible method registry for builtin methods
- Implement find/rfind methods and rename camelCase to snake_case
- Implement is_empty() method for strings
- Implement trim_start() and trim_end() string methods
- Implement splitn() string method
- Implement split_once() string method
- Implement char_at() method for strings
- Implement repeat() method for strings
- Implement sort() method for arrays
- Implement map() and filter() methods for arrays with closure support
- Implement find() and position() methods for arrays with closure support
- Implement basic IO operations and comprehensive tests
- Rename print/println to print!/println! macros with format support
- Add IO functions to transpiler output
- Implement directory operations with comprehensive Result handling
- Implement stdin/stdout operations
- Implement async file operations
- Convert eprint/eprintln functions to eprint!/eprintln! macros
- Implement forward function declarations with three-pass compilation
- Add support for else-if chains
- Implement complete Rust-style test framework for interpreter mode
- Implement complete test framework with proper error formatting
- Add ANSI color support for test runner and error messages
- Implement tuple index accessors like Rust
- Add support for multi-field tuple enum variants
- Create modern static website for Husk language
- Add "Choose Your Own Adventure" section to highlight dual execution modes
- Add CNAME file for custom domain husk-lang.org
- Prepare for crates.io publishing
🐛 Bug Fixes
- Block and struct initialization ambiguity
- Identify struct init
- Uses IndexMap to guarantee key order
- Uses IndexMap to guarantee key order
- False positive when break nested inside loop
- Parser loop test
- Integrated tests output
- Semantic analysis of match statements
- Enum with no associated values
- Break and continue statements (tempfix)
- Recursion
- Resolve function parameter scoping issue in if-else blocks
- Improve match statement block parsing
- Method calls no longer require explicit self parameter
- Resolve CLI tool syntax issues and identify parsing blocker
- Resolve critical parser bug preventing struct-like enum patterns in match expressions
- Resolve struct field type resolution for user-defined types
- Implement instance method calls for imported types
- Transpiler enum variant construction uses dot notation
- Rust action on GitHub
- Resolve all cargo clippy warnings
- Unexpected argument type with details on method call
- Handle semicolon in expression statements for return type checking
- If static method is called new use it as a constructor
- Transpilation issue with breaks inside ifs inside fors
- Lexer now properly handles Unicode/UTF-8 characters
- Prioritize array methods over string methods in transpiler
- Transpiler correctly handles Option enum matching and method disambiguation
- Resolve test failures from println! macro changes and file extension support
- Update script tests to use println! macro syntax
- Don't run ingored tests
- Improve forward declaration support and fix struct field ordering
- Support impl methods called from within functions
- Update test expectations for impl tests
- Implement proper enum equality comparison in transpiler
- Prevent panic in span pretty_print with invalid bounds
- Update code to match new Function/AsyncFunction AST structure
- Resolve compilation errors and warnings
- Transpilation of multi-field Option/Result variants
- Add env var for cargo publish token
- Update imports from husk:: to husk_lang:: after package rename
- Add write permissions to release workflow for GitHub token
- Keep binary name as 'husk' while crate is 'husk-lang'
🚜 Refactor
- Implement code review improvements for impl method fix
📚 Documentation
- README
- Added LICENSE
- README reflects current developments
- Update tracking documents for semicolon implementation
- Prioritize visitor pattern implementation before expression-based features
- Update progress tracking for visitor pattern implementation
- Update progress tracking for visitor pattern completion and typed AST
- Add recursive function calls to postponed features
- Update progress tracking for recursive functions and statement/expression unification
- Document compound assignment operators and limitations
- Update README with specific operator details
- Update DESIGN_DECISIONS_AND_TODOS.md with completed testing tasks
- Update test plan with comprehensive return statement testing strategy
- Update return statement analysis findings and add next implementation todos
- Add comprehensive JavaScript interop implementation plan
- Update JavaScript interop progress with generic types and husk.toml
- Document Husk language limitations and improvement roadmap
- Add comprehensive plan for implementing built-in methods
- Add test coverage analysis to JavaScript interop plan
- Update test coverage analysis with comprehensive JavaScript interop tests
- Document JavaScript interop implementation progress and discovered issues
- Update JavaScript interop plan with Vec complet...