Giter Site home page Giter Site logo

Placement of `inout` about vapor HOT 16 CLOSED

vapor avatar vapor commented on April 27, 2024
Placement of `inout`

from vapor.

Comments (16)

shnhrrsn avatar shnhrrsn commented on April 27, 2024

We should absolutely update to fix this.

That said, I would like to formalize a guideline/timeline around when we update for breaking changes. Despite the warnings, everything compiles on the 03-01 snapshot where as any snapshot before 03-01 will result in a error error.

@qutheory/vapor:

  1. What timeframe is sufficient to expect/force everyone to have upgraded all of their environments? Currently we're at 10 days, is that enough?
  2. Would a snapshot+1 policy make sense, where if you don't upgrade by the snapshot following the breaking change, it's on you?
  3. Given the early stages of Vapor, should we just make these changes immediately upon release?

from vapor.

ketzusaka avatar ketzusaka commented on April 27, 2024

If we make that change were also incompatible with iOS and Swift 2.2 until the fall. We should probably do Swift version compiler checks.

from vapor.

tanner0101 avatar tanner0101 commented on April 27, 2024

Our goal is compatibility with Swift 2.2. So, if we want to get rid of those warnings then we should unfortunately do version checking.

from vapor.

tanner0101 avatar tanner0101 commented on April 27, 2024

@shnhrrsn Given the scope and early stage of Vapor, I think we are fine to be compatible with only the latest snapshots, and to require that everyone is running the latest ones.

I'd make our support requirements the following:

  • Latest Swift 2.2 Release Snapshot
  • Latest Development Snapshot

We should upgrade Travis CI to test these both.

from vapor.

czechboy0 avatar czechboy0 commented on April 27, 2024

I might be missing something, but what's the point of supporting 2.2 when only 3.0 contains SwiftPM, which is the only supported way to build Vapor? Even if you make it compatible with 2.2, nobody will use it with it.

from vapor.

ketzusaka avatar ketzusaka commented on April 27, 2024

@czechboy0 I was actually hoping we'd make it cocoapod/carthage compatible after Xcode 7.3 is released.

from vapor.

tanner0101 avatar tanner0101 commented on April 27, 2024

If Vapor doesn't work with Swift 2.2 when it's released that would be ridiculous. We will find a way.

from vapor.

czechboy0 avatar czechboy0 commented on April 27, 2024

I'm not saying there isn't a way, all I'm saying is that Swift 3 as a platform, not as a language, is the first milestone where Vapor even makes sense.

Maybe my misunderstanding comes from the expectations of where Vapor will run. My guess is that absolute majority will be on Linux servers, where SwiftPM is the only way to build/run Vapor. There really aren't that many Mac servers, where you'd have the luxury of having Xcode installed, so I don't see how CocoaPods/Carthage even makes sense for a serverside project.

Feel free to introduce a bunch of compile-time checks for 2.2, but for a project which won't be able to run on 2.2 (unless you introduce a bunch of converters from Package.swift to the aforementioned package managers for the sake of being able to run on a few Mac servers), and which is still in active development, already introducing legacy feels like a very bad idea to me, mostly because I don't understand who you're trying to enable to use Vapor who already can't use Swift 3.0-dev.

The way I understood it was that Vapor is a Swift 3.0/SwiftPM targetting project, meaning you can already run it on servers with Swift 3.0-dev (whichever platform). But I didn't know backwards compatibility to language versions which don't support SwiftPM was a goal.

from vapor.

tanner0101 avatar tanner0101 commented on April 27, 2024

Vapor shouldn't require SwiftPM if NSJSON gets fixed.

from vapor.

tanner0101 avatar tanner0101 commented on April 27, 2024

Even if we have to bundle things manually to work with Swift 2.2, even if we have to make a branch, we should do that. I think it would be a major disadvantage for Vapor to not work with the release version of Swift on Linux.

from vapor.

czechboy0 avatar czechboy0 commented on April 27, 2024

IMO Swift 2.2 on Linux won't be very useful without SwiftPM. But it's your call, "ifdef" away :)

from vapor.

tanner0101 avatar tanner0101 commented on April 27, 2024

Yeah, I think that was really stupid on Apple's part. But nothing we can do about that. :\

from vapor.

ketzusaka avatar ketzusaka commented on April 27, 2024

@czechboy0 It certainly won't be good to develop on, but I feel like we could build a package for apt-get or similar that runs in the swift2.2 runtime and wouldn't need SPM.

from vapor.

tanner0101 avatar tanner0101 commented on April 27, 2024

Exactly. I don't know what the schedule is like for Swift 2.2 release and Swift 3.0 release...I assume they would be at least 6 months apart. That's a lot of time to delay a 1.0.0 release.

from vapor.

czechboy0 avatar czechboy0 commented on April 27, 2024

I guess my question is: who are the people who will not be able to use 3.0-dev that we're optimizing here for? It's so easy to switch swift versions that I seriously doubt the effort to run on 2.2 forever is justified.

from vapor.

tanner0101 avatar tanner0101 commented on April 27, 2024

Vapor can't be production ready until it runs on a released compiler.

from vapor.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.