Comments (16)
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:
- What timeframe is sufficient to expect/force everyone to have upgraded all of their environments? Currently we're at 10 days, is that enough?
- Would a snapshot+1 policy make sense, where if you don't upgrade by the snapshot following the breaking change, it's on you?
- Given the early stages of Vapor, should we just make these changes immediately upon release?
from vapor.
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.
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.
@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 SnapshotLatest
Development Snapshot
We should upgrade Travis CI to test these both.
from vapor.
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.
@czechboy0 I was actually hoping we'd make it cocoapod/carthage compatible after Xcode 7.3 is released.
from vapor.
If Vapor doesn't work with Swift 2.2 when it's released that would be ridiculous. We will find a way.
from vapor.
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.
Vapor shouldn't require SwiftPM if NSJSON gets fixed.
from vapor.
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.
IMO Swift 2.2 on Linux won't be very useful without SwiftPM. But it's your call, "ifdef" away :)
from vapor.
Yeah, I think that was really stupid on Apple's part. But nothing we can do about that. :\
from vapor.
@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.
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.
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.
Vapor can't be production ready until it runs on a released compiler.
from vapor.
Related Issues (20)
- Query decoding broken in 4.90 HOT 3
- vapor and toolbox compile error on arch linux HOT 1
- double slash in URL no longer matches route handlers HOT 3
- URI semantics are broken HOT 1
- commùit
- Double slash in URLs still breaks route matching with variable parts in vapor 4.92.0 HOT 2
- Trying to build on Ubuntu 20 with swift run and getting Building for debugging... error: emit-module command failed due to signal 9 HOT 2
- Unable to shutdown server HOT 1
- Title
- Vapor URLQueryContainer no longer supports valueless query parameters HOT 4
- Swift Vapor-Save records in Mysql JSON data type during mapping with swift get error- Could not convert MySQL data to String: <MYSQL_TYPE_JSON HOT 6
- Large, streamed request body may result in noSignalReceived preconditionFailure crash HOT 6
- Websocket shouldUpgrade() fail causes empty reply from server HOT 4
- Cannot setup a route returning `[Int: String]` HOT 7
- Log actual port when it's picked by the OS
- 'Flag' URL Query params don't decode into structs HOT 3
- HEAD response should allow non-zero Content-Length HOT 2
- Authentication Cache + Storage crash application HOT 2
- Default to `HTTPClient.shared` when possible HOT 1
- URLFormEncoder does not escape all reserved characters HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vapor.