Swift

Swift 6, 무엇이 달라졌는가? - WWDC 2024

KoreaMango 2024. 11. 7. 22:36

안녕하세요 :) 오랜만입니다!

 

이번 WWDC 2024에서 Swift 6의 변화에 대해서 설명해주는 영상이 나왔습니다.

 

iOS 개발의 핵심인 Swift가 새롭게 버전이 업데이트 되었다고 하는데 무엇이 변화되었고, 주목할 만한 부분을 보려고 합니다!

 

 

What’s new in Swift - WWDC24 - Videos - Apple Developer

Join us for an update on Swift. We'll briefly go through a history of Swift over the past decade, and show you how the community has...

developer.apple.com

 

영상에서는 처음으로 Swift 프로젝트의 주요 성과와 새로운 투자에 대해 다룹니다.

 

 

Swift 는 커뮤니티다!

www.swift.org/community 

 

Swift.org

Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.

www.swift.org

 

Swift 프로젝트의 Home이라고 합니다.

Swift 커뮤니티에서 전세계 Swift User와 소통하기에 가장 좋아보이네요!

 

 

Swift Everywhere

Swift는 점점 더 많은 플랫폼에 포팅되고 있어, 크로스 플랫폼 언어로 성장하고 있다네요!

 

Apple 뿐만 아니라 Window, Linux 에서도 지원이 된다고 합니다. 

 

또한 Swift를 VScode에서 사용할 수 있다고 하네요.

 

github/apple/swift -> github/swiftlang 으로 바뀌었다고 하네요.

 

독자적으로 Swift에 더 신경을 쓰겠다는 의미 같네요.

 

Swift Everywhere

Swift 언어의 새로운 점.

1. Noncopyable Types

Noncopyable Type을 사용해서 복사 가능성을 억제해준다.

예를 들면 파일과 같은 고유한 시스템 리소스는 복사할 수 없는 구조로 만들 경우에 좋다.

또한 리소스 관리를 통해 성능을 세밀하게 제어할 수 있다.

 

2. Embeded Swift

런타임 기능, 메모리, 용량과 같은 리소스 문제로 하위 수준 시스템에서는 C, C++을 많이 썼는데, 이제는 Swift 로 진행한다고 합니다.

새로운 언어 하위 세트, 컴파일 모델을 사용해 독립형 바이너리를 생성합니다.

Swift 에서 사용하는 런타임 기능을 제거하고 정적 연결 같은 컴파일러 기법을 사용한다고 하네요.

 

애플 보안 프로세서에서 Embeded Swift 를 사용한다고 합니다. 

안정성을 보장하고 C와 C++ 와 상호 운용을 해준다고 하네요

 

3. C++ interoperability

Apple은 지속해서 C++과 상호 운용성을 높이고 있다고 합니다.

C++은 보안성이 부족했는데 C++ 과 Swift를 함께 사용하면서 보안을 챙겼다고 해요.

 

4. Typed throws 

특정 상황에서 오류의 타입을 Dynamic으로 잡아야하는 경우가 생기는데

런타임만 사용해야하는 상황에서는 어려움이 발생할 수 있다고 하네요.

 

그래서 그걸 타이트하게 잡기 위해서 typed throws를 사용한다고 합니다.

그러면 type과 동시에 throws 키워드를 지정한다고 해요.

 

이러한 Typed Throws는 apple의 일반적인 에러 잡는 공식이라고 해서 뜯어보면 다 비슷한 구조라고 해요.

 

결국 코드 중복을 방지하고 정확한 API 계약을 지정할 수 있다고 해요.

 

하지만! 전달된 오류 유형을 변경하는 유연성을 유지하고 싶다면 Untyped Thorws를 사용해야 합니다.

Typed Thorws를 사용하는 경우는 내부 함수, 인수로부터 오류를 전파하는 함수, untyped throw 비용이 큰 경우에서 사용하는 것을 추천해요.

 

5. Data-race safety

Data-race는 동시 프로그램 작성 시 흔히 발생하는 프로그래밍 오류입니다.

Chat GPT에게 Data-Race 물어보기

 

Swift 는 이 동시성과 관련된 문제를 해결하기 위해 노력을 했다고 합니다.

- 가변 상태를 보호하기 위한 Actor

- 안전한 데이터 공유를 위한 Sendable

 

Swift 6 는 데이터 레이스 문제를 컴파일 타임에 오류를 찾아준다고 합니다!

 

Data race Safety는 다른 모듈과 상관없이 유일하게 이루어지는 업데이트라고 하네요 :)

바로 사용 가능하다고 해요!

 

또한 새롭게 나온 저수준 프리미티브가 있다고 하네요.

동기화 모듈에는 Atomic, Mutex 이 있다고 하는데 ... 이 부분에 대해서는 다음에 자세하게 알아보면 좋을 것 같아요.

 

 

 

 

 

간단하게 알아봤는데, 새로운게 엄청 많은 것 같은 것 같아요.

Swift 로 얼마나 크게 확장하려고 이렇게 빌드업을 하는 걸까요. 

 

지금 당장 사용하지 않는다고 해도, 이렇게 새로운 소식이 나올 때마다 무엇이 있는지 파악하는 것 만으로도 도움이 많이 되는 것 같아요.

 

그리고 새로 나온 것을 배우면서, 기존에 부족했던 개념들이 조금 파악된 것 같은데요.

다시 한번 기초가 중요하다고 생각이 드네요.