In iOS 13 where a change in NSData’s description format, from a full hexadecimal string to a summarised form, breaks push notification workflows that relied on string manipulation of deviceToken in application(_:didRegisterForRemoteNotificationsWithDeviceToken:).
Development
Thread Sanitizer for Swift on Linux
Swift 5.1 introduces Thread Sanitizer on Linux, enabling runtime detection of data races in multithreaded code, which can cause unexpected behaviour or memory corruption despite Swift's single-threaded safety guarantees.
Development
Formatter
The article explores the Formatter class in Swift’s Foundation framework, essential for transforming data into human-readable formats, addressing complexities like user language, calendar, and currency preferences.
Development
CAEmitterLayer
The article introduces CAEmitterLayer for creating a confetti effect on iOS, explaining its role as a high-performance particle system within the Quartz Core framework for rendering effects like confetti, fire, or rain.
Development
CoreGraphics Geometry Primitives
The article provides a concise guide to Core Graphics geometry types in Swift, essential for Quartz 2D drawing on Apple platforms, covering CGFloat, CGPoint, CGVector, CGSize, and CGRect, with iOS using a top-left origin and macOS a bottom-left origin by default.
Development
Guided Access
Guided Access, introduced in iOS 6, is an accessibility feature that locks an iOS app to prevent unintended exits, configurable to disable specific screen regions, hardware buttons, motion, keyboards, touch, or set time limits, activated via triple-clicking the Home/Side button or Siri.
Development
Swift 5 Released!
Swift 5.0 marks a major milestone with ABI stability on Apple platforms, integrating the Swift runtime into macOS, iOS, tvOS, and watchOS for smaller apps and better performance.
Development
UTF-8 String
Swift 5 changes String's preferred encoding from UTF-16 to UTF-8 for better performance in modern computing, like server-side work and C interop, while keeping efficient Objective-C bridging.
Development
LocalizedError, RecoverableError, CustomNSError
Swift’s error handling works well with Cocoa’s NSError system. Swift 3 added three little-known protocols to make this link even better.
Development
JavaScriptCore
The article explores the JavaScriptCore framework, which integrates WebKit’s JavaScript engine into Swift apps, allowing developers to execute JavaScript code and interoperate with Swift.
Development
Behind the Proposal, SE-0200 Enhancing String Literals Delimiters to Support Raw Text
SE-0200 introduces custom delimiters for Swift string literals in Swift 5, allowing raw text that ignores escape sequences unless adjusted with matching pound signs, blending features from languages like Rust while retaining Swift's interpolation.
Development
Swift 5.1 Release Process
Swift 5.1 aims to achieve module stability for the language. On Apple platforms, it keeps binary compatibility with Swift 5.0 and future releases because the ABI is now stable.
Development
Evolving Swift On Apple Platforms After ABI Stability
Swift 5.0 achieves ABI stability on Apple platforms, allowing apps to use the OS-provided Swift runtime instead of bundling it, which reduces download sizes and enables better performance through deeper integration.
Development
ABI Stability and More
Swift 5 achieves ABI stability on Apple platforms, ensuring binary compatibility for apps and libraries across future Swift versions without needing to embed the Swift runtime in app bundles.
Development
Introducing the sourcekitd Stress Tester
Sourcekitd powers essential editor features like code completion and refactoring in Xcode and SourceKit-LSP, handling both syntactic and semantic requests for Swift files.
Development
Swift 5 Exclusivity Enforcement
Swift 5 turns on runtime checks for exclusive access to memory by default in release builds.
Development
Dictionary Services
The article explores dictionary-related APIs in Swift across Unix, macOS, and iOS, highlighting their role in features like spell check and semantic analysis.
Development
Bundles and Packages
The article clarifies the distinction between bundles and packages on Apple platforms, often confused due to overlapping use cases.
Development
CharacterSet
The article introduces CharacterSet, a Foundation type in Swift for manipulating Unicode scalar values, distinct from Set<Character> despite its name, as it conforms to the SetAlgebra protocol rather than storing Character values directly.
Development
Locale
Internationalisation (i18n) means building your app so it can support many regions and languages. Localisation (l10n) means actually translating and adapting it for a specific market.
Development
FileManager
On Apple platforms, the FileManager class in the Foundation framework provides a robust abstraction for file system operations like creating, reading, moving, copying, and deleting files and directories, using paths or file URLs.
Development
DateComponents
The article introduces DateComponents, a versatile Foundation type in Swift for representing either a specific calendar date or a duration of time, emphasising its use over hardcoded time intervals like 60 * 60 * 24 for a day.
Development
REPL Support for Swift Packages
The swift run command now includes a --repl option. This lets you start the Swift REPL and import library targets from a package.
Development
How Mirror Works
Swift provides runtime type inspection through the Mirror API. This allows developers to examine arbitrary values and traverse object graphs without prior knowledge of types at compile time.
Development
Swift 5.0 Release Process
Swift 5.0 aims to achieve ABI stability to enable a stable runtime for operating systems, with module stability as a key focus that may land in this release or a later 5.x update.