Hello community,

I'm happy to see that SE-0169 got accepted and that we've patched the issues of 
SE-0025. But it's been a difficult process. And I can't stop asking myself if 
it could have been avoided. The crux of the problem is that 
source-compatibility is now becoming a very strong requirement. But at the same 
time, Swift is still missing some very big systems: reflection, property 
behaviours, a concurrency paradigm. How can we continue to push Swift boldly 
forward with very little leeway to correct our mistakes?

Then I listened to the latest episode of the excellent [Swift Unwrapped 
podcast](https://spec.fm/podcasts/swift-unwrapped) where they talk about the 
access control "saga" and ask themselves the same questions as above. One 
interesting idea got my attention: JavaScript has a natural breeding ground for 
future language features with Babel. For those who don't know, it's a 
transcompiler that compiles bleeding-edge JavaScript into versions supported in 
browsers. Perhaps Swift could also benefit from a similar experimentation time 
for each new proposal.

Here's my rough idea:
The Swift compiler gains a new off-by-default `next` version triggerable with 
the `-swift-version next` flag.
All controversial proposals start their implementation in that version.
Once one of the poposals feels stable enough, it is brought into an official 
version.
Developers would be encouraged to try the `next` features while being warned 
that source compatibility on that version will *not* be garanteed.
As the vast majority of the Swift user base are still Apple platform 
developers, I think it would be important for the success of that strategy that 
the applications compiled with the `next` flag be accepted on the Apple stores 
or it will reduce the group of developers ready to play in this 
"breeding-group".

Any comments?

David.
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to