- Check for readonly property when calling unset on object properties
- Throw fatal error when attempting to unset readonly properties
- Add proper error message with property display name
- Include tests for unset operations on readonly properties
- Support both regular readonly properties and readonly class properties
- Ensure consistent error handling for readonly property access violations
- Add Command class to handle --gen-python-helper and --convert-python-to-php operations
- Integrate PythonToolsCommand execution into main compiler flow
- Remove toPlainValue from CompilerBase keyword method map
- Update tests to use new toValue() and toArray() methods instead of toPlainValue()
- Rename plain-value tests to object-conversion-methods with updated expectations
- Replace toPlainValue documentation with toValue() and toArray() explanations
- Add HelperRenderer to generate PHP declarations for Python modules
- Implement PhpyModuleScanner to inspect Python modules via reflection
- Add PyObjectHelperRenderer to generate base PyObject IDE helper
- Create example pi.php demonstrating new Python integration features
- Update gitignore to exclude ide-helper directory
- Replace all module property access from module::$property to module\property
- Replace all module function calls from module::function() to module\function()
- Update documentation to reflect new namespace constant syntax for module members
- Modify parser to recognize python module attributes using constant expression trait
- Remove special handling of python use statements in declaration symbol resolver
- Add support for fully qualified python module access without use declarations
- Implement proper namespace resolution for python modules in global and local scopes
- Update tests to verify new module access patterns work correctly
- Remove resetPythonModuleAliases call from compiler base initialization
- Rename parsePythonBuiltinCall to parsePythonFunctionCall for clarity
- Add comprehensive test coverage for imported symbols and fully qualified access
- Mark obsolete module static call and property access patterns as errors
- Add runtime check mechanism for objects that require value validation
- Prevent null assignment to typed objects after unset with proper error message
- Disable native call optimizations when object values become unpredictable
- Maintain class constraints even after unset and reassignment
- Generate appropriate error handling for invalid object operations
- Update SSA analysis to recognize unset operations as dangerous for property hoisting
- Add comprehensive tests for typed object unset behavior scenarios
- 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
- 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
- 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 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
- 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
- Add detection of pre-existing __construct methods in class
- Throw CompileTimeAttributeError when constructor property conflicts with existing method
- Update test to use proper exception expectation pattern
- Add new test case for parameter order independence
- Create helper method to find declared constructors in class statements
- Improve error messaging with specific class and method information
- Add printerGenerated property to ClassDef entity
- Implement removeMethod function in ClassDef for method removal
- Add comprehensive tests for getter, setter, with, printer and notnull attributes
- Create new CompileTimeAttribute utility class for attribute handling
- Implement GetterLowering for generating getter methods from attributes
- Add NotNullLowering for validating non-null parameters
- Implement PrinterLowering for generating toString methods
- Add PropertyMethodLowering for setter and with method generation
- Update gen_stub.php to recognize new compile-time attributes
- Enhance Preprocessor with printer generation logic
- Add symbol repository function removal capability
- Update Translator with printer generation predicate
- Modify Visitor to handle new attribute transformations
- Add polyfill definitions for Getter, Setter, With
- Add exported property to ClassDef and FunctionDef entities
- Implement #[NoExport] compile-time attribute processing
- Exclude NoExport-marked declarations from library stub generation
- Preserve original names during AST name resolution
- Add comprehensive test coverage for NoExport functionality
- Document NoExport attribute usage in MIXED_CPP_PHP.md
- Support NoExport with various namespace resolution patterns
- Apply NoExport cascading from classes to their methods
- Generate proper extern declarations for non-exported symbols
- 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
- Add assertion to verify _const_var_ is not in main header
- Generate extern declarations for constants in global variable header
- Include exported ABI constants in global header generation
- Move constant extern declarations from extension file to global header
- Add test cases for exported ABI integer, string, and array constants
- Implement test case for library function header exports with default value helpers
- Add test case for library compile options to export only public API by default
- Generate default argument helper declarations and definitions for library builds
- Add platform-specific visibility control for library symbols on non-Windows
- Implement forced include headers for library compilation mode
- Add DLL import/export macros for Windows library builds
- Support variadic arguments with default value helpers
- Update precompiled header compilation options to exclude forced includes
- Add pragma once directive to generated function declaration headers
- Implement proper conditional compilation for different platforms and build modes
- 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 canConsumeWrapperArgument method to determine when arguments can be consumed
- Modify argument passing logic to use php::takeValue for consumable arguments
- Support variadic arguments and specific types (mixed, string, array, object) for consumption
- Preserve reference arguments without consumption to maintain memory safety
- Add comprehensive test coverage for argument move semantics
- Create test files to verify correct argument handling in wrapper generation
- Modified multi_return_repeated_value function to return three values instead of two
- Updated variable assignment to include $tail value in return statement
- Changed destructuring assignment to handle three returned values
- Updated expected output in test cases to include the additional tail value
- Modified PHPUnit test assertions to match new three
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
```