0.35.0
版本发布时间: 2020-06-19 05:25:40
Carthage/Carthage最新发布版本:0.39.1(2023-09-19 00:45:54)
Carthage now elides a certain warning about Swift compiler versions upon truths from three sources:
- Swift compiler version (as queried by local machine’s
xcode-select
and possibleTOOLCHAINS
environment variable) being greater than 5.1 - that particular framework’s recorded Swift compiler being greater than 5.1
- that particular framework matching (somewhat) a glob (working from framework-bundle-root–level) of
Modules/*swiftmodule*/*.swiftinterface
- note: only one directory matching
Modules/*swiftmodule*/
will continue querying inside of it — withFileManager.default.contentsOfDirectory
defining that - note: presence of particular architectures (armv7, i386, x86_64, etc.) are not taken into account
- note: only one directory matching
Note: As .swiftinterface
files emission “currently [as of Swift 5.X] requires library evolution support” — take warning of the Swift Compiler Team’s message that “Library evolution trades off performance for flexibility” and comes with caveats. • :warning: Not every library vendor will desire to enable BUILD_LIBRARY_FOR_DISTRIBUTION
in their project’s build settings, or even to field questions on bugs resulting from those adding that scope. Be kind to library vendors that might weigh their potential maintenance/ongoing-qa-debugging work differently then your BUILD_LIBRARY_FOR_DISTRIBUTION
desires.
〜 Thanks @DavidBrunow for this feature!
Dynamic Intelligent Platform Parsing
Previously, Carthage would propagate errors upon reading non-compiled-in values from SUPPORTED_PLATFORMS
or PLATFORM_NAME
.
Carthage 0.35.0 supports SUPPORTED_PLATFORMS
or PLATFORM_NAME
dynamically with intelligent parsing from xcodebuild -showsdks -json
.
Carthage’s --platform
argument takes the same input of 2019-era SDKs — however, in alignment with the above: the default (a.k.a. “all”) parameter will allow dynamically-parsed SDKs to propagate.
carthage archive
still uses the hardcoded four 2019-era SDKs.
The carthage cleanup
command — existing on-master, but unshipped-in-tags — no longer makes sense (when set of SDKs are non-fixed across Xcode versions) and has been removed.
Dynamic Platform Parsing can occur from xcodebuild -showsdks -json
with fallbacks to BuildSetting
extraction from a Xcode-bundled xcodeproj
, and beyond that falling back to hardcoded 2019-era values.
⤵️ Note: the dynamic parsing will omit SDKs — such as DriverKit — where JSON-derived canonicalName
and platform
do not share a common prefix · DriverKit has an ouptut canonicalName
similar to «driverkit.macosx19.0».
Other Breaking Changes
-
Track static frameworks in
.version
files. Thanks @elliottwilliams!- Old carthage versions will still behave erroneous — but not propagate errors — after parsing sets of newer
.version
files output for Swift static frameworks. - To guarantee output of newer
.version
files for affected Swift static frameworks, change Swift versions and rerun Carthage with the--cache-builds
flag (even temporarily), or delete.framework
bundles for affected Swift static ones and rerun Carthage with the--cache-builds
flag.
- Old carthage versions will still behave erroneous — but not propagate errors — after parsing sets of newer
-
For GitHub Release assets, expand permitted MIME types to include
application/x-zip-compressed
. Thanks @MatkovIvan! - Reject invalid binary archives containing the same framework multiple times. Thanks @tmspzz!
- For binary-spec-ed dependencies and GitHub Release downloads, copy dSYMs if any architecture matches current binary — also affects CarthageKit consumers. Thanks @hlineholm!
- Conflict less in concurrent strip-framework–dedicated Carthage process invocations via different underlying copying — rather than overwrite straight from process, now temp directory usage prevents conflicts on certain same-file/same-path writes. Thanks @kalkwarf!
- Fallback to dSYM version parsing for more cases before invalidating cached builds. Thanks @kmcbride!
-
Add
--use-netrc
flag under which basic~/.netrc
files facilitatebinary
-specified framework download authentication. Thanks @mollyIV!
Stability
- Fix various cases of «Segmentation Fault 11». Thanks @taisukeh!
- Extend error messages when reading certain binaries. Thanks @hlineholm!
Security Enhancing Breaking Change
-
Prevent directory traversal through additional sanitization of
git
-specified repository URL components — specifically nul characters (\u{0000}
) and periods (\u{0023}
). Thanks @manicmaniac!- Replacement strings include repeated «Full Width Full Stops» (
\u{FF0E}
) and replacement␀
(\u{2400}
). - URL components not starting with periods (
\u{0023}
) will not see inserted «Full Width Full Stops» (\u{FF0E}
).
- Replacement strings include repeated «Full Width Full Stops» (
Breaking — For Apps Importing Carthage Kit and XCDBLD
For Apps Importing Carthage Kit and XCDBLD
- Removed:
XCDBLD.Platform
— replaced (not one-for-one) bystruct SDK
with new methodSDK.platformSimulatorlessFromHeuristic
. - Removed:
XCDBLD
’s enum-basedSDK
— replaced bystruct SDK
. - Removed:
XCDBLD.SDK.platform
andXCDBLD.SDK.allSDKs
. - Changed: Hashing and equality for
XCDBLD.SDK
is case-insensitive.- Canonical casing for SDK names available through
SDK.knownIn2019YearSDKs
andSDK.setFromJSONShowSDKs
.
- Canonical casing for SDK names available through
- Changed: Various type signature changes removing
XCDBLD.Platform
and incorporatingXCDBLD.SDK
. - Removed:
SDK.from(string:)
— replaced bySDK.init(name:simulatorHeuristic)
.- Passing an empty string as
simulatorHeuristic
is usually the foremost codepath. - SDK.init(rawValue:) is not intended for wide spread use · as it’s limited to only 2019-era hardcoded SDKs.
- Passing an empty string as
- Removed:
BuildSettings.buildSDKs: SignalProducer<SDK, CarthageError>
— replaced withBuildSettings.buildSDKRawNames: Set<String>
. - Made Public: Various
VersionFile
-related API. Thanks @acecilia!
Thanks to all Contributors
Thank you to @CosynPa, @sidepelican, @chuganzy, @sstadelman (#2781), @giginet (#2761), @ikesyo (#2886, #2785, #2784), @DavidBrunow (#2966, #2967), @mvalentiner, @gubikmic, @sticksen, @nteissler, @ismetanin, @brandonlee503, @yhkaplan, and @tmspzz for improvements to the codebase, tests, and documentation.
1、 Carthage.pkg 4.74MB