{"id":52393,"date":"2026-06-24T16:54:07","date_gmt":"2026-06-24T20:54:07","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=52393"},"modified":"2026-06-24T16:54:07","modified_gmt":"2026-06-24T20:54:07","slug":"swift-6-3","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2026\/06\/24\/swift-6-3\/","title":{"rendered":"Swift 6.3"},"content":{"rendered":"<p><a href=\"https:\/\/www.swift.org\/blog\/swift-6.3-released\/\">Holly Borla and Joe Heck<\/a> (<a href=\"https:\/\/news.ycombinator.com\/item?id=47527590\">Hacker News<\/a>):<\/p>\n<blockquote cite=\"https:\/\/www.swift.org\/blog\/swift-6.3-released\/\">\n<p>Swift 6.3 introduces the <code>@c<\/code> attribute, which lets you expose Swift functions and enums to C code in your project. [&#8230;] <code>@c<\/code> also works together with <code>@implementation<\/code>. This lets you provide a Swift implementation for a function declared in a C header[&#8230;]<\/p>\n<p>[&#8230;]<\/p>\n<p>Swift 6.3 introduces <em>module selectors<\/em> to specify which imported module Swift should look in for an API used in your code. If you import more than one module that provides API with the same name, module selectors let you disambiguate which API to use[&#8230;]<\/p>\n<p>[&#8230;]<\/p>\n<p>Provide pre-specialized implementations of a generic API for common concrete types using <code>@specialize<\/code>.<\/p>\n<p>[&#8230;]<\/p>\n<p>Guarantee inlining &mdash; a compiler optimization that expands the body of a function at the call-site &mdash; for direct calls to a function with <code>@inline(always)<\/code>.<\/p>\n<p>[&#8230;]<\/p>\n<p>Expose the implementation of a function in an ABI-stable library to clients with <code>@export(implementation)<\/code>. This allows the function to participate in more compiler optimizations.<\/p>\n<\/blockquote>\n\n<p>The Swift Evolution proposals are listed <a href=\"https:\/\/www.swift.org\/swift-evolution\/#?version=6.3\">here<\/a>.<\/p>\n\n<p><a href=\"https:\/\/typo.social\/@florian\/116289589856819938\">Florian Pircher<\/a>:<\/p>\n<blockquote cite=\"https:\/\/typo.social\/@florian\/116289589856819938\">\n<p>I love that I can now name my module the same as the primary\/only type of the module without making the module namespace unreachable.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/social.belkadan.com\/@jrose\/statuses\/01KMNXC9755G3B58AQF2ZEF5YB\">Jordan Rose<\/a>:<\/p>\n<blockquote cite=\"https:\/\/social.belkadan.com\/@jrose\/statuses\/01KMNXC9755G3B58AQF2ZEF5YB\">\n<p>Congrats to my Swift colleagues for #finally pushing <code>@c<\/code> over the finish line! Been a long time coming.<\/p>\n<\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2026\/03\/25\/xcode-26-4\/\">Xcode 26.4<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/10\/29\/swift-6-2\/\">Swift 6.2<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/05\/01\/swift-proposal-weak-let\/\">Swift Proposal: weak let<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Holly Borla and Joe Heck (Hacker News): Swift 6.3 introduces the @c attribute, which lets you expose Swift functions and enums to C code in your project. [&#8230;] @c also works together with @implementation. This lets you provide a Swift implementation for a function declared in a C header[&#8230;] [&#8230;] Swift 6.3 introduces module selectors [&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":"2026-06-24T20:54:11Z","apple_news_api_id":"b144cf52-ca41-4b19-81ff-8fcddeebcecf","apple_news_api_modified_at":"2026-06-24T20:54:12Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/AsUTPUspBSxmB_4_N3uvOzw","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,31,2741,46,30,2742,71,901],"class_list":["post-52393","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-c","tag-ios","tag-ios-26","tag-languagedesign","tag-mac","tag-macos-tahoe-26","tag-programming","tag-swift-programming-language"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/52393","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=52393"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/52393\/revisions"}],"predecessor-version":[{"id":52394,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/52393\/revisions\/52394"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=52393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=52393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=52393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}