-
안녕하세요. 그린입니다 🍏
이번 포스팅에서는 Swift 6.3에서 릴리즈된 내용들을 정리해보겠습니다 🙋🏻

Intro
2026년 3월 24일, Swift 6.3이 공식 릴리즈되었습니다.
Swift는 소프트웨어 스택의 모든 레이어에서 사용할 수 있는 언어를 목표로 설계되었습니다.
임베디드 펌웨어, 인터넷 규모의 서비스, 풀-피처 모바일 앱을 만들든 간에,Swift는 강력한 안전성 보장, 필요할 때의 성능 제어, 그리고 표현력 있는 언어 기능과 API를 제공하거든요 👍
Swift 6.3은 이러한 이점들을 스택 전반에 걸쳐 더 넓게 활용할 수 있도록 해줍니다.
이번 릴리즈의 주요 내용은 다음과 같습니다
- 더 유연한 C 상호운용성
- 크로스 플랫폼 빌드 툴링 개선
- 임베디드 환경에서의 Swift 개선
- 공식 Swift SDK for Android
언어 및 표준 라이브러리
C 상호운용성 (C Interoperability)
Swift 6.3에서는 @c 속성이 도입되었습니다.
이를 통해 Swift 함수와 enum을 C 코드에 노출할 수 있게 됩니다.함수나 enum에 @c를 붙이면, Swift가 생성된 C 헤더에 해당 선언을 포함시켜주고,
그 헤더를 C/C++ 파일에서 include해서 사용할 수 있게 되거든요 🙌@c func callFromC() { ... }// Generated C header void callFromC(void);생성되는 C 선언에 커스텀 이름을 지정하는 것도 가능합니다.
@c(MyLibrary_callFromC) func callFromC() { ... }// Generated C header void MyLibrary_callFromC(void);@c는 @implementation과 함께도 사용할 수 있어요.
이를 통해 C 헤더에 선언된 함수에 대한 Swift 구현을 제공할 수 있습니다.// C header void callFromC(void);// Implementation written in Swift @c @implementation func callFromC() { ... }@c와 @implementation을 함께 사용하면, Swift는 생성된 헤더에 C 선언을 포함시키는 대신, Swift 함수가 C 헤더에 이미 존재하는 선언과 일치하는지 검증합니다.
Module name selectors
Swift 6.3에서는 module selectors가 도입되어, 코드에서 사용하는 API가 어떤 모듈에서 온 것인지 명시적으로 지정할 수 있게 되었습니다.
동일한 이름의 API를 제공하는 모듈을 두 개 이상 import했을 때, module selector를 통해 어떤 API를 사용할지 명확하게 구분할 수 있습니다.
import ModuleA import ModuleB let x = ModuleA::getValue() // Call 'getValue' from ModuleA let y = ModuleB::getValue() // Call 'getValue' from ModuleB또한 Swift 6.3부터는 Swift 모듈명을 사용해서 concurrency와 String processing 라이브러리 API에 접근하는 것도 가능합니다.
let task = Swift::Task { // async work }
라이브러리 API를 위한 성능 제어
Swift 6.3에서는 라이브러리 작성자가 클라이언트에 대한 컴파일러 최적화를 더 세밀하게 제어할 수 있는 새로운 속성들이 추가되었습니다.
- 함수 특수화 (Function specialization): @specialize를 사용해 일반적인 구체 타입에 대한 사전 특수화된 generic API 구현을 제공할 수 있습니다.
- 인라이닝 (Inlining): @inline(always)를 통해 함수에 대한 직접 호출의 인라이닝을 보장합니다. 인라이닝이란 함수 호출부에 함수 본문을 펼치는 컴파일러 최적화인데요, 인라이닝의 이점이 코드 크기 증가보다 크다고 판단될 때만 사용하는 걸 권장합니다.
- 함수 구현 가시성 (Function implementation visibility): @export(implementation)을 사용해 ABI 안정 라이브러리의 함수 구현을 클라이언트에 노출시킬 수 있습니다. 이를 통해 함수가 더 많은 컴파일러 최적화에 참여할 수 있습니다.
패키지 및 빌드 개선사항
Swift 6.3에서는 Swift Package Manager에 Swift Build의 프리뷰가 통합되었습니다.
이 프리뷰는 지원되는 모든 플랫폼에서 통합 빌드 엔진을 제공해, 크로스 플랫폼 개발 경험을 더 일관되게 만들어줍니다.
그 외 Swift Package Manager 개선사항들은 다음과 같습니다.
- 공유 매크로 라이브러리를 위한 사전 빌드된 Swift Syntax: 매크로에서만 사용하는 라이브러리에서 swift-syntax 사전 빌드 바이너리를 지원하면서, 공유 매크로 구현 코드를 라이브러리로 분리할 수 있습니다.
- 유연한 상속 문서 (Flexible inherited documentation): 심볼 그래프를 생성하는 커맨드 플러그인에 상속된 문서를 포함할지 여부를 제어할 수 있습니다.
- 패키지 트레이트 탐색 (Discoverable package traits): 새로운 swift package show-traits 명령어로 패키지가 지원하는 트레이트를 탐색할 수 있습니다.
코어 라이브러리 업데이트
Swift Testing
Swift Testing에 경고 이슈, 테스트 취소, 이미지 첨부 등 여러 개선사항이 추가되었습니다.
- 경고 이슈 (Warning issues): Issue.record의 새로운 severity 파라미터를 사용해 테스트 이슈의 심각도를 지정할 수 있습니다.
Issue.record("Something suspicious happened", severity: .warning)처럼 이슈를 경고로 기록할 수 있고, 이는 테스트 결과에 반영되지만 테스트를 실패로 표시하지는 않습니다. - 테스트 취소 (Test cancellation): try Test.cancel()을 사용해 시작된 테스트(및 그 태스크 계층)를 취소할 수 있습니다. 파라미터화된 테스트의 개별 인수를 건너뛰거나, 테스트 중 계속 진행하면 안 된다는 조건을 감지했을 때 유용합니다.
- 이미지 첨부 (Image attachments): Apple 및 Windows 플랫폼에서 테스트 중에 일반적인 이미지 타입을 첨부할 수 있습니다. UIKit 등의 UI 프레임워크와의 새로운 크로스-import 오버레이 모듈을 통해 제공됩니다.
DocC
Swift 6.3에서는 DocC에 세 가지 실험적 기능이 추가되었습니다.
- Markdown 출력: 표준 렌더링 JSON과 함께 문서 페이지의 Markdown 버전을 생성할 수 있습니다. docc convert에 --enable-experimental-markdown-output 플래그를 전달하면 사용해볼 수 있습니다.
- 페이지별 정적 HTML 콘텐츠: 각 페이지의 경량 HTML 요약(제목, 설명, 가용성, 선언, 토론 포함)을 <noscript> 태그 안에 index.html 파일에 직접 내장할 수 있습니다. JavaScript 없이도 검색 엔진 탐색과 스크린 리더 접근성이 향상됩니다. docc convert에 --transform-for-static-hosting --experimental-transform-for-static-hosting-with-content를 전달하면 사용해볼 수 있습니다.
- 코드 블록 어노테이션: 코드 블록에 새로운 포맷팅 어노테이션이 추가됩니다. 여는 펜스 라인에서 언어 이름 뒤에 콤마로 구분된 목록으로 옵션을 지정합니다:
- nocopy: 클립보드 복사 비활성화
- highlight: 특정 라인 번호 강조
- showLineNumbers: 라인 번호 표시
- wrap: 컬럼 너비에 따라 긴 줄 줄바꿈
```swift, nocopy let config = loadDefaultConfig() ``````swift, highlight=[1, 3] let name = "World" // highlighted let greeting = "Hello" print("\(greeting), \(name)!") // highlighted ``````swift, showLineNumbers, wrap=80 func example() { /* ... */ } ```
DocC는 라인 인덱스의 유효성을 검사하고 인식되지 않는 옵션에 대해 경고를 표시합니다.
--enable-experimental-code-block-annotations로 사용해볼 수 있습니다.
플랫폼 및 환경
Embedded Swift
Swift 6.3에서 Embedded Swift는 굉장히 다양한 개선사항을 받았습니다.
향상된 C 상호운용성, 더 나은 디버깅 지원, 완전한 링크 모델을 향한 의미있는 진전까지 포함됩니다.자세한 내용은 Embedded Swift Improvements coming in Swift 6.3 포스팅에서 확인하실 수 있습니다.
Android
Swift 6.3에는 Swift SDK for Android의 첫 번째 공식 릴리즈가 포함되었습니다 🎉
이 SDK를 통해 할 수 있는 것들은 다음과 같습니다.
- Swift로 네이티브 Android 프로그램 개발 시작
- Swift 패키지가 Android 빌드를 지원하도록 업데이트
- Swift Java 및 Swift Java JNI Core를 사용해 Kotlin/Java로 작성된 기존 Android 앱에 Swift 코드 통합
이번 릴리즈는 Swift의 크로스 플랫폼 개발 가능성을 크게 열어주는 중요한 이정표라고 볼 수 있습니다!
시작하려면 Getting Started with the Swift SDK for Android 문서를 참고해보세요.
Conclusion
Swift 6.3은 언어 자체의 표현력을 높이는 동시에, 플랫폼 확장성이라는 측면에서도 굉장히 의미있는 릴리즈입니다.
@c 속성을 통한 C 상호운용성 강화, module name selectors를 통한 명확한 API 구분, Swift Testing의 실용적인 개선, 그리고 DocC 실험 기능들까지 — 개발 경험 전반에서 체감할 수 있는 변화들이 많이 담겨있거든요.
무엇보다 Swift SDK for Android의 공식 릴리즈는 Swift가 단순히 Apple 생태계를 넘어 더 넓은 영역으로 뻗어나가고 있다는 신호로 보입니다 🚀
Swift 6.3은 지금 바로 사용해볼 수 있습니다. Install Swift 페이지에서 Swift 6.3 툴체인 설치 방법을 확인해보세요!
References
Swift 6.3 Released
Swift is designed to be the language you reach for at every layer of the software stack. Whether you’re building embedded firmware, internet-scale services, or full-featured mobile apps, Swift delivers strong safety guarantees, performance control when y
www.swift.org
'Swift' 카테고리의 다른 글
[SE-0519] Borrow and Inout types for safe, first-class references (2) 2026.04.11 [SE-0518] tide-Sendable (0) 2026.04.05 Swift 6.2.4 (0) 2026.03.22 [SE-0515] Allow reduce to produce noncopyable results (1) 2026.03.14 [SE-0514] Hashable Conformance for Dictionary.Keys, CollectionOfOne and EmptyCollection (0) 2026.03.02