안녕하세요 :) 오랜만입니다!
이번 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 는 커뮤니티다!
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는 동시 프로그램 작성 시 흔히 발생하는 프로그래밍 오류입니다.
Swift 는 이 동시성과 관련된 문제를 해결하기 위해 노력을 했다고 합니다.
- 가변 상태를 보호하기 위한 Actor
- 안전한 데이터 공유를 위한 Sendable
Swift 6 는 데이터 레이스 문제를 컴파일 타임에 오류를 찾아준다고 합니다!
Data race Safety는 다른 모듈과 상관없이 유일하게 이루어지는 업데이트라고 하네요 :)
바로 사용 가능하다고 해요!
또한 새롭게 나온 저수준 프리미티브가 있다고 하네요.
동기화 모듈에는 Atomic, Mutex 이 있다고 하는데 ... 이 부분에 대해서는 다음에 자세하게 알아보면 좋을 것 같아요.
간단하게 알아봤는데, 새로운게 엄청 많은 것 같은 것 같아요.
Swift 로 얼마나 크게 확장하려고 이렇게 빌드업을 하는 걸까요.
지금 당장 사용하지 않는다고 해도, 이렇게 새로운 소식이 나올 때마다 무엇이 있는지 파악하는 것 만으로도 도움이 많이 되는 것 같아요.
그리고 새로 나온 것을 배우면서, 기존에 부족했던 개념들이 조금 파악된 것 같은데요.
다시 한번 기초가 중요하다고 생각이 드네요.