- 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
- 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 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
- 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
- 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
- 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
- Replace direct php::concat calls with flattened concatenation using parseFlattenedConcat
- Add prepareConcatOperand method to handle proper string conversion for different types
- Implement unified foreach iterator using php::ForeachIterator for both arrays and objects
- Remove separate parseForeachObject method and consolidate iteration logic
- Add support for precompiled headers in GCC-like backends
- Implement PrecompiledHeaderManager for PCH preparation and caching
- Optimize build queue with SourceCompileQueue using largest-first sorting strategy
- Improve progress percentage calculation during compilation
- Add new test case for unified foreach iteration over different iterable types
- Replace php::throwException with php::throwExceptionEx for better error handling
- Add return php::null statements after exception throws in closure generators
- Update argument count error messages to use format strings with proper escaping
- Modify type error messages to use format strings instead of concatenation
- Add completed callback parameter to dispatchParallel method in NativeBuilder
- Track and report completed task count during parallel compilation
- Add progress bar functionality using AnsiKit components
- Include failure reason reporting when compilation fails
- Add test case for parallel dispatcher completion tracking
- Add test for foreach indentation restoration in object iteration
- Increment version from 0.3.0 to 0.4.0
- Replace ExtensionProvider::Keyword constant with direct '*' string usage
- Add LibPhpxInstaller class to automatically build libphpx.so from source
- Implement PHPX build dependency installation via system package managers
- Update installer documentation to include libphpx.so auto-build instructions
- Modify PHP directory detection to prioritize running PHP installation
- Adjust CompilerBase to use Composer InstalledVersions for PHPX path resolution
- Refactor LinuxPackageManager to separate build tool packages from configure options
- Add comprehensive tests for LibPhpxInstaller shared library detection
- Update platform warnings to guide users toward interactive auto-build
- Revise ExtensionProvider parsing to handle
- Replace appendCapturedStmtLines helper with direct formatCapturedStmtLines calls
- Change createPropertyAccessResolver from private to protected for extensibility
- Change resolveNativeInstanceProperty from private to protected for extensibility
- Change resolveNativeStaticProperty from private to protected for extensibility
- Change applyNativePropertyAccessResult from private to protected for extensibility
- Change containsNullsafeChain from private to protected for extensibility
- Replace parseTypeDecl output parameter with resolveTypeDecl returning array
- Change sortFiles to getSortedFiles returning sorted array instead of modifying input
- Update name resolution to handle imported namespace prefixes correctly
- Enhance property hook backing access detection with additional conditions
- Add redis extension availability check to test skip conditions
- Document compiler self-hosting constraints regarding reference parameters across traits
- Updated swoole/phpx dependency from v2.3.9 to v2.3.10
- Created InteractiveConsole class for terminal interactions
- Implemented LibPhpInstaller with automatic PHP embed library building
- Added LinuxPackageManager detection for dependency installation
- Integrated PhpBuildConfiguration for proper PHP compilation options
- Added documentation for libphp.so automatic building feature
- Added unit tests for the new installer components
- Integrated installer into build pipeline for Linux platforms
- Removed unused TypePhp\Exception\PlaceHolder import
- Removed unused TypePhp\Resolver\InstancePropertyFetchTarget import
- Removed unused TypePhp\Resolver\PropertyAssignTypeInfo, PropertyWriteTarget, StaticPropertyFetchResolution, and StaticPropertyFetchTarget imports
- Removed unused PhpParser\Node\Stmt\Foreach_ import
- Removed unused TypePhp\Platform\Linux import
- Removed unused getTargetFileName method from NativeBuildConfigurationTrait
- Moved globalHeaders array from CompilerBase to Translator class
- Moved classCeList and classCeInfo arrays from CompilerBase to Translator class
- Updated ABI version retrieval to use constant() function instead of direct constants
- Added proper PHPDoc comments for functions and classes arrays in SymbolRepository
- Replace direct array access with SymbolRepository for functions, classes, interfaces
- Introduce DiagnosticReporter interface with CLI and throwing implementations
- Add NativeBuilder for compile/link command management and parallel processing
- Create CommandOptions base class for compile and link options handling
- Implement project YAML loader with PHP version and OS family conditions
- Remove old array properties and update all related method calls
- Update compiler diagnostic methods to use new reporter pattern
- Refactor native compilation to use builder pattern with proper options
- Modify test utilities to work with new symbol repository structure
- Moved common compile command options logic to NativeCommandOptionsTrait
- Extracted Windows resource file compilation functionality to ResourceCompilationTrait
- Removed duplicate resource compilation methods from Translator class
- Added trait usage in Translator class for better code organization
- Maintained all existing functionality while improving code structure
- Centralized compile options generation across different compilation scenarios
- Move file handling logic from Translator to SourcePipelineTrait
- Add new trait file with methods for adding, getting, preparing and converting files
- Extract compiler toolchain validation logic into separate method
- Implement file filtering and ignore path checking functionality
- Update Translator class to use SourcePipelineTrait instead of inline methods
- Move Reflection class from TypePhp to TypePhp\Resolver namespace
- Rename ArgInfo.php to TypePhp\Entity\ArgInfo and update all references
- Move AstNodeType.php to TypePhp\Parser\AstNodeType with namespace update
- Update Symbol.php import paths to use TypePhp\Generator\Symbol
- Move Constants.php to TypePhp\Metadata\Constants with namespace change
- Rename FileScanner.php to TypePhp\Build\FileScanner with namespace update
- Move MagicMethodDetector.php to TypePhp\Resolver\MagicMethodDetector
- Rename PropertyHookLowering.php to TypePhp\Transform\PropertyHookLowering
- Move Visitor.php to TypePhp\Transform\Visitor with namespace update
- Update all test files to reflect new class
- Introduce NativeBuildConfigurationTrait to handle include, library, and linker paths
- Add platform-specific include path resolution for Windows and Linux/macOS
- Implement library path configuration with PHP SDK support
- Add cross-platform library linking for phpx, PHP core, and system libraries
- Include platform-specific target file naming and extension handling
- Support both extension and binary build modes on different platforms