{"id":47269,"date":"2025-04-01T16:22:54","date_gmt":"2025-04-01T20:22:54","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=47269"},"modified":"2025-07-14T13:47:06","modified_gmt":"2025-07-14T17:47:06","slug":"xcode-16-3","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2025\/04\/01\/xcode-16-3\/","title":{"rendered":"Xcode 16.3"},"content":{"rendered":"<p><a href=\"https:\/\/developer.apple.com\/documentation\/xcode-release-notes\/xcode-16_3-release-notes\">Apple<\/a> (<a href=\"https:\/\/support.apple.com\/en-us\/122380\">security<\/a>, <a href=\"https:\/\/developer.apple.com\/download\/all\/\">downloads<\/a>):<\/p>\n<blockquote cite=\"https:\/\/developer.apple.com\/documentation\/xcode-release-notes\/xcode-16_3-release-notes\"><p>Clang now defines <code>TARGET_OS_*<\/code> conditionals as built-in macros based on the provided target triple.<\/p><p>[&#8230;]<\/p><p>Searching in the documentation viewer may start an indexing process which makes no progress. This may result in missing search results and increased CPU usage.<\/p><p>[&#8230;]<\/p><p>Fixed: Foundation encoders\/decoders user info dictionaries now require <code>Sendable<\/code> values. This may cause build errors even in the Swift 5 language mode in small edge cases where the userInfo property is set to a value like <code>init(myCustomInitializer:)<\/code> where the initializer is defined in an extension on <code>Dictionary<\/code> with a <code>Value == Any<\/code> constraint.<\/p><p>[&#8230;]<\/p><p>Instruments 16.3 includes a new Processor Trace Instrument which uses hardware-supported, low-overhead CPU execution tracing to accurately reconstruct execution of the program.<\/p><p>[&#8230;]<\/p><p>In Xcode when you are in a test context you are now able to query for your test plan name and scheme name in the environment with the keys <code>XCODE_TEST_PLAN_NAME<\/code> and <code>XCODE_SCHEME_NAME<\/code>.<\/p><p>[&#8230;]<\/p><p><code>xcodebuild<\/code> supports constraining the tests run through tests actions by tags. Use <code>-only-testing-tags<\/code> to include tests identified by a tags and <code>-skip-testing-tags<\/code> to omit tests identified by tags.<\/p><\/blockquote>\n\n<p>There are also lots of C++ and Swift\/C++ improvements. It does not look like the issues with linking to certain frameworks on older versions of macOS (<a href=\"https:\/\/mjtsai.com\/blog\/2024\/09\/12\/xcode-16\/\">FB14667312<\/a>) or calling async functions bridged from Objective-C (<a href=\"https:\/\/mjtsai.com\/blog\/2024\/12\/13\/xcode-16-2\/\">134442168<\/a>) have been fixed yet.<\/p>\n\n<p><a href=\"https:\/\/techhub.social\/@xcodereleases\/114258522457495826\">Xcode Releases<\/a>:<\/p>\n<blockquote cite=\"https:\/\/techhub.social\/@xcodereleases\/114258522457495826\">\n<p>It is identical to RC2 that came out a couple of days ago.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/www.massicotte.org\/dynamic-isolation\">Matt Massicotte<\/a> (via <a href=\"https:\/\/christiantietze.de\/posts\/2024\/04\/dynamic-actor-isolation-help-transition\/\">Christian Tietze<\/a>):<\/p>\n<blockquote cite=\"https:\/\/www.massicotte.org\/dynamic-isolation\">\n<p>No, dynamic isolation is <strong>not bad<\/strong>.<\/p>\n\n<p>But, I think we can also agree that static isolation is <em>preferable<\/em>. If you find yourself using dynamic isolation solely because it is a familiar pattern, that&rsquo;s something to think about more deeply. Static isolation is a safer, clearer way to express what you need. That doesn&rsquo;t mean you can always or even should start with it. Adopting concurrency will be a long process. Dynamic isolation is a very handy tool for getting there, I just don&rsquo;t think it should typically be an end-state.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/mastodon.social\/@cocoaphony\/114259011197550138\">Rob Napier<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@cocoaphony\/114259011197550138\"><p>I&rsquo;m wondering if there are changes to how DynamicActorIsolation works in Xcode 16.3. I&rsquo;m seeing crashes due to running on a background thread that I don&rsquo;t have with 16.2. The closure in question isn&rsquo;t intended to be MainActor even though it&rsquo;s defined in a View. With DynamicActorIsolation turned on, it seems to be getting MainActor assertions added, even if I mark it Sendable.<\/p><\/blockquote>\n\n<p><a href=\"https:\/\/mastodon.social\/@twostraws\/114261602978817975\">Paul Hudson<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@twostraws\/114261602978817975\"><p>If you upgraded to Xcode 16.3, be warned: there appears to be a simulator bug that causes network access to fail regularly. It doesn&rsquo;t affect devices, just the simulator. You can work around it by using <code>URLSession(configuration: .ephemeral)<\/code> rather than <code>URLSession.shared<\/code>.<\/p><\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/04\/01\/swift-testing-test-scoping-traits\/\">Swift Testing: Test Scoping Traits<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/31\/macos-15-4\/\">macOS 15.4<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/26\/the-future-of-swift-serialization-and-deserialization-apis\/\">The Future of Swift Serialization and Deserialization APIs<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/12\/whither-swift-assist\/\">Whither Swift Assist?<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/03\/03\/swift-6-1\/\">Swift 6.1<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2024\/12\/13\/xcode-16-2\/\">Xcode 16.2<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2024\/10\/01\/swift-concurrency-and-objective-c\/\">Swift Concurrency and Objective-C<\/a><\/li>\n<\/ul>\n\n<p id=\"xcode-16-3-update-2025-04-02\">Update (2025-04-02): <a href=\"https:\/\/mastodon.social\/@bigzaphod\/114263271408384073\">Sean Heber<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@bigzaphod\/114263271408384073\"><p>Xcode 16.3 is seemingly refusing to remember the width of the canvas panel where SwiftUI previews live between tab switches and it is driving me bonkers and I&rsquo;ve only had this version of Xcode a few hours.<\/p><\/blockquote>\n\n<p id=\"xcode-16-3-update-2025-04-21\">Update (<a href=\"#xcode-16-3-update-2025-04-21\">2025-04-21<\/a>): <a href=\"https:\/\/github.com\/swiftlang\/swift\/issues\/80731\">Tom Lokhorst<\/a> (<a href=\"https:\/\/mastodon.social\/@softmaus\/114315621461310225\">Mastodon<\/a>):<\/p>\n<blockquote cite=\"https:\/\/github.com\/swiftlang\/swift\/issues\/80731\">\n<p>When switching from Xcode 16.2 (Swift 6.0) to Xcode 16.3 (Swift 6.1), I suddenly got a bunch of crashes in a Mac app.<\/p>\n<\/blockquote>\n<p>It&rsquo;s related to <code>try await as [Any?]<\/code>.<\/p>\n\n<p id=\"xcode-16-3-update-2025-04-22\">Update (<a href=\"#xcode-16-3-update-2025-04-22\">2025-04-22<\/a>): <a href=\"https:\/\/x.com\/FoxyFoxalot\/status\/1914488043836465607\">Foxy<\/a>:<\/p>\n<blockquote cite=\"https:\/\/x.com\/FoxyFoxalot\/status\/1914488043836465607\"><p>Xcode 16.3 has some serious issues with the Preview.<\/p><p>When it actually works, it doesn&rsquo;t remember the Preview window\/pane&rsquo;s size. So you have to reset it all day long.&rdquo;<\/p><p>But half the time Preview fails anyway, on even the simplest &ldquo;Hello World&rdquo; example.<\/p><\/blockquote>\n\n<p id=\"xcode-16-3-update-2025-04-25\">Update (<a href=\"#xcode-16-3-update-2025-04-25\">2025-04-25<\/a>): <a href=\"https:\/\/developer.apple.com\/forums\/thread\/776167\">Some developers<\/a> are getting spurious errors about Apple Push Notification service entitlement (via <a href=\"https:\/\/douglashill.co\/2025\/xcode-16-3-upload-warnings\/\">Douglas Hill<\/a>).<\/p>\n\n<p><a href=\"https:\/\/mastodon.social\/@ctietze\/114348473542222656\">Christian Tietze<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@ctietze\/114348473542222656\"><p>Uggghh   so it&rsquo;s time to update macOS for #Xcode 16.3 soon<\/p><\/blockquote>\n\n<p><a href=\"https:\/\/x.com\/_saagarjha\/status\/1915304993357521334\">Saagar Jha<\/a>:<\/p>\n<blockquote cite=\"https:\/\/x.com\/_saagarjha\/status\/1915304993357521334\">\n<p>Can someone tell the Xcode people that instead of shipping with its own statically-linked Brotli decoder that has been patched to log &ldquo;Needs flush!&rdquo; incessantly in the background they can just use the one that&rsquo;s been bundled with the system for half a decade.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/x.com\/krzyzanowskim\/status\/1915516873015267654\">Marcin Krzyzanowski<\/a>:<\/p>\n<blockquote cite=\"https:\/\/x.com\/krzyzanowskim\/status\/1915516873015267654\"><p>&#x1F915; lost 30 minutes wondering what&rsquo;s wrong with me, only to learn that assets literals are broken in SwiftUI<\/p><\/blockquote>\n\n<p><a href=\"https:\/\/mastodon.social\/@chockenberry\/114344095725794403\">Craig Hockenberry<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@chockenberry\/114344095725794403\">\n<p>Today on Developer Jeopardy!<\/p>\n<p>Answer: 1,965,231<\/p>\n<p>Question: How many times have I resized the SwiftUI Canvas in Xcode 16.3?<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/mastodon.social\/@davedelong\/114387878978927308\">Dave DeLong<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@davedelong\/114387878978927308\"><p>All I want for #WWDC is for Xcode to correctly report build status.<\/p><p>[&#8230;]<\/p><p>Other fixes would be nice too, but the #1 thing an IDE needs to do is show correct information. If it can&rsquo;t do that, it doesn&rsquo;t matter what else it can do; it&rsquo;s not trustworthy.<\/p><\/blockquote>\n<p>I&rsquo;m still seeing the same old spurious build errors, but new in Xcode 16.3 are &ldquo;real&rdquo; errors (conflicts between Swift-generated Objective-C enums in different frameworks) that make incremental builds fail so that I have to clean and rebuild the whole project after making a minor change.<\/p>\n\n<p id=\"xcode-16-3-update-2025-05-07\">Update (<a href=\"#xcode-16-3-update-2025-05-07\">2025-05-07<\/a>): <a href=\"https:\/\/x.com\/steipete\/status\/1919743413546569932\">Peter Steinberger<\/a>:<\/p>\n<blockquote cite=\"https:\/\/x.com\/steipete\/status\/1919743413546569932\">\n<p>GitHub CI still has no Xcode 16.3 on their machines. What are my options? What are ya&rsquo;all using for fast Mac CI?<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Apple (security, downloads): Clang now defines TARGET_OS_* conditionals as built-in macros based on the provided target triple.[&#8230;]Searching in the documentation viewer may start an indexing process which makes no progress. This may result in missing search results and increased CPU usage.[&#8230;]Fixed: Foundation encoders\/decoders user info dictionaries now require Sendable values. This may cause build errors [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2025-04-01T20:22:57Z","apple_news_api_id":"d0d87ce9-2340-43cd-888b-1fb5a30ae43a","apple_news_api_modified_at":"2025-05-07T17:28:01Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAADA==","apple_news_api_share_url":"https:\/\/apple.news\/A0Nh86SNAQ82Iix-1owrkOg","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":[4],"tags":[326,225,30,2598,71,2200,901,2796,268,226],"class_list":["post-47269","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-c-plus-plus","tag-instruments","tag-mac","tag-macos-15-sequoia","tag-programming","tag-swift-concurrency","tag-swift-programming-language","tag-swift-testing","tag-testing","tag-xcode"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/47269","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=47269"}],"version-history":[{"count":14,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/47269\/revisions"}],"predecessor-version":[{"id":47640,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/47269\/revisions\/47640"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=47269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=47269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=47269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}