News

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!

Splash

Swift

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):Multiline literals
  • SE-0148 (Generic Subscripts)
  • SE-0169 (Improve Interaction Between private Declarations and Extensions)
  • SE-0156 (Class and Subtype existentials)
  • SE-0161 (Smart keypaths: better key-value coding for Swift)
  • SE-0142 (Permit where clauses to constrain associated types)
  • SE-0160 (Limiting @objc inference) brings a new inspection allowing you to remove @objc attribute simply by pressing ⌥⏎: Remove @objc attribute intention

In addition, we’ve implemented SE-0111 (Remove type system significance of function argument labels) and SE-0034 (Disambiguating Line Control Statements from Debugging Identifiers) from Swift 3.

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.

Accuracy

We’ve significantly improved resolution accuracy in 2017.2.x updates with support for access modifiers and AnyObject/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 UIKit classes).

Mixed code

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:
mixed_code@2x
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.

C++ support

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:
Boost tests

Misc

  • Separate colors for method/function calls and declarations in Objective-C, C++ and Swift:Colors for declarations and calls
  • New Add/Remove explicit type intentions allow you to add or remove explicit types in variable declarations:Add/remove explicit type
  • Special gutter icons allowing you to run/debug/profile a single test and displaying the status of test execution:Test gutter icons

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!

Download AppCode 2017.3