Skip to content

Conversation

@crazywhalecc
Copy link
Owner

@crazywhalecc crazywhalecc commented Nov 30, 2025

Important notes

STATUS: dev -> alpha -> beta -> rc -> stable

Contribution notes:

  • Before we released the first alpha version, any changes should be merged into v3-dev, not v3.
  • After we released the first alpha version, any changes should be merged into v3 and we will deprecate v3-dev branch.
  • The structure of StaticPHP v3 may be changed before beta version.
  • Publishing new RFC is welcome.

RFCs

Progress of refactoring

bin/ refactoring

  • bin/spc for v3
  • bin/spc-alpine-docker
  • bin/spc-gnu-docker
  • bin/docker-entrypoint.sh
  • bin/setup-runtime

v3 new modules

  • Registry module loading for all configs and packages (StaticPHP v3 #980)
  • Vendor mode support
    • Separate a dedicated bootstrap file for initialization (StaticPHP v3 #980) (src/bootstrap.php)
    • Add init-registry command for vendor user

Commands refactoring

  • ConsoleApplication dynamic generating commands for target type packages (StaticPHP v3 #980)

  • Custom commands in external registry (StaticPHP v3 #980)

  • DownloadCommand

  • BaseCommand

  • BuildLibsCommand

  • BuildPHPCommand -> BuildTargetCommand with php package

    • Options
      • --with-libs: Keep for compatibility, add --with-packages option (StaticPHP v3 #980)
      • --build-shared
      • --build-all: Special parsing in v3 (StaticPHP v3 #980)
      • --no-strip, --disable-opcache-jit, --build-{sapi}, --with-config-file-path, --with-config-file-scan-dir, --with-hardcoded-ini, --with-micro-fake-cli, --with-added-patch (-P), --without-micro-ext-test, --with-upx-pack, --with-micro-logo, --enable-micro-win32, --with-frankenphp-app has been moved to php package definition (StaticPHP v3 #980)
      • Implementation status
        • no-strip
        • disable-opcache-jit
        • with-config-file-path
        • with-config-file-scan-dir
        • with-hardcoded-ini
        • with-micro-fake-cli
        • with-addeed-patch
        • without-micro-ext-test
        • with-upx-pack
        • with-micro-logo
        • enable-micro-win32
        • with-frankenphp-app
        • build-shared
        • with-packages (with-libs)
        • build-all
        • build-{sapi} except build-frankenphp (StaticPHP v3 #980)
        • build-frankenphp
        • with-suggests (with-suggested-libs, with-suggested-exts)
        • no-download (StaticPHP v3 #980)
        • Download options in build command (StaticPHP v3 #980)
        • with-clean
    • Build information printing: refactored to attribute #[StaticPHP\Attribute\Package\Info] (StaticPHP v3 #980)
    • Bind build extra info to ExceptionHandler
    • Validate packages before building and after extracting (StaticPHP v3 #980)
    • Patch static-php-cli version to PHP has been moved to php package build stage before (StaticPHP v3 #980)
    • Display build PHP result in terminal
    • Export licenses and build extensions and lib info after building
  • CraftCommand

  • DeleteDownloadCommand

  • DoctorCommand (StaticPHP v3 #980) (Just command, not Doctor items)

  • DumpExtensionsCommand

  • DumpLicenseCommand

  • ExtractCommand (Just command, not Extractor)

  • InstallPkgCommand ->InstallPackageCommand

    • PackageInstaller calling
    • Options
      • skip-extract
  • MicroCombineCommand

  • SPCConfigCommand

    • SPCConfigUtil calling
    • Options
  • SwitchPhpVersionCommand

  • Dev commands

    • AllExtCommand
    • EnvCommand
    • ExtVerCommand
    • GenerateExtDepDocsCommand
    • GenerateExtDocCommand
    • GenerateLibDepDocsCommand
    • LibVerCommand
    • PackLibCommand
    • PhpVerCommand
    • SortConfigCommand

Doctor module

  • Core framework refactored (StaticPHP v3 #980)
    • Doctor main class
    • DoctorLoader for loading check items
    • CheckResult for storing check results
    • Attribute-based check system: #[CheckItem], #[OptionalCheck], #[FixItem]
  • Doctor check items
    • OSCheck (migrated from v2's OSCheckList)
    • Re2cVersionCheck
    • PkgConfigCheck
    • MacOSToolCheck (migrated from v2's MacOSToolCheckList)
    • LinuxMuslCheck
    • LinuxToolCheck (v2 has LinuxToolCheckList)
    • BSDToolCheck (v2 has BSDToolCheckList)
    • WindowsToolCheck (v2 has WindowsToolCheckList)
    • ZigCheck (v2 has ZigCheck)

Legacy modules (v2 only - SPC namespace)

These modules exist in v2 but are refactored/merged into new v3 modules:

  • store/ - Deprecated and refactored
    • Downloader → StaticPHP\Artifact\ArtifactDownloader
    • LockFile → StaticPHP\Artifact\ArtifactCache
    • CurlHook → Merged into StaticPHP\Artifact\ArtifactDownloader
    • FileSystem → StaticPHP\Util\FileSystem
    • DirDiff → StaticPHP\Util\DirDiff
    • SourcePatcher → StaticPHP\Util\SourcePatcher (partial)
    • PackageManager, SourceManager → Removed (functionality in new Package/Artifact systems)
    • pkg/ → Migrated to src/Package/
    • source/ → Migrated to Artifact system

@crazywhalecc crazywhalecc added the mixed PR This PR contains multiple updates label Nov 30, 2025
henderkes and others added 6 commits November 30, 2025 16:08
- Introduced DirDiff class for tracking directory file changes.
- Updated ConsoleApplication to use addCommand for build targets.
- Enhanced PackageBuilder with methods for deploying binaries and extracting debug info.
- Improved package installation logic to support shared extensions.
- Added readline extension with patching for static builds.
crazywhalecc and others added 30 commits December 8, 2025 11:06
Co-authored-by: Copilot <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

mixed PR This PR contains multiple updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants