Skip to content

Releases: fcoury/huskog

v0.1.1

27 Jun 19:27
ad261d1

Choose a tag to compare

<!-- generated by git-cliff -->

v0.1.0

27 Jun 19:23
0208b2d

Choose a tag to compare

[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...
Read more