2P by GN⁺ 8시간전 | ★ favorite | 댓글 1개
  • 언어, 표준 라이브러리, 빌드 시스템, 플랫폼 지원 전반을 확장하며 개발자 경험을 개선
  • C 상호운용성 강화, Android 공식 SDK 추가, 임베디드 환경 개선, DocC 문서화 도구 확장이 주요 변화
  • Swift Package Manager는 통합 빌드 엔진사전 빌드된 Swift Syntax 지원을 통해 크로스플랫폼 빌드 일관성을 높임
  • Swift Testing은 경고 수준 이슈 기록, 테스트 취소, 이미지 첨부 등 새로운 기능을 추가해 테스트 유연성을 강화함
  • Android SDK 공식 출시로 Swift의 크로스플랫폼 개발 영역이 확대되며, Kotlin/Java 앱과의 통합이 가능해짐

Swift 6.3 주요 업데이트

  • Swift 6.3은 언어, 표준 라이브러리, 빌드 시스템, 플랫폼 지원 전반에 걸쳐 확장된 기능을 제공
  • C 상호운용성 강화, Android 공식 SDK 추가, 임베디드 환경 개선, 문서화 도구 DocC 확장이 핵심 변화
  • 개발자 경험 향상과 크로스플랫폼 개발 통합을 목표로 함

언어 및 표준 라이브러리

  • C 상호운용성

    • 새로운 @c 속성을 통해 Swift 함수나 enum을 C 코드에 노출 가능
    • @c(MyLibrary_callFromC) 형태로 사용자 지정 C 선언 이름을 지정할 수 있음
    • @c@implementation을 함께 사용하면 Swift에서 C 헤더에 선언된 함수를 구현 가능
    • 이 조합 시 Swift는 기존 C 선언과 일치 여부를 검증함
  • 모듈 이름 선택자 (Module Name Selectors)

    • 동일한 이름의 API를 여러 모듈에서 가져올 때, ModuleA::getValue() 형태로 모듈 명시 호출 가능
    • Swift::Task 구문을 통해 동시성(concurrency)문자열 처리 API에 접근 가능
  • 라이브러리 API 성능 제어

    • @specialize: 제네릭 API의 특정 타입에 대한 사전 특수화 구현 제공
    • @inline(always): 인라이닝을 강제하여 호출 지점에서 함수 본문을 확장
    • @export(implementation): ABI 안정 라이브러리에서 함수 구현을 노출해 추가 최적화 허용
    • 관련 제안은 Swift Evolution 대시보드에서 확인 가능

패키지 및 빌드 개선

  • Swift Package Manager에 Swift Build 통합 미리보기가 포함되어, 모든 플랫폼에서 일관된 빌드 경험 제공
    • 통합 빌드 엔진을 통해 크로스플랫폼 개발 일관성 강화
    • 사용자는 직접 패키지에서 테스트 후 문제를 보고할 수 있음
  • SwiftPM 6.3의 주요 개선 사항
    • Prebuilt Swift Syntax 지원: 매크로 전용 라이브러리에서 사전 빌드된 swift-syntax 바이너리 사용 가능
    • 유연한 문서 상속 제어: 심볼 그래프를 생성하는 명령형 플러그인에서 상속 문서 포함 여부 제어
    • 패키지 특성 탐색 기능: swift package show-traits 명령으로 패키지의 지원 특성 확인 가능
    • 자세한 내용은 SwiftPM 6.3 릴리스 노트에 포함

코어 라이브러리 업데이트

  • Swift Testing

    • 경고 수준 이슈 기록: Issue.record(..., severity: .warning)으로 테스트 실패 없이 경고만 표시
    • 테스트 취소 기능: try Test.cancel()로 실행 중 테스트 및 하위 태스크를 중단 가능
    • 이미지 첨부 지원: Apple 및 Windows 플랫폼에서 테스트 중 이미지 첨부 가능
    • 관련 제안: ST-0012, ST-0013, ST-0014, ST-0015, ST-0016, ST-0017, ST-0020
  • DocC

    • Markdown 출력 지원: --enable-experimental-markdown-output 옵션으로 Markdown 문서 생성
    • 페이지별 정적 HTML 콘텐츠: `` 내에 요약 HTML 삽입으로 검색엔진 및 접근성 향상
    • 코드 블록 주석 확장: nocopy, highlight, showLineNumbers, wrap 등 새로운 포맷 옵션 추가
    • --enable-experimental-code-block-annotations 옵션으로 활성화 가능

플랫폼 및 환경

  • Embedded Swift

    • C 상호운용성 강화, 디버깅 개선, 링키지 모델 완성 단계 진전 등 다수의 개선 포함
    • 세부 내용은 “Embedded Swift Improvements coming in Swift 6.3” 블로그에서 확인 가능
  • Android

    • 공식 Swift SDK for Android 첫 출시
    • Swift로 네이티브 Android 앱 개발, Swift 패키지의 Android 빌드 지원 가능
    • Swift JavaSwift Java JNI Core를 통해 Kotlin/Java 앱과 통합 가능
    • Swift의 크로스플랫폼 개발 확장을 위한 중요한 이정표로 평가됨
    • 시작 가이드는 “Getting Started with the Swift SDK for Android” 문서에서 제공

다음 단계

  • Swift 6.3 툴체인은 Install Swift 페이지에서 설치 가능
  • 개발자는 즉시 새로운 기능을 실험하고 피드백 제공 가능
Hacker News 의견들
  • Swift로 이렇게 멋진 릴리스가 나오는 걸 보니 반가움
    예전 v3 이후로는 안 써봤지만, 2015~17년 즈음에는 Swift가 Python을 대체할 수도 있었음
    단순하고 빠르며 C/C++ 생태계와도 잘 맞았기 때문임. IBM이 서버 쪽을 밀던 시절엔 진짜 가능성이 있었음
    하지만 Apple이 커뮤니티를 충분히 끌어들이지 못했고, 결국 Swift는 Apple 전용 언어로 남게 되었음. 지금은 복잡성도 C++ 수준으로 올라감

    • 대학 시절 프리랜서로 일하면서 Swift로 웹 백엔드를 만들었음. Heroku 빌드팩으로 배포했는데 꽤 재밌는 시기였음
      Swift를 좋아하지만, Apple 생태계 밖에서는 아직 임계점을 넘지 못한 느낌임. 결국 작년에 Typescript로 전환했음
    • 최신 Swift 6.3을 써도 Apple 플랫폼 외의 개발은 여전히 고통스러움
      무엇보다 Apple이라는 게이트키퍼를 스택에 자발적으로 들이고 싶어 하는 사람은 거의 없을 것 같음
    • Google도 한때 TensorFlow를 Python에서 Swift로 옮기려 했었음
      TensorFlow Swift 프로젝트
    • Python 3조차 Python을 대체하는 데 오래 걸렸음
    • Python은 대화형 인터프리터 덕분에 반복 개발과 Jupyter Notebook에서 강력함
      CircuitPython도 임베디드 프로토타이핑에 유용했음. Swift는 이런 영역을 제대로 잡지 못했음
      게다가 Swift가 Linux에 온 건 2016년, Windows는 2020년, FreeBSD는 2025년에야 가능해졌음
      2010년대 중반엔 Go, Julia, Rust, TypeScript, Solidity 등 새 언어가 쏟아져서 다들 하나둘만 배울 여유가 있었음
  • Swift가 스택 전층을 아우르는 언어가 되길 바랐지만, 현실은 그렇지 않음
    Apple이 기회를 낭비한 느낌임

    • 나는 실제로 Swift로 스택 전층을 다루고 있음
      예를 들어 ClearSurgery는 리눅스에서 실시간 컴포넌트까지 전부 Swift로 작성되어 있음
  • 지난주에 xv6-riscv 운영체제를 Zig, Nim, LISP, Swift로 포팅했음
    임베디드 Swift의 발전 덕분에 생산성이 높은 언어로 느껴졌음. 메모리 접근을 감싸는 추상화도 깔끔했음
    하지만 컴파일 속도가 너무 느려서 결국 Nim으로 집중하게 됨

    • Nim은 오랜만에 들어보는 이름인데, 왜 그걸 선택했는지 궁금함
    • 혹시 McCarthy LISP를 말하는 건지 물어봄
  • Swift의 컴파일 속도 개선이 언급되지 않아 아쉬움
    Rust보다 느린 컴파일은 개발 경험을 크게 떨어뜨림

    • 나도 최근 Swift 프로젝트를 해봤는데, 의존성이 많을수록 컴파일이 너무 느려서 놀랐음
      Go의 빠른 빌드에 익숙하다면 Swift는 정말 반복 개발이 고통스러움. 언어 자체는 훌륭하지만 피드백 루프가 너무 느림
  • Swift 6.3에서 Android용 공식 SDK가 처음 포함되었음

    • Windows와 Linux용도 있는지 궁금함
      Windows는 5년 전 블로그 글,
      Linux는 GNOME용 가이드가 있음
      예전 OpenSTEP처럼 한 번의 개발로 여러 플랫폼에 배포할 수 있다면 좋겠음
    • 서버용 Swift보다도 덜 쓰일 것 같음
  • noncopyable 타입 개선이 이번 릴리스의 가장 과소평가된 부분임
    이제 Swift에서 고유 소유권 모델링이 훨씬 현실적으로 가능해짐

  • Swift 6.3의 @c 속성으로 Swift 함수를 C 코드에 노출할 수 있게 되었음
    그런데 왜 이렇게 늦게 추가된 건지 의문임. C++ 상호운용을 먼저 넣은 건 이상한 우선순위 같음

    • 사실 예전엔 밑줄 속성으로 이미 존재했음
    • C++ 상호운용은 Apple이 기존 저수준 코드베이스 흡수를 위해 중요했음
      반면 Swift를 C로 내보내면 FFI 스파게티가 생기고, enum·소유권·null 처리 등에서 ABI 버그가 생기기 쉬움
      특히 클로저가 섞이면 호출 규약이 어긋나서 디버깅에 하루를 날릴 수도 있음
    • ObjC로 내보내는 기능이 이미 있었기 때문에 우선순위가 낮았음
    • 예전부터 실험적으로 써봤는데 이제 공식화된 것임
  • 예전에 Swift로 C 프로그램용 dylib을 만들 때 @cdecl을 써야 했는데, 이제 공식 지원이라 반가움

  • 마케팅 외의 실제 변경사항은 CHANGELOG
    Swift Evolution 제안 목록에서 볼 수 있음
    6.3은 주로 통합 작업 중심의 릴리스였음 — stdlib, C/C++, swift-java 상호운용, 빌드 시스템 등
    SPM이 Xcode 기능을 점점 흡수 중이며, 새로운 swift-build 엔진과 prebuilt 모듈도 실험 중임
    하지만 SPM과 Xcode의 상호작용은 여전히 불안정하고, 내부 복잡성이 커지고 있음
    언어 자체의 진보는 조용하지만, 수명 제어와 동시성 색상화 등 깊은 구조 작업이 진행 중임
    여러 OS·디바이스·CI 환경이 얽혀 있어서, Swift 개발자는 항상 변화 속에서 균형을 잡아야 하는 상황

    • Swift 6.4에서는 swift-build가 기본이 될 예정임
      공식 포럼 글에 따르면,
      이미 Xcode가 내부적으로 사용 중이지만 성능 문제가 심각
      관련 토론도 있음.
      SPM과 Xcode가 같은 엔진을 쓰면 개선될 수도 있지만, 큰 기대는 하지 않음
  • 최신 Swift 버전에서 툴체인이 어떤지 궁금함. Swift Lint와 Swift Format이 지원되는지 알고 싶음
    현대 언어라면 내장 포매터와 권장 린트 규칙이 있어야 함. 언어만이 아니라 생태계 전체가 중요함

    • 이제 두 도구 모두 기본 포함됨. 외부 의존성 없이 swift formatswift format lint로 바로 사용 가능함