티스토리 뷰
안녕하세요 :) Zedd입니다.
얼마전에 Swift 4.1이 나왔죠..!! Xcode도 9.3이 나왔구요.
<flatMap -> compactMap>글도 쓰긴 했는데.. Swift 4.1에서 바뀐게 flatMap뿐이냐?
아닙니다 :)
Apple의 Swift공식 사이트인, Swift.org에서 Swift 4.1변경 사항을 공지했어요 XD
- SE-0143 Conditional Conformance
- SE-0157 Support recursive constraints on associated types
- SE-0185 Synthesizing Equatable and Hashable conformance
- SE-0187 Introduce Sequence.compactMap(_:)
- SE-0188 Make Standard Library Index Types Hashable
- SE-0191 Eliminate IndexDistance from Collection
달라진게 이정도 있다는데요
그냥 바뀐 것만 딱 보고싶진 않고 그래서.. <Swift 4.1 Released!>글을 먼저 보도록 할게요 :)
# Swift 4.1 Released!
Swift 4.1이 이제 공식 출시되었습니다! Generic, 새로운 빌드 옵션, Swift Package Manager 및 Foundation의 사소한 기능 향상에 대한 추가 지원을 포함하여 핵심 언어에 대한 업데이트가 포함되어 있습니다. ABI를 안정시키는 데 상당한 진전이 있었습니다.
API는 소스 코드에서 사용되고 ABI는 바이너리에서 호환이 된다. 아키텍처와 운영체제마다 조금씩 차이가 있다.
# Compiler Updates(컴파일러 업데이트)
Swift 4.1은 minor language release입니다. Swift 4.0과 호환되는 소스입니다. 여기에는 다음과 같은 언어 변경 및 업데이트가 포함되어 있으며 대부분은 Swift Evolution process를 거쳤습니다.
# Language improvements
Swift 4.1은 제네릭 기능을 더 많이 추가하여 Swift Generics Manifesto(정책, 정권공약, 선언, 선언서의 의미)에서 제시 한 목표를 향상시킵니다.
- SE-0143 Conditional Conformance
- SE-0157 Support recursive constraints on associated types
- SE-0185 Synthesizing Equatable and Hashable conformance
- SE-0187 Introduce Sequence.compactMap(_:)
- SE-0188 Make Standard Library Index Types Hashable
- SE-0191 Eliminate IndexDistance from Collection
# Build improvements
이 release에서는 새로운 코드 사이즈(new code size..라서 이렇게 번역했는데..새로운 코드 사이즈..뭐지..)최적화와 target environment 및 플랫폼 지원(platform support)을 지정하는 더 쉬운 방법을 포함하여 빌드를 구성하는 다양한 방법을 제공합니다.
# Code size optimization mode
이제 컴파일러는 전용 최적화를 통해 코드 크기를 줄이는 새로운 최적화 모드를 지원합니다. (아 이말이었군)
# Build import test
canImport()
플랫폼 조건에 대한 인수(argument)는 모든 플랫폼에 없을 수도 있는 모듈의 이름입니다. 이 조건은 모듈을 가져올 수 있는지 테스트하지만 실제로 가져 오지는 않습니다. 모듈이 있으면 플랫폼 조건이 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
# Target environment condition
시뮬레이터에서 코드를 컴파일 할 때, targetEnvironment(simulator)
플랫폼 조건이 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
# Foundation
JSONEncoder 및 JSONDecoder 클래스는 이제 인코딩 및 디코딩 중에 키를 변환하는 새로운 전략(new strategies)을 지원합니다.
이것은 이 포럼 게시물에서 더 자세히 논의되었습니다.
대박...!!!!!!!!!!!!!!!!!!꼭 써야지 이거 -> 썼어요..! <Key decoding strategy>
# Additional updates
다음은이 release에서 구현 된 추가 Swift Evolution proposal입니다.
# ABI Stability
Swift 4.1에는 Swift 5에서 ABI를 안정화시키기위한 노력의 일환으로 여러 가지 under-the-hood 변경 사항이 포함되어 있습니다. 이번 release에서 완료된 작업 목록은 다음과 같습니다.
- Use word-size field in native object header for reference counting (SR-4353)
- Review the efficiency of interacting with the enum discriminator through the witness table (SR-4332)
- Decide the layout of existential type metadata, including protocol descriptors (SR-4341)
- Define canonicalization of generic and protocol requirements for order-agnostic mangling (SR-3733)
- Audit of every runtime function for desirability and behavior (SR-3735)
- Enforce appropriate constraints on
Sequence
s andCollection
s (SR-3453) - Collapse various collection wrappers using conditional conformance (SR-3458)
영어가 더 읽기 편할까봐 ㅎㅎ
- reference counting(레퍼런스 카운팅)을 위해 원시객체 헤더에 단어 크기(word-size) 필드 사용 (SR-4353)
- 목격자 테이블(witness table....진짜 목격자 테이블..인데 이걸 뭐라고 말해야하지)을 통해 enum 판별자와 상호작용하는 효율성을 검토합니다. (SR-4332)
- 프로토콜 설명자를 비롯하여 타입 메타 데이터의 레이아웃 결정 (SR-4341)
- 순서에 의존하지 않는(agnostic의 it적 의미는 http://blog.naver.com/PostView.nhn?blogId=mug896&logNo=140190565713참고) 맹글링(...)을 위한 generic과 protocol 요구사항의 표준화 정의 (SR-3733)
- 바람직한 작동 및 동작에 대한 모든 런타임 함수의 감사 (SR-3735)
Sequence
s 와Collection
s 에 대한 적절한 제약 적용 (SR-3453)- conditional conformance를 사용하여 다양한 colleciton wrappers축소 (SR-3458)
(이걸 번역하면서 가장 힘들었던건 order-agnostic mangling....이게 뭐지...............Mangling의 뜻이 형태를 알수없게 짓이기다, 난도질하다, 토막토막내다..라는데..순서에 의존하지 않게 토막토막....내는건가......아무튼 이건 잘 모르겠네요..ㅎㅎ..)
Swift를위한 ABI 안정성의 진전에 대한 자세한 내용은 ABI 대시 보드를 확인하십시오.
# Package Manager Enhancements
Swift 4.1의 Swift Package Manager에는 두 가지 향상된 기능이 있습니다.
# Migrating to Swift 4.1
Swift 4.1은 Swift 4.0과 호환됩니다. Swift의 이전 releases에서 Swift 4.1로 전환하는 것을 돕기 위해 Apple의 Xcode 9.3에는 필요한 소스 변경 사항을 자동으로 처리 할 수있는 코드 마이그레이션 도구가 포함되어 있습니다. 또한 변경 사항의 많은 부분을 안내 할 수있는 마이그레이션 가이드가 있습니다. 특히 기계적 결함이 적고 좀 더 직접적인 조사가 필요한 것들을 통해서말이죠.
# Documentation
Swift 4.1 용 Swift Programming Language의 업데이트 된 버전이 이제 Swift.org에서 제공됩니다. Apple의 iBooks 스토어에서도 무료로 제공됩니다.
XD 다음글에서 뭐가 어떻게 바뀌었는지 보도록 할게요 :)
Swift 4.2 released! - (2) 읽으러가기
'Swift' 카테고리의 다른 글
Swift ) Hashable (1) | 2018.04.10 |
---|---|
Swift ) Key decoding strategy (0) | 2018.04.08 |
Swift ) NSString.CompareOptions종류 (0) | 2018.03.24 |
Swift ) ComparisonResult살펴보기 (0) | 2018.03.24 |
Swift4.1 ) flatMap -> compactMap (2) | 2018.03.11 |
- np-hard
- actor
- Xcode
- WidgetKit
- iOS delegate
- IOS
- swift tutorial
- swift 공부
- 피아노
- github
- ios 13
- swift3
- np-complete
- Swift
- fastlane
- Combine
- Git
- Accessibility
- swift sort
- WKWebView
- 회고
- UIBezierPath
- WWDC
- 스위프트 문법
- SwiftUI
- swift delegate
- swift array
- 제이슨 파싱
- 스위프트
- FLUTTER
- Total
- Today
- Yesterday