On January 28, 2013, Apple released a new version (4.6) of its integrated development environment known as Xcode. The new IDE includes software development kits for both OS X 10.8 Mountain Lion and iOS 6.1. Xcode 4.6 will run on OS X 10.8 Mountain Lion, and on OS X 10.7 Lion.
Xcode is distributed as a single application bundle, which is a departure from previous versions. According to the release notes (PDF), some of the new features found in this version include:
- Support for iPad mini and iPad with Retina display (4th generation).
- Updates to the Apple LLVM compiler and Objective-C language:
- New compiler warnings that aid in finding subtle behavioral bugs when using ARC and weak references.
- Support for the C++11 features “user defined literals” and “unrestricted unions”.
- Advanced optimization to merge disjoint stack objects and reduce the size of allocated stack memory.
- The Typed-Based Alias Analysis (TBAA) code generation optimization is enabled by default. Previously this behavior was explicitly enabled by passing -fstrict-aliasing to the compiler. It can be disabled by passing -fno-strict-aliasing, or using the matching Xcode build setting.
- Support for Microsoft-style inline assembly for i386 and x86_64.
- otool has been enhanced to support disassembly of Intel AVX instructions.
- otool can now precisely decode all instructions and skip over data entries in text segments.
- The static analyzer now supports deeper cross function analysis of C++ and Objective-C code.
- Updates to the LLDB debugger:
- Ability to read metadata from the Objective-C runtime.
- Improved support for stepping over inlined functions Prints function argument information in backtraces by default.
- Supports “thread return,” temporary breakpoints, and a variety of aliases to add common shortcuts from GDB.
- Elements of NSArray and NSDictionary objects can now be inspected in the Xcode debugger.
- Many bug fixes and stability improvements.
The new features in Xcode 4.6 are enticing, but as with any major change in your development environment, you will likely want to do some testing before you commit to a complete adoption of the new IDE.