Changelog History
Page 1
-
v0.36.0 Changes
September 18, 2020👀 ⚠️ This version doesn't fix the issue with Xcode 12. See #3019 ⚠️
🛠 Fixed
- Prevent cross device issues in
copy-frameworks
(#3047). Thanks @rudedogdhc!
Thank you to @nixnoughtnothing for improvements to the code base! Thank you to @tmspzz for reviewing pull requests!
- Prevent cross device issues in
-
v0.35.1 Changes
September 16, 2020👀 ⚠️ This version doesn't fix the issue with Xcode 12. See #3019 ⚠️
🛠 Fixed
- 🛠 Fixed copying files across different volumes (#3025). Thanks @rudedogdhc!
➕ Added
- Sort frameworks so changes in .version files are easier to spot (#3015). Thanks @peteranny!
- Support
NO_PROXY
orno_proxy
environment variable (#2991). Thanks @okaverin! - Prevent re-downloading module stable binaries (#3040). Thanks @justAnotherDev!
- ✂ Remove leftovers of failed archives unzips (#3035). Thanks @tattn!
👌 Improved
- Spelling mistakes in README (#3021). Thanks @thomasaw!
- 🏗 Reflect carthage build requirements in README (#3045). Thanks @chrstphrchvz!
- Installing carthage outside of protected folders no longer requires
sudo
(#3024). Thanks @cfelder! - ✂ Remove invalid archs by intersecting VALID_ARCHS and ARCHS (#2987). Thanks @jerbob92!
-
v0.35.0 Changes
June 18, 2020⚠ 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. • ⚠️ Not every library vendor will desire to enableBUILD_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 yourBUILD_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
orPLATFORM_NAME
.Carthage 0.35.0 supports
SUPPORTED_PLATFORMS
orPLATFORM_NAME
dynamically with intelligent parsing fromxcodebuild -showsdks -json
.0️⃣ 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 toBuildSetting
extraction from a Xcode-bundledxcodeproj
, and beyond that falling back to hardcoded 2019-era values.⤵️ Note : the dynamic parsing will omit SDKs — such as DriverKit — where JSON-derived
canonicalName
andplatform
do not share a common prefix · DriverKit has an ouptutcanonicalName
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.
- Swift compiler version (as queried by local machine’s
-
v0.34.0 Changes
October 21, 2019🍎 ⚠️ Carthage source only builds on Xcode 10.0+, thus requiring macOS High Sierra 10.13.6. ⚠️
➕ Additional workarounds to enable Xcode 11.0, 11.1, and 11.2 betas have been added; see below.
🛠 Fixed
- 🚀 ASCII alphabet for Semantic Version pre-release and build metadata components now includes uppercase and lowercase W, fixing an omission and completing the alphabet (#2805 #2806). Thanks @drakerr!
- ↪ Workaround Swift 5.1 compiler crash bug to allow the compilation of Carthage itself on Xcode 11, Xcode 11.1, and Xcode 11.2 betas (#2859). Thanks @michaelmcguire!
💥 Breaking — For Apps Importing Carthage Kit
✂ Removed — as a library dependency —
SwiftPM
andllbuild
and reinstatedstruct CarthageKit.SemanticVersion
.📦 A bug in the-tool-SwiftPM's package resolution resulted in disregard for the (crucial) ‘resolved file’ when resolving branch-based dependencies.
💅 Which would put us in the position of needing any commit of
apple/swift-package-manager
that didn’t specify its dependency onapple/swift-llbuild
in the branch-based style.Also criteria for the above, working Swift 4.2.X manifests and compilation and working Swift 5.X manifests and compilation.
📦 No such commit of
apple/swift-package-manager
could be found.In addition, some confusion around
llbuild
'ssqlite3
linkage made criteria even more confusing.- Some initializers and methods on
struct Carthage.SemanticVersion
have differences from the previous incarnation found in v0.33.0. - ✅ Reinstate
struct CarthageKit.SemanticVersion
in all callsites in codebase and tests, removingSPMUtility.Version
. - 🚚 No longer necessary to
import struct Foundation.URL
with the removed import of SPMUtility. - 🚚 Makefile removes complications which previously supported
llbuild
'ssqlite3
linkage. - Working Swift 4.2.X compilation is necessary to support building for macOS High Sierra on Homebrew bottling infrastructure.
Important
⚡️ Future updates will address Catalyst and building of XCFrameworks. Thank you for your patience.
Thank you to @jdhealy, @sstadelman, @tmspzz, @giginet, @olejnjak, and @ikesyo for improvements to the codebase and the infrastructure.
Thank you to @mdiep, @tmspzz, @giginet, and @ikesyo for reviewing pull requests!
-
v0.33.0 Changes
April 03, 2019🍎 ⚠️ Carthage source only builds on Xcode 10.0+, thus requiring macOS High Sierra. ⚠️
In particular,
carthage
compiles under Swift 4.2 and 5.0 with Xcode 10.1 and 10.2.🛠 Fixed
- 🏗 In cases where
device
andsimulator
destined builds are merged into a single bundle, also merge-Swift.h
header files from each with active inclusion of target conditionals (#2723, #2748). Thanks @DavidBrunow, @VictorNouvellet, and @buranmert!- Currently limited to a single pair of
-Swift.h
-suffixed files. Should be sufficient for the vast majority of frameworks.
- Currently limited to a single pair of
- 🏗 Under
--cache-builds
mode —- Support headerless Swift-containing frameworks via dSYM parsing (#2622). Thanks @blender!
- When run with
--no-skip-current
, produce.version
files for those additional frameworks (#2636). Thanks @blender! - In support of community tooling, embed partial toolchain information (often
swiftlang
andclang
versions) in.version
files for Swift-containing frameworks. Expect these.version
files to contain different output between Carthage v0.33.0 and previous Carthage versions (#2585, #2707). Thanks @giginet and @kenji21!
Notable
- 🚚 For file system objects at some level of
Carthage/Checkouts/DependencyX
, delete withFileManager.removeItem(at:)
if using--use-submodules
and something exists there that’s not a directory housing a.git
subdirectory. This matches Carthage’s existing deletion behavior of checkouts without--use-submodules
. Use caution. (#2654). - 🌐 In Cartfiles, specifications with
github
at the beginning of the line now error when followed by non-http-or-https-schemed URLs (oftenssh://
orgit://
schemed). We long-standing queried these with web requests, so now errors output earlier in the process with more helpful messaging (#2379). Thanks @ikesyo! - 🏗 Static frameworks under
--cache-builds
mode highly likely to proceed errantly cache-valid ≈ late caught bug —- Will be correctly cache-invalid upon a version-specification change (including changing the specified SHA); also, upon a toolchain change for a Swift-containing static framework (including after a different
xcode-select
). - The first run of a never-modified-by-Carthage-v0.33.0
.version
file for a Swift-containing static framework under Carthage v0.33.0 will also cache-invalidate it. carthage build <framework>
without--cache-builds
will always attempt rebuilding it and it's dependencies. Note for Apps Importing CarthageKit.framework
- Will be correctly cache-invalid upon a version-specification change (including changing the specified SHA); also, upon a toolchain change for a Swift-containing static framework (including after a different
- 📦 Carthage (the CLI executable) is now built exclusively with SwiftPM. In effect, the Cartfile supporting
CarthageKit.framework
has been removed. Consuming CarthageKit is now done through SwiftPM and CarthageKit is now a static library.
On environment variable
GIT_SSH_COMMAND
- An SSH prompt (invisble to a
carthage
user) could stop progression when encountering a host not yet public-key-fingerprint verified by the user. Carthage now outputs proper messaging at that point, at the expense ofGIT_SSH_COMMAND
no longer being honored (#2734). Thanks @jlawton!
👌 Improved
- Report read errors from files pointed to by
SCRIPT_INPUT_FILE_LIST_
variables (#2668). Thanks @ferranpujolcamins! - More efficient, less errant querying of git’s representation of file system objects via
ls-tree
(#2617). Thanks @CosynPa! - 🔀 More efficient
git submodule sync
over multiple dependencies (#2643). Thanks @mdiep!
📚 Thank you to @FranklinYu, @DivineDominion, @musbaalbaki, and @salbertson for improvements to the documentation.
Thank you to @mxcl, @giginet, @olejnjak, and @ikesyo for improvements to the codebase and the infrastructure.
Thank you to @blender, @mdiep, @giginet, @DavidBrunow, @VictorNouvellet, and @ikesyo for reviewing pull requests!
- 🏗 In cases where
-
v0.32.0 Changes
February 01, 2019Fixed
- More resiliency towards
xcrun simctl list devices --json
outputtingcom.apple.CoreSimulator.SimRuntime
in keys whose values are available simulator devices (#2693, #2696). Thanks @kmcbride and @DavidBrunow!
Thank you to @giginet, @taher-mosbah, @ikesyo, and @blender for reviewing pull requests!
- More resiliency towards
-
v0.31.2 Changes
October 30, 2018🍱 > ⚠️ Carthage will only consider targets that support the
archive
action. (#2507 & #2515) ⚠️
🍱 > ⚠️ Carthage does not support Xcode 6 anymore. (#2561) ⚠️
🍎 > ⚠️ Carthage source only builds on Xcode 9.4+, thus requiring macOS High Sierra. ⚠️🛠 Fixed
- More resiliency towards
xcrun simctl list devices --json
outputtingisAvailable
as String,isAvailable
as Bool, oravailability
as String depending upon whether Xcode 10B61 has been installed, or an Xcode 10.1 beta has been installed (#2630). Thanks @ olejnjak!
📚 Thank you to @artemnovichkov for improvements to the documentation.
Thank you to @ikesyo and @giginet for improvements to the codebase and the infrastructure.
Thank you to @blender, @mdiep, and @ikesyo for reviewing pull requests!
- More resiliency towards
-
v0.31.1 Changes
October 09, 2018🍱 > ⚠️ Carthage will only consider targets that support the
archive
action. (#2507 & #2515) ⚠️
🍱 > ⚠️ Carthage does not support Xcode 6 anymore. (#2561) ⚠️
🍎 > ⚠️ Carthage source only builds on Xcode 9.4+, thus requiring macOS High Sierra. ⚠️🛠 Fixed
- Resiliency towards
xcrun simctl list devices --json
outputtingavailability
orisAvailable
depending upon whether an Xcode 10.1 beta has been installed (#2606). Thanks @giginet!
➕ Added
- ➕ Add support for
*.xcfilelist
file incarthage copy-frameworks
(#2591). Thanks @kishikawakatsumi!
Thank you to @ikesyo and @giginet for improvements to the codebase and the infrastructure.
Thank you to @blender, @mdiep, and @ikesyo for reviewing pull requests!
- Resiliency towards
-
v0.31.0 Changes
September 24, 2018🍱 ⚠️ Carthage will only consider targets that support
archive
action .(#2507 & #2515 ) ⚠️
🍱 ⚠️ Carthage does not support Xcode 6 anymore (#2561) ⚠️
🍎 ⚠️ Carthage source only builds on Xcode 9.4, thus requiring macOS High Sierra ⚠️🛠 Fixed
- 👍 Ignore targets that don't support
archive
(#2507). Thanks @chuganzy ! - 🏗 Watch OS targets won't build in Xcode 10 (#2561). Thanks @giginet !
- 🛠 Fix SemVer parsing with too many dots (#2518). Thanks @marcoconti83 !
- 🛠 Fix timeout in carthage version check (#2546). Thanks @Sebastian-Hojas !
➕ Added
- 🏗 Symlink the Build folder for binary downloads (#2551). Thanks @jasonboyle !
- Implement
carthage validate
to validate the correctness of the Cartfile.resolved (#2523). Thanks @jasonboyle ! - ➕ Add support for .xz archives (#2548). Thanks @carolanitz !
👌 Improved
📚 Thank you to @3lvis (#2524), @brentleyjones (#2537), @sgl0v (#2556), @martnst (#2563) for improvements to the documentation!
Thank you to @ikesyo (#2520, #2522, #2535, #2527, #2538, #2574, #2571) for improvements to the code base!
Thank you to @ikesyo @jdhealy (#2510) for improving the infrastructure!Thank you to @mdiep @jdhealy @ikesyo @blender for reviewing pull requests!
- 👍 Ignore targets that don't support
-
v0.30.2-beta.1
July 20, 2018