- Update VERSION constant from '0.4.3' to '0.5.0'
- Maintain APP_NAME constant value as 'TypePHP Compiler (AOT)'
- Keep targetName property initialization unchanged
- Replace dynamic current time test with fixed datetime format parsing
- Change DateTime::createFromFormat call to parse specific datetime string '2024-02-03 04:05:06'
- Update expected output from variable format to fixed '2024-02-03 04:05:06'
- Remove variable timestamp output and replace with predictable datetime string
- Modify static call test to use explicit datetime string instead of current time
- Add explicit string casting for Stringable objects when passed to internal string functions
- Update numeric values with explicit (string) casts before using in string functions
- Adjust test expectations to match strict type behavior for string operations
- Updated BinaryOpTrait to use C++17 braced-list evaluation order for concat operations
- Modified CallArgumentGenerator to evaluate arguments in PHP source order before ABI arrangement
- Added proper handling of variadic arguments and named parameters in evaluation sequence
- Fixed array_key_exists parameter evaluation order to match PHP semantics
- Updated method call receiver evaluation to prevent statement hoisting issues
- Added comprehensive tests for argument evaluation order in various call scenarios
- Ensured captured beforeStmtLines are properly ordered relative to call expressions
- Create test verifying trait class constants remain bound to composing class
- Add test with ClassIdentityTrait using __CLASS__ and self::class
- Include Base class that uses the trait and Child extending Base
- Verify magicClass() returns "Base" instead of "Child"
- Verify selfClass() returns "Base" instead of "Child"
- Add expected output showing correct binding behavior
- Added parseOrderedOperand() to handle operand evaluation in correct sequence
- Updated BinaryOpTrait to use ordered parsing for concat() operations
- Modified CallArgumentGenerator to materialize nested calls before argument lowering
- Enhanced CompilerBase to maintain evaluation order in string interpolations
- Updated MethodCallTrait to evaluate receiver before method arguments
- Added comprehensive test case for function/method call argument evaluation order
- Introduce build-sdk.sh script to orchestrate complete TypePHP WASI SDK building
- Add numeric-smoke-test.cc and link-numeric-smoke-test.sh for GMP/MPFR/mpdecimal validation
- Create high-precision.php example demonstrating bigInt/bigFloat/decimal usage
- Add test-typephp-program.sh for WASI integration testing with wasmtime
- Update ABI version from v2 to v4 and expand included system libraries
- Document new SDK build process and updated extension list in WASI_BUILD.md
- Include zlib, sodium, openssl, libxml, sqlite3, zip
- Add wasm_mode environment variable with command/library options
- Implement WIT interface generation with manifest, adapter, and binding files
- Create WasmExport attribute for marking functions as component exports
- Generate C bindings and integrate wit-bindgen for component compilation
- Add support for library mode with reactor execution model
- Update build script to handle component vs command compilation
- Add JavaScript integration for calling exported Wasm functions
- Implement example extension info retrieval via WasmExport functions
- Add CSS styling for extension detail UI components
- Update documentation for WASI component library workflow
- Change default TYPEPHP_WASM_BROWSER from 1 to 0 in build script
- Add PHP extensions panel to WASM hello example UI with dynamic loading
- Update project.yml schema to require explicit 'browser' or 'component' values
- Modify help text to reflect component as default WASI output
- Update documentation to clarify component vs browser build profiles
- Remove legacy boolean and array config formats for wasm option
- Add validation for unsupported profile aliases like 'web'
- Refactor profile normalization to only accept 'browser' or 'component'
- Update tests to verify new configuration behavior and error handling
- 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
- Add WasiProjectConfig class for managing WASI project configurations
- Implement --wasm=[browser|component] option parsing in compiler CLI
- Add automatic WASI detection based on project.yml files
- Integrate Jco for browser component generation
- Update documentation to reflect WASI 0.2 (Preview 2) support
- Add example wasm-hello project with browser demo
- Create index.html and main.js for browser-based WASI execution
- Implement OPFS persistence for virtual filesystem in browser
- Add type-safe environment variable handling for WASI builds
- Update compiler help text to show new WASM options
- Replace WASI Preview 1 references with WASI 0.2 terminology
- 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
- Updated swoole/phpx from ~2.4.5 to ~2.4.6 in composer.json
- Bumped dependency version to latest stable release
- Maintained compatibility with existing codebase
- 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 genNewClosure method to handle closure creation with correct scope
- Preserve lexical class scope and late static binding for closures
- Handle trait method flattening correctly when creating closures in traits
- Update arrow function and fiber generator closure creation to use new method
- Fix strict scalar parameter checking to run inside argument expressions
- Correct trait name resolution in class definition processing
- Add comprehensive test coverage for closure lexical scope behavior
- 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
- Add compiler_pdb option to specify PDB file path in debug mode
- Implement /Fd and /FS flags for PDB generation during compilation
- Generate linker PDB files following output path conventions
- Create cache/msvc directory for storing compiler PDB files
- Add Windows-specific debug configuration for PDB handling
- Update version number to reflect new feature implementation
- 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
- Updated swoole/phpx from ~2.4.3 to ~2.4.5 in composer.json
- Added new test case for static::class runtime called scope behavior
- Added new test case for magic method indirect property update using __get by reference
- Extended existing magic method tests with isset true scenario that skips reading
- 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
- 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
- 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
- Changed TYPEPHP_PHP_SCRIPT_ENTRY from define to const declaration
- Maintained same boolean value of true for the constant
- Updated syntax to use PHP const keyword instead of define function
- Replace round() calculation with formatMegabytes() function call
- Add new formatMegabytes() utility function for consistent formatting
- Use number_format() for precise decimal handling in MB conversion
- Centralize byte to MB conversion logic in single reusable function