관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 1. WWDC2024 정리 - (1) What's new in Swift (Swift의 새로운 기능, Swift Testing, Explicitly Built Modules) 본문

WWDC 정리/WWDC 2024 정리

[iOS - swift] 1. WWDC2024 정리 - (1) What's new in Swift (Swift의 새로운 기능, Swift Testing, Explicitly Built Modules)

jake-kim 2024. 6. 14. 18:44

이번 WWDC 세션의 의미

  • Swift언어가 어떻게 발전하며 앞으로도 어떤 패러다임을 가지고 발전할 것인가를 이해할 수 있는 세션
  • 2024년 Swift의 핵심 패러다임: 다른 플랫폼과의 상호운용성

WWDC2024에서 강조하는 상호 운용성 (Swift everywhere)

Swift 언어의 진화

  • 2014년에 Swift1.0부터 2024년에 Swift6.0이 나오는데, 2023년까지는 전반적으로 다른 언어와 어울릴 수 있는 기반을 다루도록 진화
    • 특히 2023년에는 C++과의 상호 운용성을 도입
    • SwiftData와 같이 차세대 API를 활성화하는 매크로도 도입

애플의 Swift팀 구성

  • 2024년에 새로 생긴팀: Plaform, Ecosystem, Embedded
    • platform: Swift를 더 많은 곳으로 가져오는데 집중하기 위한 플랫폼 운영팀
    • Ecosystem: 개발자 경험과 새로운 생태계 그룹을 만드는데에 집중하는 팀 (새로운 생태계: swift로 만든 서버, linux 등)
    • Embedded: embedded 도입을 위한 팀

Swift의 소식

  • 애플에서는 Swift의 상호운용성을 위해 swift.org 홈페이지에 개발 정보를 제공

https://www.swift.org/

Foundation 프레임워크 새로운 기능

  • Foundation 기본 개념
    • JOSN 디코딩, 날짜 및 시간 포멧 지정, 파일시스템 작업 등 중요한 API를 제공하는 많은 애플리케이션의 필수 요소
    • macOS X 초기까지 거슬러 오래된 프레임워크 중 하나
  • Fondation의 형태
    • Foundation은 Objective-C의 Foundation도 같이 사용하고 있기 때문에 Foundation을 개선하면 swift뿐만이 아닌 Objective-C로 작성된 앱에서도 같이 기능추가가되는 이점이 존재

  • Foundation은 애플이 2023년에 github 오픈소스로서 public으로 공개하여 누구나 contribute할 수 있게끔항
    • Foundation을 github에 공개한 배경은 이전 포스팅 글 참고
  • contribute된 SF-0004도 Swift6.0에서 적용되었음

새로운 테스팅 프레임워크, Swift Testing 

  • 특징
    • macro를 활용
    • Concurrency도 원활하게 통합
  • Pacakge 구성
    • 크로스 플랫폼을 염두에 두고 오픈 소스로 개발
    • VSCode IDE에서도 동작하도록 설계됨

Swift Testing 사용 방법

  • 가장 위에 @Test("...") 매크로로 선언

  • 매크로에 tags를 사용하여 테스트를 구성하고 필터링이 가능

  • 중복방지를 위해 arguments도 사용 가능

  • Swift Testing은 이후 포스팅 글, Meet Swift Testing 세션에서 계속..

Building 시스템 개선

  • 기존에는 코드에 import SwiftUI라는게 있으면, SwiftUI를 빌드해야하고, 그 전에 Foundation을 빌드해야하고, 이렇게 순차적으로 빌드
    • 이렇게 순차적 빌드하다보면 시간이 걸리므로 병렬적으로 빌드할 수 있는 방법이 개선됨

  • 이제는 명시적으로 병렬적으로 빌드가 가능하게하고, 빌드된 결과도 로그로 남도록 표기
    • 이제 디버거가 빌드와 바이너리 모듈을 공유할 수 있으므로 디버깅 속도가 빨라짐

  • 이 설정은 Xcode에서 Explicitly Built Modules 플래그를 Yes로 설정하면 활성화됨
    • 구체적인 개념은 이후 포스팅 글, Demystify explicitly built modules 세션에서 계속..

* 참고

- https://www.swift.org/

- https://developer.apple.com/videos/play/wwdc2024/10136/

Comments