- 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
- 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 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
- Implement cache size limit of 8 entries and age limit of 30 days
- Add markUsedAndPrune method to handle cache cleanup when accessing entries
- Create getCacheEntries method to retrieve and sort cache entries by modification time
- Implement removeCacheDirectory method for recursive directory deletion
- Add unit tests covering expired and excess cache entry pruning scenarios
- Include cstring header in global headers and remove duplicate inclusion in generated code
- Update version from 1097 to 1098
- 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
- Modified parseProjectYaml to skip non-existent ignore paths instead of throwing errors
- Added test case verifying optional ignore paths are silently ignored when missing
- Maintained existing behavior for missing source files which still throw exceptions
- Updated version number from 1096 to 1097
- Update ReturnInfo::equalsApartFromPhpDocAndRefcount to consider PHPDoc types
in arginfo equivalence checks to prevent incorrect Reflection type exposure
- Rename method from equalsApartFromPhpDocAndRefcount to equalsApartFromRefcount
for better clarity and consistency
- Modify Translator.php to use hasClass and hasInterface methods instead of
symbols->hasClass and symbols->hasInterface for proper dependency resolution
- Add comprehensive tests for class registration preserving reverse inheritance
- Add tests for magic methods with implicit return types maintaining distinct
Zend arginfo during registration
- Include tests for interface registration handling child-before-parent scenarios
- Add cross-namespace interface dependency resolution tests
- Create diamond inheritance pattern registration preservation tests
- Introduce EXTENSION_PREFIX constant in Constants class
- Add isTypePhpExtension method to Reflection class for proper extension identification
- Update getModuleName to use standardized extension prefix
- Modify internal class and interface detection to exclude TypePHP extension symbols
- Refactor internal functions loading to filter out TypePHP extension functions
- Remove deprecated ignoreExtensions property and related regex parsing logic
- Update version from 0.4.1 to 0.4.2
- Add test case to verify zend module always uses typephp prefix
Cherry-pick of upstream 84ad3a5. The generator return type covariance
change is built on yurun's Translator.php, which diverged from
origin/master, so the files are materialized from the upstream commit
directly (they already include the cc25d71 FiberGenerator change).
- isReturnTypeOverrideCompatible now performs full covariance: every value
the child can return must be acceptable under the parent's declared
return type (nullable/union narrowing allowed).
- Add getReturnAcceptedTypes/isReturnTypeSubtype/isReturnTypeCoveredBy/
isReturnTypeEntryCompatible helpers; generators use their source-level
declared return type so interface/abstract covariance checks hold.
- FunctionDef gains declaredReturnType/declaredReturnClass/declaredReturnTypeCheck.
Regression tests: interface-return-type.phpt, interface-return-type-variants.phpt.
- Added check for staticVars when processing closure use references
- Prevented redeclaration of static variables as local variables in closures
- Updated variable resolution logic to include static variable scope
- Added comprehensive test case for static variable closure reference behavior
- Fixed variable name collision in preprocessor class constant handling
- Updated version number to 0.4.1
- 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
- Rename genFunctionDeclaration to genFunctionDeclarations
- Rename genExternGlobalVars to genDataDeclarations
- Update global variable declaration header from global_var_decl.h to data_decl.h
- Update documentation to reflect new internal build header files
- Modify source pipeline to use new method names and header naming convention
- 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
- Fixed zend_update_property call to use correct class entry variable
- Refactored object creation logic to delegate to parent allocator when needed
- Added parentHasCustomCreateObjectOnPhp84 method to detect parent class properties
- Simplified create object handler implementation using typephp_create_object_with_defaults
- Updated property initialization to work properly with asymmetric visibility
- Modified test case to include options property verification in inheritance scenario