I’m happy to share that all of my open source Swift libraries have (finally) been updated for Swift 3. If you’ve been waiting for any of these final releases, you can now run pod update
or carthage update
and relax — sorry it took so long! I wrote about migrating to Swift 3 a few months ago and this post shares the final results of the process that I outlined in there.
New major releases
Each of my libraries have two new major releases — one for Swift 2.3 and one for Swift 3. This means if you were using version 3.x of a library, then the 4.0 release is for Swift 2.3 and the 5.0 release is for Swift 3. Semantic versioning is key here. These are major new releases to prevent breaking clients. This means pod update
won’t pull these versions automatically, but it should notify you that new releases are available. You’ll need to specify these new versions in your Podfile
(or Cartfile
).
This will allow you to update these libraries on your own time, without forcing you to migrate to Swift 3 immediately. However, note that all future development will be using Swift 3 or higher. I will not be maintaining Swift 2.3 versions — these are merely intermediate releases to help you migrate to Swift 3 according to your own project’s needs and timeline. New features and fixes will only be applied to the latest version of each library.
- JSQDataSourcesKit
- JSQCoreDataKit
- PresenterKit
- JSQWebViewController
- DefaultStringConvertible (Note: this library was not updated to Swift 2.3, only Swift 3.0)
Updating so many libraries is time consuming, but the branching model outlined in my previous post made it simple. Here’s the final git flow:
- The
swift2.3
branch is finished and ready - Squash and merge
swift2.3
intodevelop
- Merge
develop
intomaster
- Tag and release a new version for Swift 2.3
- Rebase the
swift3.0
branch ontodevelop
and resolve conflicts - The
swift3.0
branch is finished and ready - Squash and merge
swift3.0
intodevelop
- Merge
develop
intomaster
- Tag and release a new version for Swift 3.0
If the library was initially at version 2.0, here’s the gist of what this looks like:
v2 (Swift 2.2) v3 (Swift 2.3) v4 (Swift 3.0)
o------o--------------------o--------------------o--------------> develop/master
\ / /
o--- swift2.3 ---o /
\ /
o--- swift3.0 ---o
Deprecations
Also note that a few of my libraries have been deprecated, which I wrote about here. These libraries were no longer valuable in general, or no longer needed in Swift 3.
Contribute
If you find any bugs or have any questions, please send me a pull request or open an issue!