nyancoder

WWDC 2021 - What‘s new in Swift 본문

WWDC/WWDC 2021

WWDC 2021 - What‘s new in Swift

nyancoder 2021. 7. 3. 01:06

원본 영상: https://developer.apple.com/videos/play/wwdc2021/10192/

 

Diversity

  • 더 많은 개발자가 Swift 생태계 및 커뮤니티에 참여하도록 장려하고 있습니다.
  • swift.org 블로그에서 다양한 ​​개발자들의 기여를 인정하고 안내하는 게시물을 올렸습니다.
  • 개발자들이 서로 연결될 수 있도록 Swift 포럼에 커뮤니티 그룹을 만들었습니다.
  • swift.org/diversity에서 더 자세한 내용을 확인할 수 있습니다.
  • 새로운 개발자가 기존의 개발자로부터 Swift전반에 걸쳐 지원을 받을 수 있는 멘토링 프로그램을 만들었습니다.

 

Update on Swift packages

  • 좋은 패키지 검색 도구였던 Swift Package Index가 Xcode도구에 통합되었습니다.

 

Package collections in Xcode

  • 이제 XCode나 커맨드 라인에서 쉽게 패키지 목록을 얻어올 수 있습니다.
  • 단순한 JSON이기 때문에 누구나 쉽게 만들 수 있습니다.
  • 서로 다른 목적에 맞추어 구성된 목록을 사용할 수 있습니다.

  • 존재하지 않는 패키지를 import를 하는 경우 한 번의 클릭으로 해당 패키지를 검색해서 자동으로 프로젝트에 추가할 수 있습니다.

  • 올해는 4개의 새로운 패키지가 추가되었습니다.

 

Swift Collections

  • Deque는 Array와 동일하지만 양쪽 끝에서 빠른 삽입, 삭제를 제공합니다.

  • Deque는 Array와 동일하지만 양쪽 끝에서 빠른 삽입, 삭제를 제공합니다.

  • OrderedSet은 Array와 같이 순서를 유지하지만, 동시에 Set처럼 동일한 요소는 하나만 추가할 수 있습니다.

  • OrderedDictionary는 Dictionary와 동일하지만 순서를 유지하고 임의 접근이 가능합니다.

 

Swift Algorithms

  • https://github.com/apple/swift-algorithms
  • 40여 개의 알고리즘을 제공합니다.
  • 가능한 조합을 찾거나, 특정 사이즈만큼 분할하거나, 최대-최소 n개의 항목을 얻어오는 등의 기능을 제공합니다.

 

Swift System

  • Apple, Linux Windows에서 경로 처리에 대한 작업을 할 수 있는 FilePath가 추가되었습니다.

  • 전체 경로는 Root와 ComponentView로 구성되어 있습니다.
  • ComponentView는 여러 Component로 구성되어 있습니다.

 

Swift Numerics

 

The ArgumentParser package

 

Update on Swift on server

  • Linux에서의 정적 링크를 지원합니다.
  • 향상된 JSON 처리 성능을 지원합니다.
  • 33% 향상된 cold startup 시간, 40% 향상된 APIGateway실행 시간, async구문을 제공하는 AWS Lambda 런타임을 지원합니다.

 

Swift DocC

  • 쉬운 문서화를 지원하는 Swift DocC를 제공합니다.
  • 오픈소스로 제공되어 모든 플랫폼에서 더 나은 문서화를 사용할 수 있습니다.

 

Build Improvements

  • 향상된 타입 체크 지원으로 컴파일 단계가 더 빨라지고 적은 오류가 발생합니다.

  • import 된 모듈을 변경할 때의 빌드 속도가 개선되었습니다.
  • 컴파일 시작 시간이 더 빨라졌습니다.
  • extension의 몸체가 변경되었을 때, 더 적은 파일을 재 컴파일합니다.

 

Memory Management

 

  • 보다 적극적인 메모리 해제를 할 수 있는 옵션이 추가되었습니다.

 

Result Builders (SE-0289)

  • SwiftUI를 위해 개발된 기능입니다.
  • 복잡한 오브젝트 구조를 쉽게 정의할 수 있습니다.
  • 올해에 좀 더 표준화하고 개선되었습니다.

 

Enum Codable synthesis (SE-0295)

  • 값을 가진 enum의 Codable 적용이 정의만 하면 자동으로 됩니다.

 

Flexible static member lookup (SE-0297, SE-0299)

  • protocol을 상속받은 객체를 enum처럼 축약해서 사용할 수 있습니다.
  • 체인 된 속성을 사용할 때도 자동으로 타입을 추론합니다.

 

Property wrappers on parameters (SE-0293)

  • 함수의 파라미터에도 Property wrapper를 사용할 수 있습니다.

 

Asynchronous and concurrent programming

  • 기존의 비동기 프로그래밍은 compeltion을 항상 마지막에 호출해야 하거나 복잡한 오류처리가 필요하였습니다.
  • 새로 지원되는 async - await 구문에서는 예외처리를 기존처럼 할 수 있고 비동기 처리도 보다 간단하게 됩니다.

 

Structured Concurrency

  • async let 구문을 활용하여 비동기 결과를 쉽게 받아올 수 있습니다.
  • 각각의 비동기 처리 결과를 쉽게 모아서 처리할 수 있습니다.

 

Actors

  • 여러 스레드에서도 안전하게 내부의 값을 다룰 수 있는 Actor를 지원합니다.
  • Actor는 다른 async코드와도 함께 사용할 수 있습니다.

 

Swift6

 

  • 동시성 처리의 오류를 보다 잘 검증할 계획입니다.
  • 기존 경험이 공유되면 보다 나은 컴파일러를 만들 수 있을 것입니다.
  • 컴파일러 snapshot을 통해서 새로운 기능들을 사용해 볼 수 있습니다.
  • 포럼에 참여하여 더 나은 개선에 기여할 수 있습니다.

 

목차: https://nyancoder.tistory.com/2

 

Comments