- Remove Windows-specific DLL backend and unify all platforms to source-composition model
- Add MSVC compiler support for section garbage collection with /Gy, /Gw, and /OPT flags
- Introduce platform-specific configuration loading for composer native packages
- Update nano capability policy to consistently reject external commands across all platforms
- Replace Windows DLL import checks with comprehensive symbol auditing
- Modify build configuration to handle platform-specific libraries and compilation flags
- Update documentation to reflect unified source-composition approach on Windows
- Remove deprecated nano policy modes and simplify syntax validation visitor
- Add proper C/C++ standard handling and preprocessing flags for MSVC
- Implement consistent section garbage collection for optimized linking on all platforms
- Create GlobalConstantDef entity to store namespace/global constant metadata
- Add properties for type, codegenFinalized, initialization code, and name
- Include constructor with parameters for value expression and source details
- Implement metadata collection during preprocessing functionality
- Add phpstan assertions for better type safety in AstNodeType and CallArgumentGenerator
- Replace null check with direct condition in ClassFieldSelection to streamline validation
- Remove unused FunctionLike import and add GlobalConstantDef import in CompilerBase
- Convert CompilerBase to abstract class with abstract methods for better structure
- Update constants array type hint from ConstantDef to GlobalConstantDef
- Replace class inheritance tracking with SymbolRepository for compiler symbols
- Change isScalarInt parameter type from Expr to Node and update return type
- Update getFunctionName parameter type to specific node types instead of FunctionLike
- Refactor parseScalar method to use instanceof checks instead of getType() switch
- Replace string comparison with instanceof check in getComment method
- Change parseNumericIdentifier condition to use instanceof instead of getType()
- Fix argument count comparison in function call validation logic
- Use getRawArgs() method for accessing call arguments in
- Replace sapiEntryFile with separate configured path and value properties
- Add sapiEntryConfiguredPath and sapiEntryConfiguredValue for deferred validation
- Move entry file existence checks to final SAPI selection phase
- Add warning when entry is ignored due to non-CLI SAPI configuration
- Update test cases to verify entry file handling behavior
- Remove redundant entry file addition in translator pipeline
- Refactor entry configuration to support CLI SAPI requirement validation
On Windows, --nano runs in nano-policy mode (nanoMode=false, nanoPolicyMode=true)
using the WINDOWS_DLL backend. RINIT then emits a direct C++ call to php_main()
instead of relying on ZendVM eval, but the extension translation unit never
included the entry function's declaration header, so the php_main() prototype
was missing and MSVC failed with C3861.
genExtensionIncludeHeaderFiles() only added declaration headers for stub files
and attribute-factory owners, never the entry's source file. Include the entry
function's declaration header when nano-policy mode is active so php_main() is
visible where RINIT references it.
Verified: a minimal --nano program now compiles, links and runs on Windows
(previously failed at extension-<target>.cc with 'php_main': identifier not
found).
- Updated swoole/phpx dependency from ~2.9.1 to ~2.9.2
- Bumped project version from 0.9.2 to 0.9.3 in project.yml
- Updated file-version and product-version to 0.9.3 in project.yml
- Changed VERSION constant from '0.9.2' to '0.9.3' in Translator.php
- Add --entry option to specify PHP entry file for CLI SAPI execution
- Make --php-builder option optional with default empty configuration {}
- Update documentation to reflect new --entry and optional --php-builder options
- Add CompilerToolchain class to manage C/C++ compiler and archiver tools
- Implement response file support for long object lists in archiving operations
- Add progress tracking and detailed build stage reporting for PHP compilation
- Support MSVC, GCC and Clang compiler toolchains with proper companion tools
- Add test cases for new entry point and toolchain functionality
- Adjust build pipeline to exclude entry file from source compilation
- Improve build logging and error handling during compilation processes
- Register shutdown function to clear reflection resolver caches in embed SAPI
- Add test to verify library builds exclude executable process title sources
- Remove embed-specific request cache clearing from module shutdown
- Add tests for embed binary module ordering behavior
- Implement temporary module storage switching for interned strings
- Add pre-shutdown functions for AST constant cleanup in embed mode
- Update platform detection to search multiple library directories
- Add test case for finding embed libraries outside standard lib dir
- Modify module initialization to handle persistent/temporary module types correctly
- Implement configureProxyEnvironment function to export CLI proxy for child processes
- Add --sapi option supporting embed, cli, fpm targets with comma-separated lists
- Introduce --php-builder option for building PHP from source with extensions and ZTS
- Update documentation for new SAPI and PHP builder configuration options
- Add PeclExtensionSource class for managing PECL extension downloads
- Modify build configuration to support PHP builder and multiple SAPI targets
- Update compiler base with new build mode validation and SAPI handling
- Enhance native build configuration with PHP builder specific library paths
- Add comprehensive test coverage for new SAPI and PHP builder features
- Implement --proxy <url> CLI option for configuring HTTP(S) or SOCKS proxy
- Add proxy handling in argument parsing with proper validation
- Update documentation in COMPILER_CLI.md, README.md, and README-CN.md
- Enhance Downloader class to support proxy configuration for curl commands
- Add stream context options for HTTP proxy with authentication support
- Include proxy error message sanitization to hide sensitive information
- Add unit tests for proxy functionality covering curl and stream scenarios
- Update bash completion script to include new --proxy option
- Validate proxy URL requirements with appropriate error messages
- Add downloadProxy property to CompilerBase with null default
- Register proxy command line option in Constants.php with description
- Create new Downloader class with proxy handling capabilities
- Integrate Downloader into LibPhpInstaller and OfficialPhpSource
- Remove old downloadText/downloadFile methods from installer classes
- Add proxy parameter to Installer and Builder constructors
- Update SapiPhpBuilder to pass proxy to OfficialPhpSource
- Modify Translator to parse and validate --proxy command line argument
- Skip proxy arguments during path detection in Translator
- Support both HTTP and SOCKS proxy protocols via curl and streams
- Add BUILD_MODE_SAPI constant and related methods for SAPI-specific builds
- Introduce sapiTargets, sapiEntryFile, and other SAPI-related configuration options
- Enhance Android platform with allowTargetVersion parameter in buildPhpIncludePaths
- Reorganize imports in CompilerBase with better grouping and ordering
- Add isSapiBuild() and getSapiTargets() methods for SAPI detection and management
- Update build mode logic to include SAPI in embed builds
- Refine expression type checking with shorter namespace references
- Add comprehensive SAPI build tests including target configuration scenarios
- Improve class property access in tests with parent class traversal support
- Standardize namespace separator handling in various compiler operations
- Add proper escaping and formatting in generated C++ code strings
- Implement SAPI-specific project parsing and validation rules
- Update test assertions to handle new namespace separator format
- Add error handling improvements for unsupported source conditions
- Enhance type checker generator
- Add embedded-files configuration option for packaging Composer vendor files and PHP fallback files
- Implement OPcache bytecode generation for embedded PHP files during build process
- Update GitHub Actions workflows to handle PHP version-specific release packaging
- Modify package.php to embed Composer runtime dependencies directly in compiler binaries
- Remove vendor directory from release packages since dependencies are now embedded
- Add comprehensive documentation for embedded-files feature in English and Chinese
- Update README files to include embedded dependencies documentation links
- Implement PHP ABI versioning in package filenames to distinguish different PHP builds
- Add verification mechanism to ensure embedded Composer runtime functions correctly
- Create detailed guides covering recommended setup, performance considerations, and build requirements
- Update project.yml version from 0.9.1 to 0.9.2
- Update project.yml file-version from 0.9.1.1112 to 0.9.2.1112
- Update project.yml product-version from 0.9.1 to 0.9.2
- Update Translator.php VERSION constant from 0.9.1 to 0.9.2
* fix(compiler): apply unary plus numeric conversion
* fix(compiler): infer unary plus assignments from target type
* fix(compiler): retain unary plus inference for fresh locals
* fix(compiler): resolve existing unary assignment locals by compiled name
- Updated swoole/phpx from ~2.9.0 to ~2.9.1 in composer.json
- Bumped minor version for bug fixes and improvements
- Maintained compatibility with existing codebase
- Resolved potential security vulnerabilities in older version
- Update main project version from 0.9.0 to 0.9.1
- Update file version from 0.9.0.1112 to 0.9.1.1112
- Update product version from 0.9.0 to 0.9.1
- Move optimize setting from project.yml to project-release.yml
- Remove Wall compiler flag from cxx-flags list