- Add build-typephp-program.sh script for compiling PHP to WASI
- Integrate HTTP fetch capability via file_get_contents() using WASI HTTP
- Move WASI builder script from projects/php-8.5.9/wasm to wasm directory
- Add PhpxLocator class to resolve PHPX directory with proper fallback logic
- Update compiler to pass PHPX directory and compiler executable to builder
- Add WASI SDK layout
- Update WASI target detection to support wasm32-wasip2 and wasm32-unknown-wasip2 only
- Add jco tool integration with version requirement and environment variables
- Implement comprehensive function validation for WASI unsupported functions
- Add WASI_UNSUPPORTED_FUNCTIONS list including exec, socket, pcntl, and posix functions
- Replace wasm-ld with wasm-component-ld for WASI Preview 2 compatibility
- Remove support for deprecated WASI Preview 1 targets with proper error messaging
- Update toolchain detection to use wasip2-specific compiler tools
- Add function prefix validation for pcntl_, posix_, and socket_ function families
- Enhance version detection regex pattern for more reliable tool version parsing
- Update test suite to validate new WASI Preview 2 target and tooling requirements
- Add initialization of standard containers with default values when not boxed
- Implement iteration guards for safe foreach structural mutations in std containers
- Add support for compound operations on bigint, bigfloat, and decimal types
- Introduce lazy offset retrieval for map containers with default values
- Enhance unset operations to use proper type conversions and default values
- Add parallel testing support with worker isolation and temporary directories
- Implement proper container size reporting using runtime values instead of compile-time
- Add comprehensive test coverage for container operations and edge cases
- Modified parseOrderedBinaryOperand and parseOrderedOperand to return string instead of float|int|string
- Changed parseNumericIdentifier to always return string values instead of numeric types
- Updated genCValue method to return string representations of boolean and float values
- Adjusted safeIndex method parameter type to accept int|string for size parameter
- Updated test cases to verify string output from numeric identifier parsing
- Modified generator test expectation to check Iterator instance instead of dumping object details
- Add strict scalar type checking for function parameters and return values
- Preserve zval types until declared boundaries are validated
- Generate type error exceptions with detailed argument information
- Support dynamic parameter validation in variadic and default argument contexts
- Add comprehensive test coverage for strict scalar type boundaries
- Introduce helper methods for scalar type condition generation and validation
- Refactor tryFoldConstantIntArithmetic to use separate evaluation method
- Add native mode rejection for undefined C++ operations like PHP_INT_MIN % -1
- Support modulo operator in constant arithmetic evaluation
- Add proper type mapping for integer/double/boolean in runtime type system
- Handle unary minus overflow detection when native types are disabled
- Implement division by zero handling for both division and modulo operations
- Add comprehensive tests for native mode constant overflow behavior
- Create test cases for scalar alias class type name handling
- Add test files for native mode arithmetic overflow validation
- Add detectTypeOfExpr support for unary and binary logical operators
- Implement proper bool conversion for big integer, float and decimal types
- Update convertBoolExpr to skip conversion when type is already BOOL
- Add convertConditionExpr method to handle big number truth values
- Modify empty() implementation to use numeric truth values for big numbers
- Enhance ternary operator type detection with conditional logic
- Update loop control parsing to use condition expression conversion
- Add proper type assertions for XOR logical operations
- Remove redundant isValidDefineName tests from TraitsTest
- Simplify ConstantExpressionValidationVisitor initialization
- Initialize cValue variable in gen_stub.php for constant assertions
- Add comprehensive tests for big number logical and unary operators
- Add operator error boundary tests with PHP-compatible exception types
- Add reverse and compound operator tests for big numeric types
- Add support for precise BigFloat arithmetic beyond IEEE double precision
- Implement strict validation preventing unsupported operations like power operator on Decimal/BigFloat
- Add proper type conversion functions for BigInt, Decimal and BigFloat to int/float/bool
- Enhance documentation with accurate type specifications and usage guidelines
- Add comprehensive tests for boundary conditions and error handling
- Implement proper exception handling for arithmetic errors and invalid values
- Add support for mixed-type comparisons with explicit conversion requirements
- Fix precision issues in floating point representations and conversions
- Update type promotion rules to prevent unsafe implicit conversions between big types
- Changed defaultValue check to default property comparison in CallArgumentGenerator
- Added genDefaultArgumentExpr call for proper default value resolution
- Updated findNativeClassConst signature to accept accessing class parameter
- Modified checkAccessibleByClassName to use accessing class context
- Updated getClassConstValue calls to pass current class context
- Added comprehensive test case for private class constant parameter defaults
- Replace escapeFunction with escapeNativeFunctionKey in symbol operations
- Add NAMESPACE_END_MARKER constant for namespace separation
- Implement separate method name generation for functions vs class methods
- Create getNativeFunctionName and getNativeClassMethodName helper methods
- Update function call resolution to handle namespaced functions properly
- Modify native method name generation to use new namespace format
- Update test expectations for new function naming pattern
- Fix trait method name generation to use proper class method naming
- Add isContinueExpr method to AstNodeType for continue statement detection
- Introduce inContinuableLoop context flag to track for/foreach/while/do-while loops
- Update CompilerBase to maintain continuable loop state during compilation
- Modify LoopControlTrait to validate continue statements only within continuable loops
- Enhance SwitchTrait to allow continue as valid case ending expression
- Add comprehensive tests for continue in switch nested in various loop types
- Create test cases for invalid continue usage outside loops
- Update version number from 1094 to 1095
- Rename stubLibrary to stubImportLibrary and add externalImportStubFiles property
- Create LibraryImportStubGenerator to generate combined stub files with @import-library annotation
- Update documentation to reflect new import library mechanism without @typephp-library annotation
- Modify build pipeline to exclude generated stub from input files and generate library import stubs
- Add TYPEPHP_LIBRARYNAME_IMPORT macros for importing functions from external libraries
- Update function definition entities to track importLibrary instead of library ownership
- Refactor preprocessing to detect @import-library annotation and manage external stub files
- Implement proper handling of imported functions with different macro prefixes in declarations
- Add stubLibrary property to CompilerBase to track owning library
- Implement @typephp-library annotation parsing in stub files
- Generate library-specific API macros for imported functions
- Add automatic linking of referenced libraries during compilation
- Update function declaration prefixes based on import/export status
- Create test case for cross-library stub function imports
- Document new @typephp-library annotation usage in documentation
- Modify DefaultArgumentGenerator to skip imported functions
- Add library tracking to FunctionDef entity structure
- Implemented expected() and unexpected() compile-time functions for branch prediction hints
- Added C++ macro generation for EXPECTED(...) and UNEXPECTED(...) in compiled output
- Updated documentation to include new branch prediction functions
- Added comprehensive tests for branch prediction macro generation
- Modified compiler base to handle expected/unexpected function type detection
- Added parser support for branch prediction function calls with proper argument validation
- Included polyfill implementations for expected and unexpected functions
- Updated version number from 1086 to 1087
perf(compiler): optimize multi-return tuple assignment with move semantics
- Replace temporary Var construction with direct tuple element assignment
- Implement std::move for final local variable uses to avoid unnecessary copies
- Track remaining variable uses to determine when to apply move semantics
- Preserve PHP value-assignment semantics for references and indirect zvals
- Add comprehensive test coverage for tuple multi-return scenarios
- Include tests for repeated values, references, globals, and static variables
```
- Replace ExtensionProvider::Keyword constant with direct '*' string usage
- Add LibPhpxInstaller class to automatically build libphpx.so from source
- Implement PHPX build dependency installation via system package managers
- Update installer documentation to include libphpx.so auto-build instructions
- Modify PHP directory detection to prioritize running PHP installation
- Adjust CompilerBase to use Composer InstalledVersions for PHPX path resolution
- Refactor LinuxPackageManager to separate build tool packages from configure options
- Add comprehensive tests for LibPhpxInstaller shared library detection
- Update platform warnings to guide users toward interactive auto-build
- Revise ExtensionProvider parsing to handle
- Replace appendCapturedStmtLines helper with direct formatCapturedStmtLines calls
- Change createPropertyAccessResolver from private to protected for extensibility
- Change resolveNativeInstanceProperty from private to protected for extensibility
- Change resolveNativeStaticProperty from private to protected for extensibility
- Change applyNativePropertyAccessResult from private to protected for extensibility
- Change containsNullsafeChain from private to protected for extensibility
- Replace parseTypeDecl output parameter with resolveTypeDecl returning array
- Change sortFiles to getSortedFiles returning sorted array instead of modifying input
- Update name resolution to handle imported namespace prefixes correctly
- Enhance property hook backing access detection with additional conditions
- Add redis extension availability check to test skip conditions
- Document compiler self-hosting constraints regarding reference parameters across traits
- 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 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
- Extract getNamespacedClassName method to NameResolutionTrait
- Move upgradeToFullyQualifiedName method to NameResolutionTrait
- Transfer getNamespacedFuncName method to NameResolutionTrait
- Move parseTypeDecl method to NameResolutionTrait
- Add NameResolutionTrait usage in Compiler
- Extract const fetch logic from CompilerBase to ConstantExpressionTrait
- Remove unused MagicConst import from CompilerBase
- Add new ConstantExpressionTrait with complete constant handling implementation
- Maintain all original constant parsing functionality in new trait structure
- Update CompilerBase to use the new ConstantExpressionTrait
- Remove duplicate constant-related methods from CompilerBase
- Move constant definition and namespace use handling to DeclarationSymbolTrait
- Extract native type compatibility logic into NativeTypeCompatibilityTrait
- Remove duplicated method implementations from CompilerBase
- Add trait usage in CompilerBase for better code organization
- Separate concerns between compiler base and specialized functionality
- Introduce NativeBuildConfigurationTrait to handle include, library, and linker paths
- Add platform-specific include path resolution for Windows and Linux/macOS
- Implement library path configuration with PHP SDK support
- Add cross-platform library linking for phpx, PHP core, and system libraries
- Include platform-specific target file naming and extension handling
- Support both extension and binary build modes on different platforms
- Move array parsing logic from CompilerBase to new ArrayExpressionTrait
- Extract globals array dimension fetch handling to the trait
- Separate writable identifier parsing into the trait
- Move array dimension fetch read/update logic to the trait
- Extract mixed array parsing functionality to the trait
- Add proper trait usage in CompilerBase class