{"id":50427,"date":"2025-12-12T15:29:02","date_gmt":"2025-12-12T20:29:02","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=50427"},"modified":"2026-01-14T09:54:07","modified_gmt":"2026-01-14T14:54:07","slug":"xcode-26-2","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2025\/12\/12\/xcode-26-2\/","title":{"rendered":"Xcode 26.2"},"content":{"rendered":"<p><a href=\"https:\/\/developer.apple.com\/documentation\/xcode-release-notes\/xcode-26_2-release-notes\">Apple<\/a> (<a href=\"https:\/\/download.developer.apple.com\/Developer_Tools\/Xcode_26.2\/Xcode_26.2_Universal.xip\">xip<\/a>, <a href=\"https:\/\/developer.apple.com\/download\/all\/\">downloads<\/a>):<\/p>\n<blockquote cite=\"https:\/\/developer.apple.com\/documentation\/xcode-release-notes\/xcode-26_2-release-notes\">\n<p>Xcode 26.2 includes Swift 6.2.3 and SDKs for iOS 26.2, iPadOS 26.2, tvOS 26.2, macOS 26.2, and visionOS 26.2. Xcode 26.2 supports on-device debugging in iOS 15 and later, tvOS 15 and later, watchOS 8 and later, and visionOS. Xcode 26.2 requires a Mac running macOS Sequoia 15.6 or later.<\/p>\n<p>[&#8230;]<\/p>\n<p>You can now annotate C types with the <code>SWIFT_SHARED_REFERENCE<\/code> attribute.<\/p>\n<p>[&#8230;]<\/p>\n<p>Retain and release operations for <code>SWIFT_SHARED_REFERENCE<\/code> types can now be methods of the type. You can now annotate a C\/C++ type with <code>SWIFT_SHARED_REFERENCE(.doRetain, .doRelease)<\/code> to use methods <code>doRetain<\/code> and <code>doRelease<\/code> as the lifetime operations for the type.<\/p>\n<\/blockquote>\n<p>Nothing about the <a href=\"https:\/\/mjtsai.com\/blog\/2025\/11\/05\/xcode-26-1\/\">simulator and visionOS issues<\/a>.<\/p>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/11\/11\/xcode-26-1-1\/\">Xcode 26.1.1<\/a><\/li>\n<\/ul>\n\n<p id=\"xcode-26-2-update-2026-01-07\">Update (<a href=\"#xcode-26-2-update-2026-01-07\">2026-01-07<\/a>): <a href=\"https:\/\/christiantietze.de\/posts\/2026\/01\/manually-mount-metal-toolchain\/\">Christian Tietze<\/a>:<\/p>\n<blockquote cite=\"https:\/\/christiantietze.de\/posts\/2026\/01\/manually-mount-metal-toolchain\/\">\n<p>My Xcode 26.2 still suffers from an inability to compile Metal shader files because it can&rsquo;t find the Metal toolchain[&#8230;] But I did have success mounting the <code>.dmg<\/code> file with the toolchain manually.<\/p>\n<\/blockquote>\n\n<p id=\"xcode-26-2-update-2026-01-08\">Update (<a href=\"#xcode-26-2-update-2026-01-08\">2026-01-08<\/a>): <a href=\"https:\/\/mastodon.social\/@cocoaphony\/115855953248279093\">Rob Napier<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@cocoaphony\/115855953248279093\">\n<p>I have a Swift macro that wraps <code>OSLog<\/code> (which is, considered the appropriate way to do this), and I swear &ldquo;jump to source&rdquo; used to work fine with it (the whole reason for building the macro was to keep this support) But in Xcode 26.2, it&rsquo;s linking to stuff like <code>&#8230;\/@__swiftmacro&#8230;.logError&#8230;_.swift:3:8<\/code> and you can&rsquo;t jump with it.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/mastodon.social\/@sandofsky\/115859979235196514\">Ben Sandofsky<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@sandofsky\/115859979235196514\">\n<p>I haven&rsquo;t followed any conversation about this, but in Xcode 26, it seems like navigation history extends across tabs you&rsquo;ve navigated to.<\/p>\n<p>Example: if switch from tab A to tab B, and then hit &ldquo;Back&rdquo;, it just opens tab A again. <\/p>\n<p>I&rsquo;ve given this behavior six months, and it&rsquo;s just maddening. Is there a way to revert this to the old way?<\/p>\n<\/blockquote>\n\n<p id=\"xcode-26-2-update-2026-01-14\">Update (<a href=\"#xcode-26-2-update-2026-01-14\">2026-01-14<\/a>): <a href=\"https:\/\/mastodon.social\/@caseyliss\/115888299076046213\">Casey Liss<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.social\/@caseyliss\/115888299076046213\">\n<p>I can&rsquo;t do it anymore. I&rsquo;ve tried, but it&rsquo;s just so fucking inscrutable.<\/p>\n<p>How do I go back to the sensible tab handling mechanism in Xcode 26?<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Apple (xip, downloads): Xcode 26.2 includes Swift 6.2.3 and SDKs for iOS 26.2, iPadOS 26.2, tvOS 26.2, macOS 26.2, and visionOS 26.2. Xcode 26.2 supports on-device debugging in iOS 15 and later, tvOS 15 and later, watchOS 8 and later, and visionOS. Xcode 26.2 requires a Mac running macOS Sequoia 15.6 or later. [&#8230;] You [&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-12-12T20:29:06Z","apple_news_api_id":"e375db9a-6a4b-42c3-a207-1ef1ec3e07d1","apple_news_api_modified_at":"2026-01-14T14:54:10Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAw==","apple_news_api_share_url":"https:\/\/apple.news\/A43XbmmpLQsOiBx7x7D4H0Q","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":[45,326,30,2742,571,906,71,226],"class_list":["post-50427","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-c","tag-c-plus-plus","tag-mac","tag-macos-tahoe-26","tag-memory-management","tag-metal","tag-programming","tag-xcode"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/50427","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=50427"}],"version-history":[{"count":5,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/50427\/revisions"}],"predecessor-version":[{"id":50721,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/50427\/revisions\/50721"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=50427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=50427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=50427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}