loading...

Swift 5. What is new?

dimpiax profile image Dmytro Pylypenko ・1 min read

Swift 5 is ABI stable, which gives direct compatibility with OS without additional layers and backward compatibility between different versions of Swift, beginning from 5.0 version.

Also the new version has a lot of improvements:

  1. Flattened try? with Optional type
    No more double guard.
    pic_1

  2. Raw strings
    Gives one of the possibility to write a string without escaping characters inside. It's very feature for writing raw RegEx expressions in a clean way.

    pic_2

    If you need to embed a variable inside a raw string, you must add hash symbol after backslash: #"(\\|\#(variable))"#

  3. String interpolation
    Declaration can be flexible and behave on your own.
    For this, extend the protocol StringInterpolation with own function:
    pic_3

  4. No recursion inside computed properties
    Avoid additional layer for computations, and have it inside a closure.

pic_4


It was a part of described features, more is there: https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_beta_release_notes/swift_5_release_notes_for_xcode_10_2_beta

Article on Medium: https://medium.com/@dimpiax/swift-5-what-is-new-examples-fbb64d525486

Posted on by:

dimpiax profile

Dmytro Pylypenko

@dimpiax

I have great experience in IT over 12 years: front / back - ends, mobile, system administration and deployment cycle. I implement effective and great software products.

Discussion

markdown guide
 

Swift 1.x to 2.0 was a major change. (I'd call 1.x alpha quality.)

Swift 2.0 to 3.0 was also a major change. (I'd call 2.0 beta quality.)

Swift 3.0 to 4.0 to 4.1 to 4.2 to 5 all seem like minor fit-and-finish changes. To me, this is a good thing. The language is settled, mature. Literature on 3.0 is probably entirely or nearly entirely applicable to 5.

 

I think there will be a lot to love about Swift 5, I am hoping that they stay true to the commitment to include the runtime in OS' so it is no longer part of app installs.