- Replace direct typephp_runtime_init calls with TYPEPHP_RUNTIME_INIT macro
- Add conditional linking for Unix PHP extensions to prevent duplicate ZendVM
- Implement dynamic lookup for macOS extensions to resolve host symbols
- Move typephp_helper.h from misc to include directory
- Update WASM interface generator to use project-specific runtime symbols
- Add tests for native module linking behavior and macOS extension options
- Refactor Translator to generate proper embed module entry functions
- Update documentation for new runtime initialization patterns
- Updated ArrayExpressionTrait to use setValue/appendValue methods when not by reference
- Changed set/append calls to respect byRef flag in array expressions
- Fixed assign operation to use appendValue instead of append for direct writes
- Added comprehensive test case for array write reference behavior
- Implemented proper dereferencing logic for array assignments
- Added cleanup script for TypePHP temporary files with safety checks
- Replace php_get_class with get_class throughout the codebase
- Replace php_get_persistent_class with get_persistent_class
- Replace php_get_func with get_func and update related helpers
- Replace php_get_persistent_method with get_persistent_method
- Replace php_get_persistent_prop with get_persistent_prop
- Replace php_globals_array with php::globalsArray
- Replace php_deindirect with php::deindirect
- Replace php_get_called_ce with php::getCalledCe
- Replace php_get_callable_scope with php::getCallableScope
- Replace php_get_str with get_str for literal string access
- Update build script to handle TypePHP project module accessor
- Add test case for helper symbol collision prevention
- Modify module initialization from app_init/app_clean to module_init/module_clean
- Cache GLOBALS variable check result to avoid redundant parsing
- Implement fast paths for typed array and string reads using direct method calls
- Add optimized handling for simple shorthand ternary operations
- Generate efficient C++ code for array dimension fetch with proper type detection
- Preserve PHP semantics for reference handling in array operations
- Add comprehensive test coverage for typed read optimizations
- Improve namespace isolation for generated runtime symbols across build modes
- Introduce $allowLocalClassEntryHoisting flag to control class entry hoisting behavior
- Add withoutLocalClassEntryHoisting method to temporarily disable hoisting during callback execution
- Modify getLocalClassEntryPtr to respect hoisting allowance when checking process stable class
- Wrap parameter default parsing in withoutLocalClassEntryHoisting to prevent unwanted hoisting
- Update array initialization in Preprocessor to use hoisting control for literal arrays
- Add support for new expressions in array parameter defaults with proper class resolution
- Include tests for array parameter defaults containing new expressions
- Add tests for runtime array property defaults with copy-on-write behavior
- Rename generated request array default symbols with 'typephp_' prefix for consistency
- Update documentation to reflect implemented optimizations and remaining costs
- Add optimized array write operations that preserve references and avoid temporaries
- Implement direct array append and item assignment for known array types
- Optimize compound assignment operations like += for known array slots
- Add compile-time expansion for $this::CONST class constant fetches
- Cache process-stable class entry pointers at function level to avoid repeated lookups
- Optimize string concatenation with two scalar operands using efficient overload
- Skip unnecessary type conversions for arguments that already have exact types
- Add comprehensive test coverage for optimized array operations and object creation
- Implement lazy initialization of request-scoped array default templates
- Generate efficient
- Change temporary variable type to Variant for PHP arrays to prevent undefined C++ behavior
- Add methodNameToStr helper that treats 'self' and 'static' as ordinary member names
- Replace identifierToStr with methodNameToStr for method calls to respect lexical rules
- Update nullsafe access trait to use proper method name parsing
- Add test case for array element compound arithmetic overflow handling
- Add test case for nullsafe chain preserving typed method returns
- Updated swoole/phpx from ~2.6.0 to ~2.6.1 in composer.json
- Incremented version number in version.txt from 1108 to 1109
- Bumped package version constant in Translator.php from 0.6.0 to 0.6.1
- Added new test file for request root shutdown cleanup functionality
- Replace php::safeIndex with php::safeArrayIndex for consistent boundary checking
- Remove special case handling for property[count(property)] append operations
- Use zend_hash_next_free_element() based append position instead of length()
- Update tests to verify inclusive upper bound behavior for sparse arrays
- Add comprehensive test coverage for unset() hole scenarios
- Modify documentation to reflect new indexing behavior and boundaries
- Rename canFoldLocalLiteralIntoDeclaration to canFoldLocalInitializerIntoDeclaration
- Replace isDeclarationLiteral with isHoistSafeDeclarationInitializer
- Add support for hoisting compile-time class constants in addition to literals
- Implement isHoistSafeClassConstFetch to determine safe class constant hoisting
- Add isHoistSafeConstFetch to validate constant fetch safety for hoisting
- Update documentation to reflect hoist-safe value requirements
- Add tests for native scalar literals, compile-time constants and class constants
- Move internal constant value generation to separate method
- Refine constant resolution logic with namespace fallback handling
- Add validation for runtime constant dependencies in class constants
- Implement ArrayDef attribute for compile-time array type contracts
- Add support for list and map type definitions with key/value constraints
- Create ArrayDefinition and ArrayDefWritePlan data structures
- Integrate ArrayDef validation into assignment operations
- Add documentation for ArrayDef usage and limitations
- Support class value types, subclasses, and dynamic type checking
- Enable static property array dimension assignments
- Optimize literal assignments into variable declarations
- Add comprehensive test cases for various ArrayDef scenarios
- Removed "any", "box", and "stream" aliases mapping to ZEND_STR_MIXED
- Added test case to verify property names are not rewritten through pseudo-type string aliases
- Created attribute metadata test to ensure string arguments maintain original values
- Prevented potential conflicts between pseudo-type aliases and actual property/argument names
- Add requireWitBindgen parameter to WasiToolchain detect method
- Include wit-bindgen requirement when project mode is library
- Add specific error message for wit-bindgen-cli installation in library mode
- Remove manual host OS/architecture detection logic
- Use tools array to provide wit-bindgen path from toolchain detection
- Simplify environment variable assignment for TYPEPHP_WIT_BINDGEN
- Remove bundled PHPX wit-bindgen binary and switch to PATH-based discovery
- Require wit-bindgen-cli 0.60.0 to be installed separately in system PATH
- Update error messages to reflect standalone wit-bindgen installation requirement
- Exclude host build tools from package distribution, only include target SDK
- Add WIT_BINDGEN_VERSION constant and detection logic in WasiToolchain
- Implement wit-bindgen version validation in toolchain detection
- Add test cases for wit-bindgen presence and version compatibility checks
- Update documentation to reflect wit-bindgen-cli 0.60.0 installation requirement
- Modify build scripts to locate wit-bindgen through PATH instead of PHPX bundle
- Remove makeScopedCallableMap helper function
- Change preg_replace_callback_array strategy from 'map' to 'dynamic-map'
- Add dynamic-map strategy support in CompilerBase for efficient callback processing
- Update documentation to reflect new callback map implementation approach
- Modify tests to verify UserCodeScopeGuard usage instead of makeScopedCallableMap
- Add test case with static closure in preg_replace_callback_array
- Implement BashCompletion class that generates bash completion script
- Add CompletionCommand to handle --generate-completion=bash argument
- Create CompletionMetadata to provide option and value definitions
- Integrate completion check into main compiler flow
- Add unit tests for bash completion generation and functionality
- Update documentation with bash completion usage instructions
- Add --generate-completion=bash to CLI help text
- Add explicit null return statement when mixed return type is added to anonymous class methods
- Extend anonymous class with ImportedVisitor base class in test case
- Add inspect method implementation in anonymous class to check object instances
- Update expected test output to include NULL result
- Add proper visitor class with inspect method in test namespace
- Include necessary use statements for Visitor class in anonymous class consumer tests
- Updated resolveAnonClassTypeNames to resolveAnonClassNames with improved name resolution
- Added proper handling of imported names in anonymous class method bodies
- Ensured fully qualified names are embedded when anonymous classes are evaluated
- Added test case for anonymous class method bodies preserving namespace imports
- Fixed function call trait to check global name instead of local name for unsupported functions
- Added tests for destructor exception handling boundaries
- Improved include error handling and shutdown exception handler behavior
- Added unsupported function detection for extract function with proper error messages
- Updated swoole/phpx dependency from ~2.5.3 to ~2.5.5
- Add hooks property to PropertyInfo class with get/set method mappings
- Register property hooks as Zend metadata during AOT compilation
- Implement proper virtual property handling with ZEND_VIRTUAL_PROPERTY_OFFSET
- Support object introspection via Reflection and iteration with hook invocation
- Add reflection metadata exposure through ReflectionProperty::hasHooks() and getHooks()
- Implement backing storage detection to distinguish virtual vs backed properties
- Add comprehensive test coverage for property hooks introspection and reflection
- Document lazy object limitation with persistent AOT class entries in PHP 8.4
- Update documentation to reflect property hooks compilation strategy changes
- Extended BinaryOpTrait to handle temporary variable cleanup for STR, ARRAY, and OBJECT types
- Added parseDynamicClassConstNameFetch method to handle dynamic constant name resolution
- Implemented proper evaluation order for class target and dynamic constant name
- Added support for static, self, parent, and regular class references in dynamic context
- Created materializeDynamicClassConstOperand helper for operand processing
- Updated temporary variable management to clear zval-owning PHPX wrappers
- Added comprehensive tests for dynamic class constant name evaluation semantics
- Implemented proper object lifetime management for temporary arguments
- Added tests for reference-returning function alias preservation
- Fixed temporary call argument lifetime handling in object constructors
- Add try-catch block around generated ZEND_FUNCTION/ZEND_METHOD wrappers
- Convert C++ exceptions to normal Zend exception propagation at outermost wrapper
- Prevent C++ exceptions from escaping through Zend's C frames during cleanup
- Ensure EG(exception) is properly handled for frame cleanup in ZendVM
- Add proper exception handling for native TypePHP code unwinding
- Maintain callback boundary integrity for dynamic method calls
- Add test case for repeated dynamic static calls not reusing released trampoline
- Add test case for repeated static calls to runtime-defined magic class
- Throw LogicException in getFuncPtr when class method name is detected
- Update getFuncPtr to reject class method names with proper error message
- Replace getFuncPtr with getMethodPtr for static method calls in method call trait
- Update Closure::fromCallable handling to use getMethodPtr instead of getFuncPtr
- Fix Python module trait to use getMethodPtr for PyCore methods
- Update translator to clear function and class maps on every request shutdown
- Refactor property access resolver to use compiled class declaration for parent lookup
- Add test to verify subclass lookup uses compiled class declaration when parent index is missing
- Update request shutdown test to run in all build modes with proper assertions
- Add specific test for function pointer cache rejecting class method names
- Rename hasDynamicCall to needsUnpackedCallbackScope in MethodDef
- Replace genScopeSwitchCode with genUnpackedCallbackScopeGuard
- Change prepareScopedCallback to use php::UserCodeScopeGuard
- Add callableScopeVar to FunctionContext for reusable scope management
- Update compiler logic to track unpacked callback scope requirements
- Generate single reusable CallableScope variable per method when needed
- Add comprehensive documentation for scope management design
- Create tests for callback context reuse and scope restoration
- Add non-static self callable test case
- Update method name references in traits test suite
- Support chained assignments like x = y = 1
- Implement destructuring assignments using ->toArray() conversion
- Add walrus operator (:=) expression support
- Enable function decorator handling with variable rebinding
- Support floor division //= and matrix multiplication @= operators
- Add tuple/list target expansion for del statements
- Convert pure annotations to comments instead of errors
- Rename main function to main_ to avoid TypePHP entry point conflict
- Generate proper decorator rebindings in main() section
- Handle decorated function calls through variable indirection
- Support stacked decorators with bottom-up application order
- Process decorator factories with argument evaluation
- Add imported symbol decorator support
- Implement proper global variable injection for decorated functions