- 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
- Modified genCValue method to always return string type instead of mixed
- Changed float values to be cast to string in genCValue method
- Updated boolean values to return '1'/'0' strings instead of integers
- Fixed getInternalScalarConstantValue return type to string only
- Added explicit string casting for literal string keys in Translator
- Added comprehensive tests for C value generation ensuring source code strings
- Added comments explaining integer-string array key handling in literalStrings
- Add fake_scope_guard keyword to reserved words list
- Implement trait property scope handling in PropertyAccessTrait
- Generate proper scope guards for trait methods in Translator
- Add WASM implementation documentation outlining technical approach
- Include trait-fake-scope-guard-param test case
- Link WASM plan in main documentation index
- Add constantNumericValue method to evaluate numeric literals including binary operations
- Implement support for nested constant arithmetic operations in division by zero checks
- Handle constant shift operations with proper overflow detection
- Support native C++17 integer division semantics for constant expressions
- Add comprehensive test coverage for nested constant arithmetic edge cases
- Improve error reporting for undefined behavior in native mode operations
- 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 BIG_NUMBER_INPLACE_OPTIMIZATION_PLAN.md with detailed implementation
strategy for BigInt, BigFloat and Decimal in-place operations
- Update README.md to include link to new optimization documentation
- Add test file bool-dynamic-call-logical.php for boolean call testing
- Fix branch prediction test assertions to include php::toBool wrapper
- Add test case for dynamic boolean call in logical expressions
- Correct float precision output in std_builtin.phpt test
- Refactor TypeConversionTrait to consistently apply boolean conversion
- Remove redundant type checks in condition expression conversion logic
- Changed integer to decimal conversion from php::toDecimal(php::toString(expr))
to direct php::toDecimal(expr)
- Added test case to verify decimal integer operand does not convert through string
- Created new test file decimal-int-operand.php to test decimal multiplication
with integer operands
- Added phpt test for decimal multiplication accepting Int and dynamically typed
Int operands
- Fixed type conversion trait to handle INT type directly without string conversion
- 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
- Implement parseForeachIterableRef method to handle reference iteration
- Add support for PropertyFetch, StaticPropertyFetch and ArrayDimFetch in foreach by ref
- Generate proper itemRef calls for array dimension fetches in reference context
- Update iterable type handling to distinguish between VAR and REF types
- Add test case for foreach by reference with live object property mutation
- 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
- Added nativeBoolLiteral method to convert PHP boolean literals to C++ bool
- Updated parseCompareExpr to use native boolean literals for bool type
- Ensured strict comparisons between booleans use true/false instead of php::true_/php::false_
- Added test case for boolean literal identical comparisons
- Created compiler test to verify native boolean operand usage
- Added test file with boolean literal comparison examples
- 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
- Remove static constant lookup logic from parseConstFetch method
- Add support for unqualified constants in namespaces with runtime fallback mechanism
- Implement UnqualifiedInNamespace constant lookup strategy for proper PHP behavior
- Update test cases to verify runtime constant resolution works correctly
- Add comprehensive test coverage for namespace constant fallback scenarios
- Remove isValidDefineName validation in favor of direct string checking
- Support define() calls with namespaced and non-identifier constant names
- Add proper error handling for undefined constants in namespaces
- Simplified concat assignment logic by checking for Concat instance directly instead of flattening
- Changed SelectionExpressionTrait to use parseExprAsValue for ternary branches
- Added proper handling of void branch conversion to null in ternary expressions
- Added tests for concat assignment to inherited properties
- Added tests for ternary expressions with void branches and side effects
- 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
- Add test case for namespaced class name escaping in C++ string generation
- Verify proper error message display for type mismatch in namespaced properties
- Test native scalar property assignments with configuration arrays
- Validate TypeError handling for invalid type assignments in namespaced context
fix(compiler): ensure namespaced class names are properly escaped in property type checks
- Update genCharPtr call with escape parameter set to true
- Fix object property type check display name generation for namespaced classes
- Maintain backward compatibility with existing property access patterns
- Add support for array references using byRef flag in ArrayExpressionTrait
- Modify hasReference check in array parsing logic to handle mixed references
- Implement reference value parsing with proper error handling for unpacking
- Enhance foreach reference binding with improved type checking and error messages
- Add proper scope handling for foreach iterators with class context
- Update foreach value assignment to use correct reference expression syntax
- Implement structural mutation protection for std containers during iteration
- Add comprehensive test coverage for foreach edge cases and reference mutations
- Document std container modification restrictions during foreach loops
- Update yield from and foreach documentation for iterator handling differences
- Add test case for foreach by value behavior when current element is removed
- Verify that foreach maintains stable array snapshot during iteration
- Confirm expected output matches array traversal before modifications
- Document behavior where unset operations don't affect ongoing loop
refactor(parser): simplify foreach array handling logic
- Remove dedicated parseForeachArray method from ForeachTrait
- Consolidate array iteration to use existing parseForeachIterable method
- Maintain same functional behavior while reducing code duplication
- Update type checking logic to route arrays
- 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
- 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
- Add check for void return type to prevent materialization in tmp var
- Return method call directly when return type is void
- Prevent unnecessary temporary variable assignment for void providers
- Maintain proper expression statement handling for void operations
- Replaced all occurrences of native_types::type_* with Type::* constants
- Replaced all occurrences of complex_types::type_* with Type::* constants
- Updated ExtensionProvider annotation to use ExtensionProvider::Keyword
- Modified std array, vector, map, ordered_map, bigfloat, bigint, decimal tests
- Updated stream, array multidimensional, unsafe pointer, and type mismatch tests
- Changed camel case keyword extension to use Type::Any constant
- Updated documentation to reflect Type::* constant usage instead of type_* constants