Here’s a short list of things that aren’t (or probably aren’t) going to be in Swift 3, that I was hoping to see.
Fixed Ranges, Striding, and Range Operators. This splintered down into a series of I believe four separate proposals of which only the first one (improving floating point math) has gotten into review. A lot more work to be done here. Plus extending striding to collections.
Disambiguating SPM Naming Conflicts. My idea would be to come up with a way to allow multiple packages to share the same simple names (like “JSON Parser”) and differentiate them based on their source repo. Swift names should be simple and concise. Namespacing modules (“MySwiftStringUtilityCollection”) is very unSwift so overlap is not just likely, it’s already happening.
The language would adjust to add
import as as well, so same-named modules (or modules with difficult names, or submodules) could be pulled in with simpler access from code.
Most of this depends on the overworked and overwhelmed build team, plus it would then require a Swift Evolution proposal for the “import as” component. There are already bug reports of package conflicts in the wild and this would introduce a simple way to add resolution.
Introducing Build Configuration tests for Simulator/Device targets. I gave up on even trying to do
#if debug (if one is going to do the configuration tests, there doesn’t seem to be a large enough middle group that wants a preconfigured simple test) but I think
#if target(device) (vs simulator/emulator) is doable and useful. Backburnered, along with any platform tests (Windows, Linux, Unix, Apple) until there’s time.
Method Cascades. Dart-like for the win. Postponed until after 3.x at a minimum. It’s language additive, which makes it less critical for 3.
Interpolated String Formatting. Brent Royal Gordon started this off and then it went into limbo. I think it’s important to be able to not just add
\(aFloat) into strings but be able to do some kind of inline safe formatting about the number of decimal places, leading zeros, etc.
Core Error. Not hugely popular but not entirely dead, I thought it would be nice to have a built-in basic “default error” to throw that included source site (where the error was thrown) and an optional customizable string and/or dictionary. This wouldn’t replace any other errors but it would provide a convenient error for anyone building scripts and playgrounds (or, let’s be honest, simple apps) where you didn’t want to build something more carefully and extensive with individual error condition cases.
Macros. Didn’t happen. Won’t happen for a while.
Decimal Numbers. Ditto.
Duplicating and modifying immutable structs. Brought up “
with” on list, showed an implementation, it got discussed, went nowhere.
Final by default for Swift-sourced classes (would not apply to anything from ObjC), where you enable subclassing rather than disable it. Seemed to split down between Swifties (for it), ObjCHeads (against it).
A Result Type for use in completion blocks, rather than the data, status, error signature we currently have. Big war over
Result (specific use case, measurable benefit) and
Either (just a thing that could be built and used for this). I prefer
Intrinsic Member Collection for Enumerations. There’s a pull request but that’s about it.
Expanding Cocoa Touch Defaults. The idea was to take a cue from the better-imports from ObjC (SE-0005) and extend the pruning and defaults to other common classes. This isn’t a Swift Evolution process but I have no contact point with whom to take it up with for Foundation and UIKit. (initial unreviewed list), and I’m not yet satisfied with which defaults I actually want to push on.
There’s actually two more items on my list that just might squeak through:
Adding the Unfold Sequence. Lily’s SE-0094: Add sequence(initial:next:) and sequence(state:next:) to the stdlib in review to 5/23
sequence -> UnfoldSequence was part of SE-0045 and the only part of the proposal not to be accepted. After a spate of bikeshedding, I think the name sequence() was not hated, but it’s unclear whether this needs a new proposal (it’s getting kind of late to the party) or can be shoehorned in.
Evan Maloney’s end to the Strong Weak Dance. I was writing this up, and I checked the pull request and behold, it is now in the proposal queue as SE-0079. Still not sure this will go through but it would make coding a lot better.
Okay, that’s my (partial) list. What’s yours?