OCASA News | Empowering Students with Every Story

What’s new in swift 4.2?

Written by Abhay Dave | Jun 7, 2018 7:06:49 AM

Enhancements and Performance Upgrades

Swift 4.2, introduced at WWDC 2018, brings several enhancements, making development more efficient and optimized. With a focus on source compatibility, improved debugging, and runtime optimizations, Swift 4.2 is a step forward for developers.

WWDC18

Source Compatibility: One Compiler, Three Modes

Swift 4.2 maintains compatibility with previous Swift versions while introducing refinements:

Source Compatibility

  • Swift 3: Accepts Swift 3 code built with Xcode 8
  • Swift 4: Accepts Swift 4 code built with Xcode 9.3
  • Swift 4.2: Works like Swift 4 but integrates new Swift-related SDK improvements

Faster Swift Debug Builds

Xcode 10 significantly improves build speeds compared to Xcode 9, making debugging and development more seamless.

Compilation Mode vs. Optimization Level

  • Stop using Whole Module Compilation for Debug builds – It was a temporary workaround but is now unnecessary
  • Use Incremental Compilation – Boosts debugging efficiency

swift debug builds

Compilation Mode versus Optimization Level

compilation maode

Stop Using Debug with Whole Module Compilation

Module compilation

Using Whole Module for Debug builds was a stopgap to improve builds Whole Module prevents incremental builds
Use Incremental for Debug builds!

Runtime Optimizations

// Calling Convention: “Owned” (+1 retain)class X { … }func caller() {// ‘x’ created with +1 reference countlet x = X()}foo(x)func foo(x: X) {let y = x.value// Calling Convention: “Owned” (+1 retain)class X { ... }func caller() {// ‘x’ created with +1 reference countlet x = X()foo(x)}func foo(x: X) {let y = x.value...// release x}

Collection of EnumCases

// SE-0194 Derived Collection of Enum Casesenum Gait {  case walk  case trot  case canter   case gallop  case jog  static var allCases: [Gait] = [.walk, .trot, .canter, .gallop]}for gait in Gait.allCases {  //This code will never print “jog”!  print(gait)}// SE-0194 Derived Collection of Enum Cases with using CaseIterableenum Gait: CaseIterable {  case walk  case trot  case canter   case gallop  case jog}for gait in Gait.allCases {  print(gait) // It will print all cases}

Conditional Conformance

Inconsistent Behavior in Swift 4.0

Why Aren’t All Arrays Equatable?

Conditional Conformance

Conditional Conformance Allows Composition

Synthesized Equatable and Hashable

// SE-0185 Synthesizing Equatable and Hashable Conformancestruct Restaurant: Equatable {    let name: String   let hasTableService: Bool   let kidFriendly: Bool}// SE-0185 Synthesizing Equatable and Hashable Conformancestruct Restaurant: Hashable {    let name: String   let hasTableService: Bool   let kidFriendly: Bool}// Synthesizing Conditional Equatable and Hashableenum Either<Left, Right> {    case left(Left)   case right(Right)}extension Either: Equatable where Left: Equatable, Right: Equatable { }extension Either: Hashable where Left: Hashable, Right: Hashable { }// This just works!var mySet = Set<Either<Int, String>>()

Why Swift 4.2 Matters for Mobile App Development

Swift 4.2's performance improvements and language refinements make it a powerful tool for Mobile App Development Services developers. Faster debugging, better memory management, and streamlined enum handling allow teams to build scalable, high-performance applications with fewer errors and improved maintainability.

Additional Enhancements in Swift 4.2

Beyond these core updates, Swift 4.2 introduces several refinements that further enhance productivity:

  • Random Number Generation: A new native API eliminates the need for third-party libraries
  • Warning Suppression for Unused Results: Helps developers identify potential code issues
  • Improved Hashing Algorithm: Makes custom types work more efficiently in dictionaries and sets

These improvements make Swift 4.2 a must-have upgrade for developers looking to enhance their coding efficiency and performance.