GN⁺: Swift 6 출시
(swift.org)- 이 릴리스는 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는 개발자에게 더 많은 가능성과 효율성을 제공함.
Hacker News 의견
-
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 언어가 괴물이 되어버렸음