Major additions and improvements across the Bob language ecosystem:
Core Language Features:
- Add comprehensive dictionary support with full CRUD operations
- Implement built-in functions: keys(), values(), has() for dictionaries
- Add string multiplication operator (string * number)
- Enhance error reporting with detailed context and call stacks
- Add ternary operator support (condition ? true_expr : false_expr)
- Implement do-while loops with break/continue support
- Add array increment/decrement operators (++, --)
- Add cross-type comparison operators with proper type coercion
- Implement toInt() function for float-to-integer conversion
- Add float array index auto-truncation (like JavaScript/Lua)
Code Quality & Linter Fixes:
- Remove all "using namespace std;" statements (best practice)
- Add proper std:: prefixes throughout codebase
- Fix const correctness in helper functions
- Resolve class/struct declaration mismatches
- Fix sign comparison warnings in array indexing
- Remove unused lambda captures in built-in functions
- Fix brace initialization warnings in parser
Documentation & Tooling:
- Significantly expand BOB_LANGUAGE_REFERENCE.md with new features
- Update VS Code extension with enhanced syntax highlighting
- Add comprehensive code snippets for new language features
- Update version information and package metadata
Test Suite:
- Add extensive dictionary functionality tests
- Add tests for new operators and built-in functions
- Add comprehensive copy behavior tests (by value vs by reference)
- Add performance and edge case testing
Architecture Improvements:
- Enhance Value system with proper move semantics
- Improve memory management with shared_ptr for complex types
- Add trampoline-based tail call optimization
- Implement proper error context propagation
This represents a major milestone in Bob language development with production-ready dictionary support, comprehensive testing, and significantly improved code quality.
- Add none value handling to Value::operator+ for string concatenation
- Replace direct string concatenations with Value::operator+ calls in Interpreter
- Add missing string+none and none+string type combinations
- Standardize token literal generation in Lexer
- Add ExecutionContext support across visitor pattern
- Enhance error reporting integration
- Add new standard library functions
- Replace Object* with Value tagged union for better performance
- Fix bug where "true"/"false" strings were treated as booleans
- Add isBoolean field to LiteralExpr to distinguish string vs boolean literals
- Implement fast function calls with g_returnContext instead of exceptions
- Add functions vector to prevent dangling pointers
- Remove try-catch blocks from execute() for 50x performance improvement
- Clean up test files, keep only main test suite and fib benchmark
- All 38 tests passing, fib(30) still ~848ms