Changelog¶
firescript follows Semantic Versioning. This makes it easier to understand the impact of changes in each release.
0.2.0 (Current Version - May 2025)¶
New Features¶
-
Improved Syntax Handling and Error Reporting:
- Refactored the lexer and parser for enhanced syntax handling
- The lexer now correctly handles greater than (
>
) and less than (<
) operators - The parser includes stricter checks for Abstract Syntax Tree (AST) node children to prevent unexpected errors from
None
values - Introduced new logic for parsing
if
andwhile
statements to properly support nested structures - Improved error messages with more context for syntax errors
-
Enhanced Memory Management:
- Added a new reference counter for automated memory management
- Currently runs in the runtime, with plans to move to the compiler in future versions
- Helps prevent memory leaks and dangling pointers in the generated code
- Improved garbage collection for dynamic arrays
-
Arbitrary Precision Integers:
- The
int
type is now represented usingmpz_t
in the generated code - Enables arbitrary precision integers for handling large numbers
- Provides improved accuracy and reliability for complex calculations
- No practical limit to integer size (constrained only by available memory)
- The
-
Organized Build Outputs:
- Build outputs and temporary files are now stored in a dedicated
build
directory - Temporary files are specifically located under
build/temp
- Cleaner project structure with separate directories for source, documentation, and build artifacts
- Build outputs and temporary files are now stored in a dedicated
-
Expanded Array Operations:
- Added new array methods:
clear()
and improvedpop()
functionality - Enhanced array bounds checking for safer indexing operations
- Optimized memory allocation for arrays to improve performance
- Added new array methods:
-
More Operators:
- Added support for compound assignment operators:
+=
,-=
,*=
,/=
, and%=
- Added support for increment (
++
) and decrement (--
) operators
- Added support for compound assignment operators:
Bug Fixes¶
- Fixed parser issue causing incorrect handling of complex nested expressions
- Addressed memory leak in string operations when concatenating multiple strings
- Corrected type checking for nullable values in conditional statements
- Fixed compilation errors in C code generation for complex boolean expressions
- Resolved issue with array element access in while loop conditions
Code Quality Improvements¶
- Comprehensive refactoring of the C code generator for improved maintainability
- Added more detailed debug logging throughout the compilation process
- Improved documentation with examples for all supported language features
- Enhanced test coverage with new test cases for core functionality
0.1.1 (January 2025)¶
There is not a version 0.1.0 because of a versioning mishap during initial release.
New Features¶
-
Enhanced Variable Scoping:
- Strict enforcement of variable scoping rules
- Prevention of variable shadowing to avoid common programming errors
- Clear error messages for scope-related issues
-
Improved Type System:
- Comprehensive type checking for variable assignments
- Type compatibility verification for expressions
- Function and method call parameter validation
- Support for nullable types with explicit declaration
-
Control Flow Structures:
- Basic implementation of
if
,else if
, andelse
statements - Support for
while
loops with condition checking break
andcontinue
statements in loops
- Basic implementation of
-
Basic Standard Library:
- Implementation of essential built-in functions:
print()
for outputinput()
for user input- Type conversion functions (
toInt()
,toFloat()
,toString()
, etc.) typeof()
function for runtime type introspection
Bug Fixes¶
- Resolved parsing issues for nested expressions
- Fixed incorrect operator precedence in complex expressions
- Addressed memory management issues in the runtime library
0.0.1 (November 2024)¶
Initial Release¶
- First Public Alpha:
- Basic language structure and syntax
- Simple variable declarations with primitive types
- Arithmetic and logical operations
-
First iteration of the compilation pipeline
-
Array Support:
- Initial implementation of arrays with literal initialization
- Basic array operations: indexing, assignment
-
Simple array methods:
append()
andinsert()
-
Compiler Infrastructure:
- Lexer for tokenizing source code
- Parser for building the abstract syntax tree
- Simple C code generator for compilation
- Runtime library with basic functions
Roadmap for Future Releases¶
Planned for Version 0.3.0¶
- Implementation of user-defined functions
- Enhanced array operations including slicing and negative indices
- For loop implementations (C-style, for-in, range loops)
- Better error recovery during compilation
- Performance optimizations for generated code
Planned for Version 0.4.0¶
- Basic class system with instance fields and methods
- Improved standard library with more built-in functions
- Support for importing code from other files
- Optional and named function parameters
Long-term Goals¶
- Full object-oriented programming support with inheritance
- Module system for code organization
- Tuple types and operations
- Generic type parameters
- First-class functions and closures
- Additional language tooling (formatter, linter, debugger)