AppCode 2017.3: Swift 4, Xcode 9.x support, improved code analysis in mixed code, faster incremental builds, lots of resolution improvements and even more!
AppCode 2017.3 is here and you know what to do! Still thinking? Then read on to learn about all the new features including Swift 4 support, major resolution improvements for Swift and mixed code, together with improved incremental build performance, new intentions and more!
Swift 4 support
We’re done implementing Swift 4 support in our parser and resolution engine. This work was started immediately after the 2017.2 release, and some of the Swift 4 features were delivered in 2017.2.x updates. This release completes all of the proposals that could potentially affect AppCode functionality:
- SE-0168 (Multiline String Literals) and SE-0182 (String Newline Escaping):
- SE-0148 (Generic Subscripts)
- SE-0169 (Improve Interaction Between
privateDeclarations and Extensions)
- SE-0156 (Class and Subtype existentials)
- SE-0161 (Smart keypaths: better key-value coding for Swift)
- SE-0142 (Permit
whereclauses to constrain associated types)
- SE-0160 (Limiting
@objcinference) brings a new inspection allowing you to remove
@objcattribute simply by pressing
As usual, we have more work to do on several specific IDE features (such as completion implementation for
keyPaths and some others), and we plan to work on them in future 2017.3.x updates.
We’ve significantly improved resolution accuracy in 2017.2.x updates with support for access modifiers and
AnyClass in Swift. AppCode 2017.3 continues this direction bringing the correct resolve of nested associated types and eliminating the major resolution problem for variables/properties and methods having the same name (a typical case for some
Proper implementation of SE-0086 (Drop NS Prefix in Swift Foundation) included in this release brings long-awaited fixes for false Parameter type mismatch… warnings and errors shown in editor for mixed Objective-C/Swift code:
Moreover, AppCode now correctly resolves initializers of classes written in Objective-C and used in Swift code. This fix removes tons of ambiguities in completion, navigation and code analysis.
Build performance and Xcode 9 support
For a long time, developers have reported a problem with incremental builds in AppCode being much slower than in Xcode.
In this release, we have finally found the right approach to dealing with the Xcode build system, which makes the build time the same as it is Xcode, when there are only a few changes in the code. Besides, all major tasks needed for Xcode 9.x support are also finished.
AppCode 2017.3 delivers all the latest C++ language support improvements implemented by our colleagues on the CLion team. Some of the most important ones includes better list initialization handling with lots of fixes for false warnings and errors in code analysis, and name lookup improvements.
Moreover, this release brings better support for JUCE library, which is frequently used for cross-platform audio development, and full support for Catch and Boost.Test test frameworks in AppCode, which includes proper integration into AppCode’s test runner and code editor, and separate run configurations for these frameworks:
- Separate colors for method/function calls and declarations in Objective-C, C++ and Swift:
- New Add/Remove explicit type intentions allow you to add or remove explicit types in variable declarations:
- Special gutter icons allowing you to run/debug/profile a single test and displaying the status of test execution:
That’s it! Explore all the new features in detail on our website and start your 30-day free evaluation to try them right now!