아래 글은 원문 링크에 구글 번역과 조심스러운 의역으로 이루어져있습니다! 틀린 내용이 있으면 댓글로 알려주세요:)
Swift 5.7 가 정식 출시되었습니다!
Swift 5.7에는 언어 및 표준 라이브러리의 대폭적인 추가, 개발자 익스피리언스의 향상을 위한 컴파일러의 기능 강화, SourceKit-LSP 및 Swift Package Manager 등의 Swift 에코시스템 툴의 기능 향상, Windows의 고도의 지원 등이 포함되어 있습니다.
언어 및 표준 라이브러리
Swift 5.7 언어 및 표준 라이브러리에는 다음과 같은 몇 가지 개선 사항이 있습니다.
- 일반적인 보일러 플레이트 코드의 새로운 줄임말 구문: if let문 및 multi-statement closure type annotations
- 제네릭 프로그래밍을 보다 원활하도록 하기 위해 오랜 언어 제한을 해소했습니다.
- 새로운 어노테이션 및 옵션 입력 진단으로 데이터 레이스 안전성(data race safety) 향상
- 분산 환경에서의 액터 독립(Actor isolation in distributed environments)
- 기존 포인터 API 들의 사용성 향상(a suite of existing poniter APIs 라고 되어있네요)
- 문자열 처리를 위한 새로운 언어 지원 및 API
이러한 기능의 대부분은 WWDC22에서 논의되었으며, 이전 블로그 포스트인 WWDC22의 Swift 언어 발표에서 다루어졌습니다.언어 및 표준 라이브러리 Swift Evolution 제안의 전체 목록은 Swift Evolution 부록에서도 확인할 수 있습니다.
개발자 경험
새로운 제네릭의 도입 (New Generics Implementation)
제네릭을 사용하기 위해 언어 개선, type checking 의 정확성과 퍼포먼스 향상을 위해 처음부터 다시 작성되었습니다.
새로운 구현에서는 컬렉션의 동일 유형 요건과 같은 복잡한 동일 유형 요건 처리와 관련된 오래된 버그가 많이 수정되었습니다.
퍼포먼스도 향상됩니다.
특정 프로토콜 및 관련 유형의 구성에서 유형 검사 시간은 Swift 5.6에서 기하급수적으로 증가하지만, Swift 5.7에서는 선형적입니다.
참조 카운트의 자동 향상 (ARC Improvements)
Swift 5.7에서는 최적화가 허용된 경우 변수의 수명을 단축하는 새로운 규칙을 지정함으로써 ARC 동작을 보다 예측 가능하고 사용자 친화적이며 성능도 향상됩니다.
규칙을 적용하기 위해 컴파일러는 각 변수의 어휘 범위를 추적하는 새로운 내부 표현을 채택했습니다.
여기에는 기존 최적화를 업데이트하고 몇 가지 새로운 최적화를 구현하는 작업이 포함되었습니다.
이제, 연장된 가변 수명에 의존하는 가장 일반적인 프로그래밍 패턴은 프로그래머가 .withExtendedLifetime() 를 명시적으로 사용하지 않아도 안전합니다.
이렇게 하면 최적화된 빌드에서 런타임에만 나타나는 진단하기 어려운 평생 버그로부터 보호할 수 있습니다.
또한 기존 소스를 중단하지 않고 보다 강력한 최적화를 도입할 수 있습니다.
변수의 life time 을 효율적으로 관리함으로써 ARC가 똑똑해졌군요
XCode 14 에 Swift 5.7이 포함된다고 하니 기대되네요
다음 글에선 if let이 어떻게 개선됐는지 작성해보도록 하겠습니다!
'iOS' 카테고리의 다른 글
[EventKit] 캘린더에 이벤트 추가하기(with. Async/await) (0) | 2022.09.23 |
---|---|
Swift 5.7 - if let 문 간략화 (0) | 2022.09.13 |
[SwiftUI]커스텀 백버튼 백 제스처 시 화면 멈춤 이슈 해결 (0) | 2022.09.11 |
[iOS]카카오 로그인 구현 시 키 값 숨기기 (0) | 2022.09.11 |
[iOS][Swift] 프로토콜 vs 인터페이스 차이점 (1) | 2022.09.11 |