Carthage v0.33.0 Release Notes

Release Date: 2019-04-03 // about 5 years ago
  • 🍎 ⚠️ 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 and simulator 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.
    • πŸ— 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 and clang 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 with FileManager.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 (often ssh:// or git:// 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
    • πŸ“¦ 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 of GIT_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!