Let’Swift는 Swift 개발자들이 만나고, 배우고, 즐기는 컨퍼런스로 총 13개의 세션으로 이뤄졌습니다. Swift 개발자들이 모여 iOS의 넥스트 스텝을 이야기한 행사였습니다. 빠르게 발전하는 언어 Swift에 대한 뜨거운 열의를 엿볼 수 있었던 Let’Swift 행사 동영상을 공유합니다
2016년 말 발표가 예정된 따끈따끈한 신상 언어, Swift 3.0이 궁금하신가요? 카카오의 개발자, 박세현님이 Swift 3.0에까지 이르는 Swift의 역사와 Swift 3.0의 변경사항을 차근차근 살펴보고 Swift Evolution을 구현해 보면서 Swift 3.0의 변화 방향을 설명해 주셨습니다.
Swift History
- 2010년 7월 Swift 개발 시작
- 2014년 6월 2일 WWDC 앱 Swift로 작성된 공개 앱
- 2014년 9월 9일 Swift 1.0 마일스톤
- 2014년 10월 22일 Swift 1.1
- 2015년 4월 8일 Swift 1.2
- 2015년 WWDC Swift 2.0 발표
-
2015년 12월 3일 Swift 오픈소스 발표, 3.0 로드맵 발표
- Swift 1.2
- 성능향상
- if-let 개선(바인딩)
- as 키워드로 업캐스팅/다운캐스팅
- Set 추가
- Objective-C 옵셔널 수식어 추가
- Swift 2.0
- 에러처리 throw, do try catch
- guard let else
- 프로토콜 익스텐션
- Objective-C 제네릭
Swift 3.0
- 특징
- 예상 발표일: 2016 말
- Swift 언어와 개발 경험 강화
- Swift 3.0과 이후 버전의 소스 호환성
- Swift 3.0 중점사항
- API 디자인 가이드라인
- 임포트한 Obj-C API에 네이밍 가이드라인 자동 적용
- 핵심 API에 네이밍 가이드라인 도입
- 임포트한 Obj-C API의 Swift화 -> Swift에 맞게
- 언어의 집중 및 정교화
- 툴 품질 향상 -> 컴파일러와 ID 개선
- API 디자인 가이드라인
- 사용 시점의 명확성
- 짧은 것보다 명확한 것이 더 중요
- 모든 선언마다 주석으로 문서화
- Swift Evolution(SE)
- Swift 개선 방향은 커뮤니티와 함께 진행 Swift Evolution Process, GitHub
- Socialize ➔ Proposal(PR) ➔ Review ➔ Decision
Swift 3.0 변경 사항
- 삭제 사항
- SE-0002: Removing currying func declaration syntax
-
SE-0003: Removing var from Function Parameters (Function 파라미터에서 var 삭제)
- SE-0004: Remove the ++ and – operators
- SE-0007: Remove C-style for-loops with conditions and incrementers
- SE-0029: Remove implicit tuple splat behavior from function applications
- SE-0053: Remove explicit use of let from Function Parameters
- 함수 변경 사항
- SE-0042: Flattening the function type of unapplied method references
-
SE-0046: Establish consistent label behavior across all parameters including first labels (함수 파라미터 레이블 동작 사항 변경, 파라미터 첫 label을 생략하지 않음)
- SE-0047: Defaulting non-Void functions so they warn on unused results
- SE-0066: Standardize function type argument syntax to require parentheses
-
SE-0110: Distinguish between single-tuple and multiple-argument function types (함수 인자가 tuple임을 명시적으로 선언 예정)
- SE-0111: Remove type system significance of function argument labels
- Optional 변경 사항
- SE-0008: Add a Lazy flatMap for Sequences of Optionals
- SE-0054: Abolish ImplicitlyUnwrappedOptional type
- SE-0055: Make unsafe pointer nullability explicit using Optional
- Debugging & Testing
- SE-0019: Swift Testing
-
SE-0028: Modernizing Swift’s Debugging Identifiers (FILE, etc) (디버깅 Identifier를 변경)
- SE-0034: Disambiguating Line Control Statements from Debugging Identifiers
- SE-0039: Modernizing Playground Literals
- Library
- SE-0016: Adding initializers to Int and UInt to convert from UnsafePointer and UnsafeMutablePointer
- SE-0032: Add first(where:) method to SequenceType
- SE-0052: Change IteratorType post-nil guarantee
- SE-0065: A New Model For Collections and Indices
- SE-0094: Add sequence(first:next:) and sequence(state:next:) to the stdlib
- Swift 3 API Design Guidelines
-
SE-0005: Better Translation of Objective-C APIs Into Swift (Swift API의 번역 개선)
-
SE-0006: Apply API Guidelines to the Standard Library (함수 이름 개선)
- SE-0023: API Design Guidelines
- SE-0059: Update API Naming Guidelines and Rewrite Set APIs Accordingly
-
- Foundation
- SE-0069: Mutability and Foundation Value Types
- SE-0086: Drop NS Prefix in Swift Foundation (NS 프리픽스 제거, 단 Swift에 동일 이름 있는 경우는 제외)
- Objective-C
- SE-0062: Referencing Objective-C key-paths
- SE-0064: Referencing the Objective-C selector of property getters and setters
- SE-0070: Make Optional Requirements Objective-C- only
- SE-0033: Import Objective-C Constants as Swift Types
- SE-0057: Importing Objective-C Lightweight Generics
참고 자료
- Swift (programming language)
- Swift API Design Guidelines
- WWDC2016: What’s New in Swift
- GitHub: apple/swift-evolution
- What’s New in Swift 3?
발표 슬라이드는 아래를 참고해주세요.
컨텐츠에 대하여
이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.