Xcode 8 includes everything you need to create amazing apps for iPhone, iPad, Mac, Apple Watch, and Apple TV. This radically faster version of the IDE features new editor extensions that you can use to completely customize your coding experience. New runtime issues alert you to hidden bugs by pointing out memory leaks, and a new Memory Debugger dives deep into your object graph. Swift 3 includes more natural and consistent API naming, which you can experiment with in the new Swift Playgrounds app for iPad.
Interface Builder — Accelerated
The Interface Builder design canvas has been thoroughly reengineered to make your work faster and provide greater control. See a live preview of exactly how your app will appear on any Apple device with full vibrancy. As you quickly switch between different devices to customize your UI for size classes, you will always see the same interface as your customers. Pan and zoom are incredibly fast, and you can even edit your interfaces when fully zoomed out for a bird's eye view of your storyboard.
This new feature reports issues that are identified automatically by Xcode as your app runs, tracking down hard-to-find bugs that may not have been noticed until your app was in the hands of users. The new Thread Sanitizer spots race conditions on data changes and other threading-related bugs. Inspect UI constraint problems using the updated View Debugger with even greater fidelity and visual accuracy, and get alerted to memory leaks that you can track down in the new Memory Debugger.
Swift 2 and 3
Up until Xcode 8, every version of Xcode was tied to a specific version of the Swift programming language. That is no longer true as of Xcode 8. Swift 3 introduces a slew of changes and a considerable number of these changes are breaking.
Projects created with Xcode 8 use Swift 3 by default. Fortunately, Xcode 8 includes a build setting that gives developers the ability to stick with Swift 2, Swift 2.3 to be precise.
This means that you can choose when you want to migrate a project to Swift 3. To configure a target for Swift 2.3, open the target's build settings and set Use Legacy Swift Language Version to Yes.
Xcode 8 also includes a migration tool that helps you migrate a project to Swift 3. I have had mixed results with the migration tool of Xcode 7. Swift 3 introduces many, many changes and I hope the migration tool has improved considerably when Xcode 8 is ready for release.
Developers spend an inordinate amount of time browsing and reading documentation. Good documentation goes a long way and Apple's documentation is excellent. Browsing the documentation is a different story.
This pain is now resolved in Xcode 8. The new documentation format looks gorgeous and the documentation browser is fast and easy to use. Apple also consolidated the documentation for its platforms, resulting in a much smaller memory footprint.
And, yes, documentation can look gorgeous. Take a look at these screenshots if you don't believe me
It goes without saying that I only covered a subset of what is new in Xcode 8. The next major release of Xcode is always something I look forward to. Developers spend so much time in their code editor and it is therefore understandable that they care about its evolution, both good and bad. What is your favorite feature of Xcode 8?