티스토리 뷰

Swift

Swift 4.1 Released! - 1

Zedd0202 2018. 4. 7. 12:37
반응형

 

 

안녕하세요 :) Zedd입니다.

얼마전에 Swift 4.1이 나왔죠..!! Xcode도 9.3이 나왔구요.

<flatMap -> compactMap>글도 쓰긴 했는데.. Swift 4.1에서 바뀐게 flatMap뿐이냐?

아닙니다 :)

Apple의 Swift공식 사이트인, Swift.org에서 Swift 4.1변경 사항을 공지했어요 XD

 

달라진게 이정도 있다는데요

그냥 바뀐 것만 딱 보고싶진 않고 그래서.. <Swift 4.1 Released!>글을 먼저 보도록 할게요 :)

 

# Swift 4.1 Released!

 

Swift 4.1이 이제 공식 출시되었습니다! Generic, 새로운 빌드 옵션, Swift Package Manager 및 Foundation의 사소한 기능 향상에 대한 추가 지원을 포함하여 핵심 언어에 대한 업데이트가 포함되어 있습니다. ABI를 안정시키는 데 상당한 진전이 있었습니다. 

(※ ABIApplication Binary Interface. 응용 프로그램과 라이브러리 사이에 필요한 수준 인터페이스를 정의. API보다 ABI low level.
 

API 소스 코드에서 사용되고 ABI 바이너리에서 호환이 된다아키텍처와 운영체제마다 조금씩 차이가 있다.

ex)  윈도 98에서 돌아가던 XP에서도 돌아가는 이유는 MS에서 ABI 원하기 때문이다
 
 

# Compiler Updates(컴파일러 업데이트)

Swift 4.1은 minor language release입니다. Swift 4.0과 호환되는 소스입니다. 여기에는 다음과 같은 언어 변경 및 업데이트가 포함되어 있으며 대부분은 Swift Evolution process를 거쳤습니다.


# Language improvements

Swift 4.1은 제네릭 기능을 더 많이 추가하여 Swift Generics Manifesto(정책, 정권공약, 선언, 선언서의 의미)에서 제시 한 목표를 향상시킵니다.

이번 release에서는 다음 Generic 관련 제안이 구현되었습니다.
 

 

# Build improvements

이 release에서는 새로운 코드 사이즈(new code size..라서 이렇게 번역했는데..새로운 코드 사이즈..뭐지..)최적화와 target environment 및 플랫폼 지원(platform support)을 지정하는 더 쉬운 방법을 포함하여 빌드를 구성하는 다양한 방법을 제공합니다.

 
# Code size optimization mode

이제 컴파일러는 전용 최적화를 통해 코드 크기를 줄이는 새로운 최적화 모드를 지원합니다. (아 이말이었군)

이것은 이전에 이 블로그 포스트에서 더 자세히 논의되었습니다.

 

# Build import test

 canImport()  플랫폼 조건에 대한 인수(argument)는 모든 플랫폼에 없을 수도 있는 모듈의 이름입니다. 이 조건은 모듈을 가져올 수 있는지 테스트하지만 실제로 가져 오지는 않습니다. 모듈이 있으면 플랫폼 조건이 true를 반환합니다. 그렇지 않으면 false를 반환합니다.

 
와 이거 대박............canImport의 인수로 어떤 모듈의 이름을 넣으면 그 모듈이 “있는지”만 테스트하고 실제로 가져오지는 않는...
 

# 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 Sequences and Collections (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)
  • Sequences 와 Collections 에 대한 적절한 제약 적용 (SR-3453)
  • conditional conformance를 사용하여 다양한 colleciton wrappers축소 (SR-3458)
 

(이걸 번역하면서 가장 힘들었던건 order-agnostic mangling....이게 뭐지...............Mangling의 뜻이 형태를 알수없게 짓이기다, 난도질하다, 토막토막내다..라는데..순서에 의존하지 않게 토막토막....내는건가......아무튼 이건 잘 모르겠네요..ㅎㅎ..)

Swift를위한 ABI 안정성의 진전에 대한 자세한 내용은 ABI 대시 보드를 확인하십시오.

 

# Package Manager Enhancements

Swift 4.1의 Swift Package Manager에는 두 가지 향상된 기능이 있습니다.

이제 Swift Package Manager는 ssh 및 http와 같이 서로 다른 URL 체계를 사용하는 패키지 그래프의 종속성을 올바르게 해결합니다.
의존성을 공유하는 패키지 그래프의 성능이 크게 향상되었습니다.
 

# 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