Update Notes
The main content of this update is the pre-built dependency library. For common extension combinations and dependencies, using prebuilt libraries can save 40-50% of build time, just need to add --prefer-pre-built
option for download
🚀 !
🤖 CI Updates
- feat: Add
prefer-pre-built
option for manual triggered build actions - chore: Speed-up CI build tests
- feat: Add pack lib CI (https://github.com/static-php/static-php-cli-hosted/blob/master/.github/workflows/pack-libs.yml)
- feat: Add
spc-max
for windows build
🔨 Framework Updates
- chore: Adjust
bin/spc-alpine-docker
, addpkgroot
for Dockerfile - feat: Add config
pre-built.json
- feat: Add method
LibraryBase->setup(bool $force = false)
- feat: Add method
LibraryBase->getName()
(same as$lib::NAME
) - feat: Add method
LibraryBase->beforePack()
- feat: Add method
LibraryBase->install()
- chore: Now we extract libs before building each of libs instead of all libs
- fix:
--ignore-cache-source
always working even if not specified - feat: Add
--prefer-pre-built
fordownload
command - feat: Add command
dev:pack-lib
(build and pack library as pre-built release) - chore: Disable some redundant log outputs
- feat: Add method
Config::getPreBuilt(string $name)
- feat: Update method
Downloader::getLatestGithubRelease(string $name, array $source, bool $match_result = true)
- chore: Add
$lock_as
for download method - chore: Remove
suffix
for LicenseDumper
📚 Dependency, PHP and Extension Updates
- fix: opcache not compiling on Windows
- feat: Add pre-built libraries:
brotli,bip2,gmp,icu,libargon2,libavif,libcares,libevent,libiconv,liblz4,libpng,libsodium,libtiff,libwebp,libyaml,ncurses,onig,openssl,pkg-config,readline,sqlite,unixodbc,xz,zlib
- fix: openssl build bug for PHP 8.0
- fix: swoole confict with libevent
- chore: Simplify and fix
icu,brotli,libargon2,libevent,libiconv,liblz4,ncurses,openssl
build files for pre-built libs - chore: Change patch pkgconfig prefix to
${pcfiledir}/../..
- fix: Newer version of libavif build failed bug #503
- chore: Use xz instead of gz for faster php-src download
- fix: sqlite build for windows not supporting different visual studio version
⚠️ Breaking Changes
All breaking changes in this version only affect the API and internal functions, and do not affect the default command line behavior. Feel free to upgrade in your CI workflow and projects.
- Constant rename:
BUILD_STATUS_xxx
->LIB_STATUS_xxx
- Constant rename:
BUILD_STATUS_FAILED
->LIB_STATUS_BUILD_FAILED
- Add new constant:
LIB_STATUS_INSTALL_FAILED
- Patch point:
before-libs-extract
->before-lib[{lib_name}]-extract
- Patch point:
after-libs-extract
->after-lib[{lib_name}]-extract
BuilderBase->buildLibs()
->BuilderBase->setupLibs()
CustomSourceBase->fetch(bool $force = false)
->CustomSourceBase->fetch(bool $force = false, ?array $config = null, int $lock_as = SPC_LOCK_SOURCE)
What's Changed (PR)
- Increase memory_limit size by @crazywhalecc in #485
- Add multiple extensions for Windows by @crazywhalecc in #488
- Add extension swow for Windows by @crazywhalecc in #489
- Add
prefer-stable
option,dev:lib-ver
anddev:ext-ver
commands by @crazywhalecc in #491 - Merge docs into static-php-cli repo by @crazywhalecc in #492
- Update xz version to 5.4.7 by @DimitriyB in #493
- docs: Add php-src modifications & Release SPC enhancement by @crazywhalecc in #494
- fix: xz download by @dunglas in #495
- Fix libyaml patch slashes by @crazywhalecc in #499
- Fix prefer-stable negative result in ghtar by @crazywhalecc in #500
- Add spx extension support by @crazywhalecc in #501
- Add pre-built lib feature, and more bugfix for 2.3 by @crazywhalecc in #502
🧑🤝🧑 New Contributors
- @DimitriyB made their first contribution in #493
Full Changelog: 2.2.4...2.3.0