- Add canConsumeWrapperArgument method to determine when arguments can be consumed
- Modify argument passing logic to use php::takeValue for consumable arguments
- Support variadic arguments and specific types (mixed, string, array, object) for consumption
- Preserve reference arguments without consumption to maintain memory safety
- Add comprehensive test coverage for argument move semantics
- Create test files to verify correct argument handling in wrapper generation
- Replace direct php::concat calls with flattened concatenation using parseFlattenedConcat
- Add prepareConcatOperand method to handle proper string conversion for different types
- Implement unified foreach iterator using php::ForeachIterator for both arrays and objects
- Remove separate parseForeachObject method and consolidate iteration logic
- Add support for precompiled headers in GCC-like backends
- Implement PrecompiledHeaderManager for PCH preparation and caching
- Optimize build queue with SourceCompileQueue using largest-first sorting strategy
- Improve progress percentage calculation during compilation
- Add new test case for unified foreach iteration over different iterable types
- Replace php::throwException with php::throwExceptionEx for better error handling
- Add return php::null statements after exception throws in closure generators
- Update argument count error messages to use format strings with proper escaping
- Modify type error messages to use format strings instead of concatenation
- Add completed callback parameter to dispatchParallel method in NativeBuilder
- Track and report completed task count during parallel compilation
- Add progress bar functionality using AnsiKit components
- Include failure reason reporting when compilation fails
- Add test case for parallel dispatcher completion tracking
- Add test for foreach indentation restoration in object iteration
- Increment version from 0.3.0 to 0.4.0
- Add ExtensionProvider attribute class to define extension targets
- Convert function-based extensions to class-based ExtensionProvider pattern
- Support various target types including native_types, complex_types, and class names
- Parse ExtensionProvider attributes during preprocessing phase
- Generate proper extension method calls using provider classes
- Update test cases to use ExtensionProvider syntax instead of function prefixes
- Remove old extension function name patterns and related logic
- Add validation for extension provider method signatures and parameters
- Support both snake_case and camel
- Removed unused TypePhp\Exception\PlaceHolder import
- Removed unused TypePhp\Resolver\InstancePropertyFetchTarget import
- Removed unused TypePhp\Resolver\PropertyAssignTypeInfo, PropertyWriteTarget, StaticPropertyFetchResolution, and StaticPropertyFetchTarget imports
- Removed unused PhpParser\Node\Stmt\Foreach_ import
- Removed unused TypePhp\Platform\Linux import
- Removed unused getTargetFileName method from NativeBuildConfigurationTrait
- Moved globalHeaders array from CompilerBase to Translator class
- Moved classCeList and classCeInfo arrays from CompilerBase to Translator class
- Updated ABI version retrieval to use constant() function instead of direct constants
- Added proper PHPDoc comments for functions and classes arrays in SymbolRepository
- Replaced all occurrences of self::TYPE_* with Type::* in AnonClassGenerator.php
- Updated ArrayExpressionTrait.php to use Type::ARRAY and Type::VAR instead of self::TYPE_*
- Modified AssignOpTrait.php to reference Type constants instead of self::TYPE_*
- Changed BinaryOpTrait.php to use Type::BIGINT, Type::DECIMAL, Type::BIGFLOAT constants
- Updated CallArgumentGenerator.php to use Type::ARRAY and Type::REF constants
- Added Type import statements to all modified files
- Maintained same functionality while improving code consistency with Type namespace
- Replace direct array access with SymbolRepository for functions, classes, interfaces
- Introduce DiagnosticReporter interface with CLI and throwing implementations
- Add NativeBuilder for compile/link command management and parallel processing
- Create CommandOptions base class for compile and link options handling
- Implement project YAML loader with PHP version and OS family conditions
- Remove old array properties and update all related method calls
- Update compiler diagnostic methods to use new reporter pattern
- Refactor native compilation to use builder pattern with proper options
- Modify test utilities to work with new symbol repository structure
- Move getClassConstValue, resolveInheritedClassConst, evaluateClassConstValue methods to ClassConstantValueTrait
- Extract getDefinedConstants and getConstValue methods to the new trait
- Add ClassConstantValueTrait usage to Translator class
- Remove duplicated method implementations from Translator class
- Maintain same functionality for class constant evaluation and inheritance resolution
- Improve code organization by separating constant-related logic into reusable trait
- Moved common compile command options logic to NativeCommandOptionsTrait
- Extracted Windows resource file compilation functionality to ResourceCompilationTrait
- Removed duplicate resource compilation methods from Translator class
- Added trait usage in Translator class for better code organization
- Maintained all existing functionality while improving code structure
- Centralized compile options generation across different compilation scenarios
- Move file handling logic from Translator to SourcePipelineTrait
- Add new trait file with methods for adding, getting, preparing and converting files
- Extract compiler toolchain validation logic into separate method
- Implement file filtering and ignore path checking functionality
- Update Translator class to use SourcePipelineTrait instead of inline methods
- Move Reflection.php from src/ to src/Resolver/
- Move Symbol.php from src/ to src/Generator/
- Move FileScanner.php from src/ to src/Build/
- Move ArgInfo.php from src/ to src/Entity/
- Move Visitor.php from src/ to src/Transform/
- Update all import statements across compiler base and related files
- Add new dependencies in CompilerBase.php and Preprocessor.php
- Update example files to use new namespace paths
- Correct documentation links in universal methods guide
- Add necessary use statements in metadata constants and generator files
- Implement parseNativeCallArgs method for native function argument parsing
- Add buildNativeVariadicArg method for variadic argument handling
- Create parseNamedCallArgs method for named argument processing
- Add isReferenceArgument method for checking reference parameters
- Implement AOT call argument info retrieval methods
- Add method resolution for AOT class and interface methods
- Include argument info by index lookup functionality
- Add reference named argument checking capability
- Implement comprehensive parseCallArgs method for general argument parsing
- Add scoped callback argument parsing for static/self/parent scopes
- Create utility methods for ensuring call args, array args and named args
- Add positional call argument handling with
- Add sourceFile and startLine properties to FunctionDef entity
- Track PHP source file and line number during preprocessing
- Generate proper file location context for AOT runtime exceptions
- Implement entry script prefixing with correct line numbers
- Update eval calls to include source file information
- Create test case for main file location reporting in exceptions
- Implement property hook lowering to getter/setter method calls
- Add support for private(set) and protected(set) asymmetric visibility
- Generate appropriate error handling for read-only hooked properties
- Support compound assignments and increment/decrement operations on hooked properties
- Add proper visibility checks for asymmetric property setters
- Update documentation to reflect new property hook capabilities
- Add comprehensive test coverage for property hook functionality
- Introduce --php-version CLI option to specify accepted PHP syntax version
- Add support for PHP 8.5 pipe operator with left-to-right evaluation
- Implement PHP version validation in project configuration parsing
- Update parser factory usage to respect configured PHP version
- Add tests for pipe operator functionality and PHP version controls
- Modify stub generation to use configured PHP version
- Update documentation with new --php-version option details
- Remove unnecessary assignment expression check in echo statement parsing
- Update null assignment error messages to include actual type strings
- Add support for untyped properties retaining PHP mixed semantics with null values
- Modify object property unset logic to preserve PHP behavior for typed properties
- Implement proper parent::method() call handling with dynamic method names
- Add comprehensive property inheritance compatibility checks between parent and child classes
- Update documentation to reflect property visibility and inheritance requirements
- Remove test case for null assignment rejection since semantics changed
- Add detailed comments explaining property typing and inheritance behavior
- Implement static type validation for union, intersection, and nullable types
- Add composite type assignment checking for parameters, return values, and property assignments
- Introduce dynamic value wrapper tests to verify type checking behavior
- Enhance error messaging for composite type mismatches
- Update documentation to reflect improved static type analysis capabilities
- Add proper restoration of compiler state after generator conversion errors
- Improve parallel compilation process management and error handling
- Add metadata caching for object files with PHP ABI compatibility checks
- Add cleanupResponseFile call after successful builds in BackendTest
- Implement proper exception handling for link failures with TestError
- Add test case for response file cleanup when linking fails
- Replace php_aot_static_int_ref with typephp_static_int_ref in assertions
- Refactor Translator to always clean up response files in finally block
- Improve error reporting for both link failures and missing target files
- Update FunctionTest return type declaration and method implementation
- Added logic to detect and properly handle reference return types using returnsByRef property
- Updated return type determination to include both regular and reference types
- Modified condition check to use new cppReturnType variable instead of getReturnType()
- Ensured proper return statement generation for reference type methods
- Implement FiberGenerator trait with yield/yield from parsing
- Add generator detection and preparation logic in function compilation
- Generate TypePHP\FiberGenerator objects that implement Iterator
- Support yield expressions and statements with key-value pairs
- Enable yield from delegation with array and traversable forwarding
- Register fiber generator class entry during module initialization
- Update runtime initialization to use typephp_runtime_init
- Replace php_aot_ prefixed helpers with typephp_ prefixed versions
- Add comprehensive generator test suite covering various scenarios
- Document generator limitations and compatibility restrictions
- Mark dynamic PHP foreach over native generators as XFAIL case
- Add returnsByRef property to FunctionDef entity
- Remove restriction on reference return types in Preprocessor
- Implement proper reference return handling in CompilerBase
- Add validation for reference assignment from function calls
- Update Translator to generate correct C++ code for reference returns
- Add compatibility checks for method override with reference returns
- Include test case for function returning by reference preserving aliases
- Add support for 'lib' build mode that creates shared libraries with correct extensions
- Implement automatic 'lib' prefix for library targets on Unix systems unless explicit output is set
- Add build mode aliases normalization ('library', 'extension', 'cli' map to standard modes)
- Update target filename generation to handle explicit output paths with custom extensions
- Add platform-specific target extensions: .so for Linux, .dylib for macOS, .dll for Windows
- Include smoke test for validating library compilation and linking
- Update documentation with library build instructions and usage examples
- Add linker flag -Wl,-z,defs for Linux library builds to ensure self-contained libraries
- Modify command line help to document new build modes and clarify existing options
- Add C API header generation for exported
- Add BUILD_MODE_LIB constant to CompilerBase class
- Implement isBuildModeLib and isBuildModeEmbed methods for library detection
- Update Clang backend to handle lib build mode with -fPIC flag and DLL linking
- Modify GccLikeBackend to support lib build mode with shared library flags
- Update MSVC backend to handle lib build mode with DLL compilation
- Extend PlatformBase to return correct extensions for lib builds
- Add proper handling for misc directory files during preprocessing
- Create new example project demonstrating library build functionality
- Update Translator to include main.cc for embed modes and add PHPX_NO_MAIN define for libraries
- Expand mode mapping to accept multiple library-related build mode aliases
- Increment version number from 1082 to 1084
- Update documentation to reflect new lib build option alongside bin and ext modes
- Updated CompilerBase.php to use convertIntExpr for bitwise not operations on variables
- Modified gen_stub.php to always use var_export for default value conversion
- Enhanced object_property test to follow strict type checking with TypeError handling
- Added native property test for bitwise not class constant assignments
- Updated Translator.php to return raw values instead of CValue wrappers for constants
- Improved documentation consistency across project overview files
- Added strict types declaration to property assignment test cases
- Change src/Php/Translator.php to src/Translator.php in documentation
- Update class hierarchy diagram to remove Php subdirectory references
- Modify composer.json autoloader to map TypePhp namespace to src directory only
- Adjust all src/Php/* paths to src/* in configuration and test files
- Update project.yml sources to include ./src instead of individual Php subdirectories
- Remove Php subdirectory from file paths in platform and analysis tests
- Clean up directory references in test results documentation
- Updated namespace declarations from PhpAot\Php to TypePhp in all source files
- Modified import statements to use TypePhp instead of PhpAot\Php throughout the codebase
- Adjusted composer.json autoload configuration to map TypePhp namespace to src directories
- Updated documentation references from PhpAot\Php to TypePhp in comments and markdown files
- Changed class references in test files to use new TypePhp namespace
- Updated bootstrap and utility scripts to reference TypePhp namespace
- Removed abstract base class inheritance in CompilerBase class
- Added new properties and methods for indentation and mode handling in CompilerBase
- Updated exception handling to use new TypePhp\Exception namespace
- Rename project references from Swoole-Compiler to TypePHP in documentation
- Update command line usage from php bin/compiler.php to ./tpc
- Change application name constant from Swoole-Compiler (AOT) to TypePHP
- Update file descriptions and metadata in project.yml
- Modify Windows packaging script title to TypePHP
- Replace all copyright headers to reference TypePHP instead of Swoole-Compiler
- Implemented isCommandExecutable method to check if compiler commands are executable
- Added getCommandProgram method to extract program name from quoted/argumented commands
- Created isPathLikeCommand helper for path-based command detection
- Added compiler toolchain validation in Translator prepare phase
- Implemented proper PATH environment lookup with extension handling on Windows
- Added comprehensive unit tests for command parsing and executability checks
- Enhanced error reporting when compiler/linker executables are not found
- Moved file collection before compiler validation in translation process
- Extract internal constants loading into dedicated loadInternalConstants method
- Filter out user-defined constants from internal constants array
- Maintain backward compatibility with non-grouped constants format
- Add proper handling of constant groups to prevent runtime state inclusion
- Improve static expansion behavior for compile-time vs runtime constants