[swift-build-dev] [swift-evolution] [Review] SE-0158 Package Manager Manifest API Redesign
rballard at apple.com
Mon Mar 13 22:56:38 CDT 2017
> https://github.com/apple/swift-evolution/blob/master/proposals/0158-package-manager-manifest-api-redesign.md <https://github.com/apple/swift-evolution/blob/master/proposals/0158-package-manager-manifest-api-redesign.md>
Thanks for taking the time to read the proposal. My replies are inline:
> On Mar 13, 2017, at 3:41 PM, Maxim Veksler <maxim at vekslers.org> wrote:
> Hi guys,
> Sorry for the late repose, Hope I haven't missed the review window.
> I've read through the proposal for the versioning, and I feel that there is an over complication there. I would suggest something like this for specifying the version:
> If you want to have latest version of SwiftyJSON (you don't even care about when major version:
> .package(url: "http://github.com/SwiftyJSON <http://github.com/SwiftyJSON>")
This is not a safe thing to do and we don't intend to support it at all. New major semantic versions of a package aren't necessarily compatible without requiring clients of that package to adapt to them. If you fail to specify the major version that you're compatible with, your package might work today but fail to build tomorrow (when a new major version of SwiftyJSON is released). And, if your package has clients, they're now broken too, etc.
> If you want to have latest of major 1
> .package(url: "http://github.com/SwiftyJSON <http://github.com/SwiftyJSON>", from: "1")
> if you want to have latest of minor 1.5
> .package(url: "http://github.com/SwiftyJSON <http://github.com/SwiftyJSON>", from: "1.5)
> if you want to specify exact 1.5.2 (but the author might choose to be maintaining 1.5.2-patch1, 1.5.2-patch2 and co..)
> .package(url: "http://github.com/SwiftyJSON <http://github.com/SwiftyJSON>", from: "1.5.2")
> Adopting this structure I think removes the need to have a uptoNextMajor & uptoNextMinor which behavior I find not intuitive.
What you're suggesting here is not equivalent to upToNextMajor and upToNextMinor, because it doesn't allow you to fully specify a minimum version (including the minimum patch version required) while still allowing a flexible upper bound for the major or minor version.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-build-dev