{"id":37016,"date":"2022-09-12T18:22:46","date_gmt":"2022-09-12T22:22:46","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=37016"},"modified":"2022-10-13T16:23:20","modified_gmt":"2022-10-13T20:23:20","slug":"xcode-14","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2022\/09\/12\/xcode-14\/","title":{"rendered":"Xcode 14"},"content":{"rendered":"<p><a href=\"https:\/\/developer.apple.com\/documentation\/xcode-release-notes\/xcode-14-release-notes\">Apple<\/a>:<\/p>\n<blockquote cite=\"https:\/\/developer.apple.com\/documentation\/xcode-release-notes\/xcode-14-release-notes\">\n<p>Xcode 14 includes Swift 5.7 and SDKs for iOS 16, iPadOS 16, tvOS 16, watchOS 9, and macOS Monterey 12.3. The Xcode 14 release supports on-device debugging in iOS 11 and later, tvOS 11 and later, and watchOS 4 and later. Xcode 14 requires a Mac running macOS Monterey 12.5 or later.<\/p>\n<\/blockquote>\n\n<p>As with last year, the release version of Xcode removes the beta SDK for this fall&rsquo;s macOS update.<\/p>\n\n<p><a href=\"https:\/\/twitter.com\/XcodeReleases\/status\/1569379866017148929\">Xcode Releases<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/XcodeReleases\/status\/1569379866017148929\">\n<p>Xcode 14 is identical to the release candidate last week.<\/p>\n<\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2022\/09\/12\/swift-5-7\/\">Swift 5.7<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2022\/09\/01\/xcode-cloud-subscriptions-now-available\/\">Xcode Cloud Subscriptions Now Available<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2022\/07\/08\/xcode-14-swift-package-plug-ins\/\">Xcode 14: Swift Package Plug-ins<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2022\/06\/24\/xcode-14-high-sierra-and-later\/\">Xcode 14: High Sierra and Later<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2022\/06\/09\/xcode-14-announced\/\">Xcode 14 Announced<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2021\/09\/14\/xcode-13-rc\/\">Xcode 13 RC<\/a><\/li>\n<\/ul>\n\n<p id=\"xcode-14-update-2022-10-10\">Update (2022-10-10): <a href=\"https:\/\/twitter.com\/jessegrosjean\/status\/1570044284069416960\">Jesse Grosjean<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/jessegrosjean\/status\/1570044284069416960\">\n<p>Love the idea of showing code structure while scrolling, but I&rsquo;m having a hard time getting used to the reality of all the flickering. Anyone else have that problem? Did you get used to it?<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/twitter.com\/jckarter\/status\/1570130835843743744\">Joe Groff<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/jckarter\/status\/1570130835843743744\">\n<p>One nice touch with the Xcode sticky headers is that it also rolls up multi-line function declarations into the header &#x1F44F;&#x1F3FB;<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/twitter.com\/edwardsanchez\/status\/1570168643962699777\">Ed Sanchez<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/edwardsanchez\/status\/1570168643962699777\">\n<p>In Xcode 14, if you select a block of text and type <code>{<\/code>, it embeds the block in a closure and puts the cursor in the beginning of the closure so you can define it. Works great for SwiftUI!<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/twitter.com\/natpanferova\/status\/1571389539587067904\">Natalia Panferova<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/natpanferova\/status\/1571389539587067904\">\n<p>In Xcode 14 optional parameters don&rsquo;t get autocompleted by default. And I only realized after watching the <a href=\"https:\/\/www.youtube.com\/watch?v=tYBZ8AVH0Q0\">overview by @seanallen_dev<\/a> that we can still get all the parameters by holding the option key or get only some by starting to type their names.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/apple-dev.groups.io\/g\/xcode\/message\/1496\">Leo<\/a>:<\/p>\n<blockquote cite=\"https:\/\/apple-dev.groups.io\/g\/xcode\/message\/1496\"><p>Is it just me - or Xcode 14 is simply unusable at this point? Because new <code>IBOutlet<\/code> properties are not recognized in Interface Builder.<\/p>\n<p>(Outlets created in pre-14 Xcode versions do appear in Xcode 14 but with a warning sign  with a tooltip claiming that outlet doesn&rsquo;t exist).<\/p><\/blockquote>\n\n<p><a href=\"https:\/\/twitter.com\/krzyzanowskim\/status\/1578336086526693376\">Marcin Krzyzanowski<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/krzyzanowskim\/status\/1578336086526693376\"><p>It&rsquo;s been many years since I don&rsquo;t understand what any of the options meant and the only appropriate action is &ldquo;Force Quit&rdquo;<\/p><\/blockquote>\n\n<p><a href=\"https:\/\/twitter.com\/nicklockwood\/status\/1578338154347909120\">Nick Lockwood<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/nicklockwood\/status\/1578338154347909120\"><p>The option you want is always &ldquo;use version on Disk&rdquo;, except that option doesn&rsquo;t actually work so you need to close and reopen the project anyway<\/p><\/blockquote>\n\n<p><a href=\"https:\/\/forums.swift.org\/t\/concurrency-is-broken-in-xcode-14-for-macos\/60294\/1\">asdf_bro<\/a>:<\/p>\n<blockquote cite=\"https:\/\/forums.swift.org\/t\/concurrency-is-broken-in-xcode-14-for-macos\/60294\/1\">\n<p>The following code works on iOS, but crashes on macOS. I believe this is because of SE-0338 combined with the lack of <code>@_unsafeInheritExecutor<\/code> in the macOS stdlib included with Xcode 14. In my view, Xcode 14 is unsafe to use for macOS until this is fixed (presumably when Xcode 14.1 includes the macOS 13 SDK with the 5.7 stdlib)<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/forums.swift.org\/t\/clarification-needed-on-unsafecontinuation-documentation\/57803\/20\">Ole Begemann<\/a>:<\/p>\n<blockquote cite=\"https:\/\/forums.swift.org\/t\/clarification-needed-on-unsafecontinuation-documentation\/57803\/20\"><p>If you don&rsquo;t mind my asking, was this bug known inside Apple before the final release of Xcode 14.0? Or were Apple folks surprised because nobody thought through the implications of matching the Swift 5.7 compiler with the Swift 5.6&rsquo;s standard library module interface? Or was it known but not considered as a serious issue?<\/p><p>[&#8230;]<\/p><p>I&rsquo;m asking because the compiler generating code that breaks concurrency invariants is a serious problem, and I&rsquo;m surprised by the lack of communication from Apple about it[&#8230;] In my opinion, something like this warrants a big red warning at the top of the release notes: &ldquo;Don&rsquo;t use Xcode 14.0 to build macOS targets that use concurrency!&rdquo;<\/p><\/blockquote>\n\n<p id=\"xcode-14-update-2022-10-13\">Update (2022-10-13): <a href=\"https:\/\/oleb.net\/2022\/xcode-14-mac-concurrency-bugs\/\">Ole Begemann<\/a> (<a href=\"https:\/\/twitter.com\/olebegemann\/status\/1580275716989427712\">tweet<\/a>):<\/p>\n<blockquote cite=\"https:\/\/oleb.net\/2022\/xcode-14-mac-concurrency-bugs\/\">\n<p>Mac apps built with Xcode 14.0 and 14.0.1 may contain concurrency bugs because the Swift 5.7 compiler can generate invalid code when targeting the macOS 12.3 SDK. If you distribute Mac apps, you should build them with Xcode 13.4.1 until Xcode 14.1 is released.<\/p>\n<p>[&#8230;]<\/p>\n<p>Third-party developers had little chance of discovering the bug during the Xcode 14.0 beta phase because the betas ship with the new beta macOS SDK.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Apple: Xcode 14 includes Swift 5.7 and SDKs for iOS 16, iPadOS 16, tvOS 16, watchOS 9, and macOS Monterey 12.3. The Xcode 14 release supports on-device debugging in iOS 11 and later, tvOS 11 and later, and watchOS 4 and later. Xcode 14 requires a Mac running macOS Monterey 12.5 or later. As with [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2022-09-12T22:22:48Z","apple_news_api_id":"7e49cd91-7aa6-4f34-8302-06b9c2dab9fe","apple_news_api_modified_at":"2022-10-13T20:23:23Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAg==","apple_news_api_share_url":"https:\/\/apple.news\/AfknNkXqmTzSDAga5wtq5_g","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[131,30,2077,2223,2200,901,226],"class_list":["post-37016","post","type-post","status-publish","format-standard","hentry","category-technology","tag-bug","tag-mac","tag-macos-12","tag-macos-13-ventura","tag-swift-concurrency","tag-swift-programming-language","tag-xcode"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/37016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=37016"}],"version-history":[{"count":3,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/37016\/revisions"}],"predecessor-version":[{"id":37323,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/37016\/revisions\/37323"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=37016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=37016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=37016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}