# Swift 6 출시

> Clean Markdown view of GeekNews topic #16818. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=16818](https://news.hada.io/topic?id=16818)
- GeekNews Markdown: [https://news.hada.io/topic/16818.md](https://news.hada.io/topic/16818.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-09-18T09:57:25+09:00
- Updated: 2024-09-18T09:57:25+09:00
- Original source: [swift.org](https://www.swift.org/blog/announcing-swift-6/)
- Points: 7
- Comments: 2

## Summary

Swift 6는 다양한 플랫폼과 도메인으로 확장되어 동시성, C++ 상호 운용성, 임베디드 Swift 등 여러 새로운 기능을 제공합니다. 또한, 새로운 테스트 라이브러리와 생산성 향상 기능을 도입하하고, Linux와 Windows에 대한 지원이 확장되고 성능이 향상되어, 다양한 환경에서의 개발이 더욱 원활해졌습니다.

## Topic Body

- 이 릴리스는 Swift를 더 많은 플랫폼과 도메인으로 확장함  
- Swift는 앱 개발 언어로 잘 알려져 있지만, 라이브러리, 인터넷 규모의 서비스, 성능이 중요한 코드 등 다양한 용도로도 훌륭함  
- Swift 6는 새로운 저수준 프로그래밍 기능, 임베디드 Swift 언어 서브셋, 확장된 Linux 및 Windows 지원, 새로운 크로스 플랫폼 API 등을 통해 더 확장됨  
  
#### 언어와 표준 라이브러리  
  
##### 동시성  
- Swift 6는 새로운 언어 모드를 통해 동시성 코드에서 데이터 경합을 방지하는 안전성을 제공함.  
- `-strict-concurrency=complete` 컴파일러 플래그를 통해 데이터 경합 안전성 경고를 제공함.  
- 새로운 동기화 라이브러리로 저수준 동시성 API를 포함함.  
  
##### Typed throws  
- 함수가 던지는 오류 타입을 서명에 명시할 수 있게 됨.  
- 제네릭 코드에서 오류 타입을 전달하거나 메모리 할당이 제한된 환경에서 유용함.  
  
##### 소유권  
- Swift 5.9에서 도입된 비복사 타입을 제네릭 시스템과 통합하여 성능을 향상시킴.  
- `~Copyable` 구문을 사용하여 리소스를 모델링하고 성능을 최적화함.  
  
##### C++ 상호 운용성  
- Swift 6는 C++의 move-only 타입, 가상 메서드, 기본 인수 등을 지원함.  
- `SWIFT_NONCOPYABLE` 주석을 통해 C++ 타입을 비복사 타입으로 노출 가능함.  
  
##### 임베디드 Swift  
- 임베디드 소프트웨어 개발을 위한 언어 서브셋과 컴파일 모드를 포함함.  
- ARM 및 RISC-V 베어 메탈 타겟을 지원함.  
  
##### 128비트 정수  
- 서명된 및 서명되지 않은 128비트 정수 타입을 추가함.  
  
##### 생산성 향상  
- `count(where:)`와 같은 생산성 향상을 위한 여러 기능을 도입함.  
  
#### 디버깅  
  
##### `@DebugDescription`을 통한 사용자 정의 LLDB 요약  
- `@DebugDescription` 매크로를 사용하여 LLDB에서 객체를 표시하는 방법을 사용자 정의 가능함.  
  
##### 명시적 모듈을 통한 시작 성능 향상  
- 명시적 모듈 빌드를 사용하여 디버거의 시작 성능을 크게 향상시킴.  
  
#### 라이브러리  
  
##### Foundation  
- 모든 플랫폼에서 Foundation의 구현을 통합함.  
- macOS와 iOS에서 사용된 Swift 구현을 Linux와 Windows로 확장함.  
  
##### Swift Testing  
- Swift Testing이라는 새로운 테스트 라이브러리를 도입함.  
- 매크로를 사용하여 테스트를 작성하고 조직하는 데 도움을 줌.  
  
#### 플랫폼 지원  
  
##### 완전 정적 SDK for Linux  
- Linux용 완전 정적 링크 실행 파일을 빌드할 수 있음.  
  
##### 새로운 Linux 배포판  
- Debian, Fedora, Ubuntu 24.04에 대한 공식 지원을 추가함.  
  
##### Windows 빌드 성능  
- arm64 아키텍처에 대한 사전 빌드된 툴체인을 제공함.  
- Swift 패키지 관리자가 Windows에서 기본적으로 빌드를 병렬화함.  
  
#### 다음 단계  
  
##### Swift 6 다운로드  
- Swift.org/install에서 공식 Swift 6 툴체인을 설치할 수 있음.  
  
##### Swift 시작하기  
- Swift 프로그래밍 언어 책이 최신 Swift 6 구문과 기능을 반영하도록 업데이트됨.  
  
##### 패키지 생태계 탐색  
- Swift.org/packages에서 다양한 패키지를 탐색할 수 있음.  
  
##### 참여하기  
- Swift 6에 대한 피드백과 경험을 공유하여 언어, 도구, 패키지 생태계, 커뮤니티의 미래 발전에 기여할 수 있음.  
  
#### GN⁺의 정리  
  
- Swift 6는 다양한 플랫폼과 도메인으로 확장된 주요 릴리스임.  
- 동시성, C++ 상호 운용성, 임베디드 Swift 등 여러 새로운 기능을 포함함.  
- Swift Testing과 같은 새로운 라이브러리와 생산성 향상 기능을 도입함.  
- Linux와 Windows에 대한 지원을 확장하고 성능을 향상시킴.  
- Swift 6는 개발자에게 더 많은 가능성과 효율성을 제공함.

## Comments



### Comment 28977

- Author: neo
- Created: 2024-09-18T09:57:25+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41571606) 
- Swift는 거버넌스의 내재된 갈등으로 인해 천천히 죽어가고 있음
  - Swift Working Group™ 오픈 소스 커뮤니티와 Apple 기업 간의 갈등이 존재함
  - Apple이 대부분의 급여를 지불하기 때문에 Apple이 더 큰 영향력을 가짐
  - 하드코딩된 컴파일러 예외와 같은 기술 부채가 컴파일러 코드베이스에 영구적으로 존재함
  - Apple이 SwiftUI 문법을 예쁘게 만들기 위해 반쯤 완성된 개념을 논의 없이 밀어붙임
  - 여전히 놀라운 언어지만 Apple이 놓아주지 않으면 향후 10년 동안 잘 살아남기 어려울 것 같음

- Swift를 새로 배우고 있으며 현재까지는 괜찮다고 생각함
  - SwiftUI를 사용할 때 "컴파일 실패: 컴파일러가 이 표현식을 합리적인 시간 내에 타입 체크할 수 없음; 표현식을 개별 서브 표현식으로 나누어 보세요"라는 오류가 자주 발생함
  - 컴파일러가 도움을 요청하는 것이 충격적임

- 안전한 동시성과 타입이 지정된 throws 덕분에 Swift가 더 친근한 Rust처럼 보이기 시작함
  - 패키지 생태계가 작기 때문에 일상적으로 사용하지는 않을 것 같음
  - 크로스 플랫폼 Foundation이 이를 개선하는 방향으로 나아가기를 희망함

- Swift 6는 크로스 플랫폼 배터리 포함 개발에 있어 큰 도약임
  - Foundation이 많은 것을 기본적으로 제공하기 때문에 큰 장점임
  - Swift 6는 저수준 개선과 크로스 플랫폼 기능이 충분하여 C, C++, Rust, Zig 등을 장기적으로 대체하려는 시도로 보임

- 최근 Swift와 SwiftUI를 배우기 시작했으며 언어가 복잡하다는 것에 놀람
  - 특히 반응형 인스턴스 변수와 관련하여 복잡함
  - @observableObject와 같은 개념을 이해하지 못함
  - 여러 가지 방법이 있어 결국 작동할 때까지 시도해 봄

- Swift가 macOS에만 머물 것이라고 생각했지만 매우 흥미로움
  - Ubuntu 패키지에서 Swift 컴파일러를 Debian으로 변환할 때 문제가 있었음
  - 대부분의 기능은 작동하지만 sigterm 신호와 같은 간단한 것들은 작동하지 않음
  - Swift는 환상적인 언어이며 오늘날 가장 발전되고 스마트한 언어라고 생각함
  - SwiftUI의 구현 방식을 보면 놀라울 정도임
  - 언어는 사용하기 쉽고 개발자의 실제 사용을 고려한 고급 기능과 아이디어로 가득 차 있음
  - 그러나 컴파일러 오류 메시지와 문서는 매우 불친절함
  - 대부분의 라이브러리는 아직 Linux에서 잘 작동하지 않지만 안전성과 속도, 개발의 즐거움 사이의 균형을 맞추면 미래가 밝음

- Swift는 무엇을 하고 싶은지 결정하고 그것을 고수해야 함
  - 너무 많은 문법 설탕과 반쯤 완성된 개념이 있음

- SwiftGodot을 시도했으며 게임 개발에 Swift를 사용하는 것이 C#의 GC 지연보다 흥미로움
  - 아직 Windows 개발 라이브러리를 공유하는 것을 지원하지 않음
  - 컴파일 시간이 오래 걸림
  - 변경 로그에 Windows에서 멀티 스레드 Swift 패키지 관리자 개선이 언급됨

- 점진적으로 이동할 수 있는 것이 매우 좋음
  - Swift-6 모드로 이동하는 것은 데이터 경합 안전성 검사를 포함하여 부담스러울 수 있음
  - 새로운 도구를 사용할 수 있지만 5.10 버전의 언어를 계속 사용할 수 있음
  - 동일한 패키지를 두 가지 언어 모드에서 빌드할 수 있어 라이브러리가 버전업을 하면서도 준비되지 않은 클라이언트를 지원할 수 있음

- Swift 언어가 괴물이 되어버렸음

### Comment 28997

- Author: bus710
- Created: 2024-09-19T02:11:22+09:00
- Points: 2
- Parent comment: 28977
- Depth: 1

스위프트라는 멋진 언어를 시작하기 위해서는 다소 비싼 애플 생태계를 도입 할 수 밖에 없는게 개발자들에게 작지 않은 벽이 되는 것 같습니다.
