- Add support for (int), (bool), (float), (string), (array), (object) casts
in constant expressions across all declaration contexts
- Implement proper evaluation of cast expressions during stub generation
- Add comprehensive test coverage for constant expression casts in various
contexts including global constants, class constants, properties, and
parameters
- Update documentation to reflect PHP 8.5 cast support
- Enhance RuntimeAttributeFactoryLowering to handle array cast nodes
correctly
- Add validation and error handling for unsupported cast types in
constant expressions
- Implement final promoted property parsing with explicit visibility requirement
- Add support for exit(message: $value) named argument syntax
- Reject unknown named arguments in exit/die function calls
- Enforce explicit visibility declaration for final promoted properties
- Add test coverage for final promoted property inheritance errors
- Update documentation for supported PHP 8.4+ features and limitations
- Generate proper reflection metadata for final promoted properties
- Support native class final promoted property compilation
- Implement validation for promoted asymmetric properties requiring explicit types
- Add error handling for promoted asymmetric properties with wider set visibility
- Support constructor property promotion with asymmetric visibility modifiers
- Enable proper scope checking for promoted asymmetric properties in Zend-backed objects
- Preserve promoted/set visibility and implicit final reflection flags
- Add comprehensive test coverage for promoted asymmetric property scenarios
- Implement native object compilation support for asymmetric property access checks
- Remove pending status for ReflectionProperty::isPromoted() implementation
- Update documentation to reflect complete asymmetric property visibility support
- Extend Override attribute to support properties in addition to methods
- Add comprehensive property override validation including parent property matching
- Implement property shadowing prevention for private parent properties
- Add trait property override validation at use site
- Support promoted and hooked properties in override validation
- Update error messages to include property targets for override rejection
- Add internal marker preservation for property override validation
- Implement final property and property hook inheritance restrictions
- Add parent property hook call syntax support with validation
- Support PHP 8.4 final property metadata preservation in reflection
- Add property hook inheritance and reflection test cases
- Update native class property validation to prevent private property hiding
- Implement interface property hook final restriction
- Add property get hook reference return validation error
- Update stub generation with property
- Implement DNF method signatures with parameter contravariance and return covariance
- Add new test cases for DNF inheritance variance scenarios
- Extend stub generation to handle DNF union and intersection types
- Create DNF type declaration code generation in gen_stub.php
- Add support for DNF properties and dynamic property writes
- Implement closure support with DNF parameters and return types
- Add error handling for invalid DNF type operations
- Update inheritance checks to validate DNF parameter and return type compatibility
- Introduce test cases for DNF inheritance errors
- Refactor type comparison logic to support DNF clause subtyping relations
- Implement clone-with functionality with one/two argument support
- Add preservation of evaluation order for clone-with operations
- Support dynamic, numeric and object-valued properties in clone-with
- Handle error cases and stop property updates at first error
- Reject active references and unwrap sole remaining references
- Respect property scope and unlock readonly properties during cloning
- Add first-class callable and string callable support for clone
- Preserve lexical class scope in Zend call frames for method calls
- Update documentation with clone-with compatibility requirements
- Add comprehensive test coverage for clone-with features
- Implement scope argument handling in runtime function calls
- Add new NegativeCompatibilityTest class with 320 lines of test cases
- Implement closure and arrow function reference return validation with error messages
- Add foreach list destructuring reference binding validation and error reporting
- Move foreach by-reference variable validation to proper location in parser
- Update documentation to reflect foreach list destructuring reference limitations
- Refactor incompatibility classification documentation for clarity
- Remove outdated attribute argument limitation from documentation
- Create diagnostic reporter for controlled compiler boundary testing
- Add comprehensive test coverage for PHP incompatibility boundaries
- Ensure clean failure modes instead of crashes or invalid C++ emission
- Add php85 flag to control closure validation behavior based on PHP version
- Implement rejectUnsupportedClosure method to detect and reject closures in constant expressions
- Add validation for closures in class constant declarations with appropriate error messages
- Add validation for closures in property default values with appropriate error messages
- Add validation for closures in parameter default values with appropriate error messages
- Update documentation to reflect PHP 8.5 closure incompatibility in constants and defaults
- Add comprehensive test cases covering various closure usage scenarios in PHP 8.5
- Remove previously allowed PHP 8.5 class constant closure test case from validation tests
- Removed isConstFetch and isAssignOp methods from AstNodeType
- Removed corresponding test cases for isConstFetch and isAssignOp
- Updated CallArgumentGenerator to use setValue and appendValue instead of set and append
- Removed parseNamedCallArgs method from CallArgumentGenerator
- Removed unused getPlatformFullLinkFlags method from Clang backend
- Updated ClosureGenerator to use appendValue instead of append
- Removed abstract compileFile and linkObjects methods from CompilerBackend
- Removed unused getObjectPropVarInfo and getDecimalLiteralString methods
- Removed resetReturnType and mustNoCall methods from CompilerBase
- Removed testParseIncludesUsesNewArchitecture, testParseLdflagsUsesNewArchitecture,
testParseLibsUsesNewArchitecture and testBackwardCompatibility methods
- Removed isUniversalCtags property and related logic from Extractor
- Removed extractWithMetadata, generateStatistics and exportToMarkdown methods from Extractor
- Removed extractMetadata, extractComments, isPHPFunction and parseDocTags methods from Extractor
- Removed FINAL_TEST_SUCCESS.md file containing old test results
- Introduce LibraryExportedNative class with #[Native] attribute
- Add LibraryHiddenNative class with #[NoExport] and #[Native] attributes
- Create stub file for native class definitions
- Implement StubNativePoint class with native annotation and basic properties
- Add length method to StubNativePoint for geometric calculations
- Enable compiler support for native class annotations
- Prevent native classes from being exported through library stubs with proper error messages
- Add test cases to verify rejection of exported native classes in library builds
- Validate that NoExport native classes are omitted from library stub generation
- Implement check for native class usage in stub files with appropriate error handling
- Update hot path codegen to use appendValue method instead of append
- Add comprehensive test coverage for native class validation scenarios
- Add EntryScriptCodegenTest to verify entry script generation
- Create temporary project directory setup and teardown methods
- Implement testMainLinePaddingDoesNotBloatGeneratedExtension method
- Verify line padding uses runtime string construction instead of embedded newlines
- Add recursive directory removal utility for cleanup
- Ensure proper evaluation of main function with correct line offset
- 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
- 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
- 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
- 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
- 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 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
- Add detailed PY2PHP.md documentation covering usage, architecture, statement/expression support matrix
- Document function signature conversion rules and print/sys.exit lowering behavior
- Include known behaviors and unsupported syntax with error messages
- Create comprehensive test suite for PythonAstLoader with real Python subprocess integration
- Add extensive test coverage for PythonToTypePhpConverter including supported/unsupported syntax cases
- Implement CLI layer tests for --convert-python-to-php command with various scenarios
- Add test matrix aligned with documentation covering all supported Python constructs
- Include test cases for error handling and edge conditions with proper exception propagation
- Rename internal symbol maps to persistent maps (internal_class_map to
persistent_class_map, etc.)
- Replace process-level stable symbol caching with module lifecycle
persistent caching
- Implement lazy initialization of persistent caches after PHP startup
- Add support for built-in class property resolution via reflection
- Remove dynamic property map as all cached properties are module-stable
- Update cache initialization to use atomic operations for ZTS safety
- Modify RSHUTDOWN cleanup to only clear user-defined caches
- Add test coverage for persistent symbol cache behavior
- Update GCC backend to hide extension symbols by default with -fvisibility=hidden
- Remove initialization window semantics for readonly properties
- Restrict readonly property writes to direct assignment only
- Add explicit error messages for unsupported readonly operations
- Update tests to reflect new readonly property behavior
- Remove constructor and clone method invocation restrictions
- Add support for closure rebinding rejection at compile time
- Modify property write target preparation with readonly checks
- Update documentation to remove outdated readonly initialization rules
- Add new test cases for readonly property direct assignment enforcement