Xcode 9.3 Beta 4 Release Notes
Total Page:16
File Type:pdf, Size:1020Kb
Xcode 9.3 beta 4 Release Notes Developer Xcode 9.3 beta 4 Release Notes XcodeAbout Xcode 9.39.3 beta 4 beta 4 Release Notes Supported Configurations Xcode 9.3 beta 4 requires a Mac running macOS 10.13.2 or later. SDK Versions Xcode 9.3 beta 4 includes SDKs for iOS 11.3, watchOS 4.3, macOS 10.13.4, and tvOS 11.3. Installation Xcode 9.3 beta 4 can coexist with previous versions of Xcode. Prerelease versions of Xcode are made available from developer.apple.com, packaged in a compressed XIP file. To install Xcode during the beta period, download the XIP file, double-click the file to expand it in place, then drag Xcode-beta.app to the Applications folder. The final release of Xcode 9.3 will be available in the Mac App Store. Previous versions of Xcode are available from developer.apple.com/downloads/more. Accessing Additional Developer Tools To launch additional developer tools, such as Instruments and FileMerge, launch Xcode-beta and select Xcode > Open Developer Tool. You can keep these additional tools in your Dock for direct access when Xcode isn’t running. Technical Support and Learning Resources Apple provides the following resources to support your development with Xcode: Apple Developer Forums. Participate in discussions about developing for Apple platforms and using developer tools. Bug Reporter. Report issues, enhancement requests, and feedback to Apple. Apple Developer website. Get the latest development information as well as technical documentation for Xcode. Xcode homepage. Get high-level information about the latest release of Xcode. Download current and beta Xcode releases. For help with using Xcode, use the built-in help by choosing Help > Xcode Help. Release Notes Updates Release notes are occasionally updated after a beta is distributed. The latest version can be found on the developer.apple.com/download. Revision: XC93B4 - RNV1 Copyright © 2018 Apple Inc. All rights reserved. Page 2 of 28 Xcode 9.3 beta 4 Release Notes XcodeDeprecation of macOS 32-bit9.3 support beta 4 Release Notes To prepare for a future release of macOS in which 32-bit software will no longer run without compromise, starting in macOS High Sierra 10.13.4 a user is notified on the launch of an app that depends on 32-bit software. The alert appears only once per app. Developers can use a new 64-bit testing mode in macOS 10.13.4 to test software for 64-bit compatibility. NOTE: It is strongly recommended that this mode is enabled only by developers or experienced IT administrators. To enable 64-bit mode: 1. Boot to Recovery OS by restarting your machine and holding down the Command and R keys at startup. 2. Launch Terminal 3. Execute the following command: nvram boot-args="-no32exec" 4. Restart the machine 64-bit test mode prevents 32-bit processes from launching. Launching an app that depends on 32-bit software results in a notification that the application can’t be opened. Other types of software may fail silently, such as 32-bit versions of Dashboard and WebKit plugins, preference panes, and background processes. Disable the test mode once the software is updated to work in 64-bit. To disable the test mode: 1. Boot to Recovery OS by restarting your machine and holding down the Command and R keys at startup. 2. Launch Terminal 3. Execute the following command: nvram boot-args="" 4. Restart the machine In future beta releases, 64-bit test mode may provide additional information for the developer to help test and qualify software. Xcode changes for deprecation of macOS 32-bit support Removed the 32-bit option from the Architectures build settings UI. (35517385) Building for 32-bit architecture on macOS now emits a warning. (35709244) Copyright © 2018 Apple Inc. All rights reserved. Page 3 of 28 Xcode 9.3 beta 4 Release Notes XcodeOther Deprecation and Removal9.3 Warnings beta 4 Release Notes The OpenGL ES Analyzer Instrument is no longer supported. It has been replaced by the GPU Frame Debugger in Xcode and will be removed in a future version of Instruments. (35104029) The Core Animation instrument and template have been deprecated in Instruments. The functionality previously under “Debug Options” has moved to Xcode, under “Debug > View Debugging > Rendering”. (22971414) ____________________________________________________________________________ Copyright © 2018 Apple Inc. All rights reserved. Page 4 of 28 Xcode 9.3 beta 4 Release Notes XcodeResolved in Xcode 9.3 9.3 beta beta 4 – IDE 4 Release Notes General Xcode 9.3 adds a new IDEWorkspaceChecks.plist file to a workspace’s shared data, to store the state of necessary workspace checks. Committing this file to source control will prevent unnecessary rerunning of those checks for each user opening the workspace. (37293167) Build System The new build system now supports all of the Product > Perform Action > Compile, Analyze, Preprocess, or Assemble operations for single-files. (31072405) Devices The yellow notification banner in the Devices and Simulators Window will no longer appear at the bottom of the view instead of the top. (35550829, 37324024) Core Data The Core Data data model editor now correctly handles fetch index elements that reference inherited properties that are more than one degree of inheritance away from the entity that contains the fetch index. Previously, fetch index elements that referenced a property from an entity more than one degree of inheritance away would be treated as empty expression elements. (37151543) Copyright © 2018 Apple Inc. All rights reserved. Page 5 of 28 Xcode 9.3 beta 4 Release Notes XcodeKnown Issues 9.3in Xcode 9.3 beta beta 4 – IDE 4 Release Notes Interface Builder Using a color from an asset catalog in the large title text attributes of a UINavigationBar results in a runtime exception. (35645022) Playgrounds Selecting text contained in rendered markup in the Find Navigator may not work as expected. (36382602) Workaround: Choose “Editor > Show Raw Markup” before selecting the text. Testing On macOS 10.13.3, running UI tests multiple times during the same session may eventually fail. (36269027) Workaround: When running UI tests using Xcode, periodically relaunch Xcode or run a smaller subset of tests. When running tests using xcodebuild, run a smaller subset of tests. Alternatively, upgrade to macOS 10.13.4 Beta. Build System When an .xcconfig file contains multiple assignments of the same build setting, later assignments using $(inherited) will inherit from earlier assignments when using the new build system. The old build system discards all except the last assignment. This can cause the evaluated result to be different if $(inherited) is used in the value. You can enable a setting to emit a warning if any of these cases are found by running defaults write com.apple.dt.XCBuild EnableCompatibilityWarningsForXCBuildTransition YES. (37833468) Instruments The “Energy Log” instrument doesn’t work for iPhone X and iPhone 8, as they don’t provide the required data. (36569629) Profiling iOS framework unit tests works only for the Release configuration. (26883826) Workaround: Modify the scheme’s Test option to use the Release build configuration. 1. Product -> Scheme -> Edit Scheme… 2. Select the Test tab. 3. Change the Build Configuration to be Release. 4. Attempt to profile the framework unit test again. Copyright © 2018 Apple Inc. All rights reserved. Page 6 of 28 Xcode 9.3 beta 4 Release Notes XcodeDevices 9.3 beta 4 Release Notes Xcode may fail to capture a screen shot from an attached device. (36632000) The Connect via Network checkbox may become unchecked when first enabling network development for a device. (36797900) Workaround: Check the checkbox again. Server When starting Xcode Server, an alert may appear asking to provide the passphrase to access the xcsd keychain. (37795722) Workaround: Enter the passphrase which is stored in /Library/Developer/XcodeServer/SharedSecrets/XCSDKeychainSharedSecret. Copyright © 2018 Apple Inc. All rights reserved. Page 7 of 28 Xcode 9.3 beta 4 Release Notes XcodeNew in Xcode 9.3 beta 4 –beta Swift Compiler 4 Release Notes Swift Compiler Swift now supports conditional compilation based on available modules using canImport() with an argument that is the name of a module that may not be present on all platforms. This condition tests whether it’s possible to import the module, but doesn’t actually import it. If the module is present, the platform condition returns true; otherwise, it returns false. (SE–0075) #if canImport(UIKit) <module-specific code> #endif Swift supports a new platform condition targetEnvironment with a single valid argument simulator. Conditional compilation of the form #if targetEnvironment(simulator) can now be used to detect when the build target is a simulator. The Swift compiler will attempt to detect, warn and suggest the use of targetEnvironment(simulator) when evaluating platform conditions that appear to be testing for simulator environments indirectly, via the existing os() and arch() platform conditions. (SE–0190) Swift Standard Library Instances of IndexDistance associated type in the Swift standard library have been replaced by the concrete type Int. Algorithms that currently constrain IndexDistance to Int in their where clause, and algorithms that use IndexDistance within the body of a method, are supported by a deprecated typealias for IndexDistance in an extension on Collection. (SE–0191) Copyright © 2018 Apple Inc. All rights reserved. Page 8 of 28 Xcode 9.3 beta 4 Release Notes XcodeResolved in Xcode 9.3 9.3 beta beta 4 – Swift Compiler 4 Release Notes Swift Standard Library Reconciled APIs between the multiple forms of unsafe pointers: UnsafePointer, UnsafeMutablePointer, UnsafeRawPointer, UnsafeMutableRawPointer, UnsafeBufferPointer, UnsafeMutableBufferPointer, UnsafeRawBufferPointer, and UnsafeMutableRawBufferPointer. Functionality previously only available in some interfaces are now available in all the relevant interfaces. (SE–0184) The changes are additive with the following exceptions: deallocate(capacity:) and deallocate(bytes:alignedTo:) are replaced by deallocate().