Thursday, November 14, 2024

Swift 6 now available with strict concurrency checking

Swift 6, now generally available, is a major release of the programming language and expands it to more platforms and domains beyond just Apple operating systems, which is what it was originally designed for.

It now offers strict concurrency checking, which helps developers find data races at compile time, which could lead to an app crashing, misbehaving, or corrupting user data. According to Apple, data races can be difficult to reproduce or debug because of the fact that they rely on the order of concurrent operations, and being able to check for them at compile time will enable developers to ensure they’re not present in an app. 

“Swift 6 marks the start of the journey to make data-race safety dramatically easier. The usability of data-race safety remains an area of active development, and your feedback will help shape future improvements,” the Swift development team wrote in a post

RELATED: Apple Intelligence announced at WWDC

Another benefit of this release is expanded platform support across new Linux distributions and Windows architectures. Swift 6 adds support for Debian, Fedora, and Ubuntu 24.04, and its toolchains are now available on arm64 architectures on Windows. According to the Swift development team, with this release the package manager now parallelizes builds across multiple cores on Windows, which can significantly improve build performance.

Swift 6 also adds support for fully static SDKs for Linux, which have no external dependencies and can be installed directly onto a system without installing any additional software.

This release also expands interoperability with C++, after bidirectional interoperability was first introduced in Swift 5.9. Now, Swift supports C++ move-only types, virtual methods, default arguments, and more standard library types, like std::map and std::optional. 

Additionally, when calling a C++ function or method that has some default argument values, Swift now uses those defaults instead of requiring you to explicitly pass an argument. 

Finally, Swift 6 includes a preview of Embedded Swift, which is a subset of the language for developing embedded applications. It creates small and standalone binaries that rely on generic specialization, which is ideal for platforms with tight memory constraints or in low-level environments. 

Other new features in this release include the ability to specify the type of errors that functions throw, non-copyable types in the generics system, 128-bit integer types, a new debugging macro, and more. 

“Swift 6 is the culmination of countless contributions from members across the Swift community, and it marks a decade of building this incredible language, ecosystem, and community together,” the Swift development team wrote. 

Related Articles

Latest Articles