>💥Swift의 새로운 점!
- 더 많은 플랫폼 지원 (여러 도메인 문제 해결 위해)
- 런타임 성능에서 중요한 발전
- 버전업이 될 수록 code size가 감소하고 있음
>code size
앱의 일부이고 앱의 logic에서 기계어를 말함

Swift 5.3에 오면서까지 옵젝씨의 비율이 점점 줄어들고 있음

스유에서도 code size가 크게 개선 됨
- 메모리 할당 면에서 값 유형은 참조 유형보다 이점이 있다.
- 왜그런지 예를 들어보자
> 옵젝씨

> Swift

Swift는 값 타입을 사용하기 때문에 옵젝씨처럼 포인터를 통해 값에 접근할 필요가 없다.

Swift 5.1과 옵젝씨의 메모리 사용량 비교

하지만, swift는 런타임 오버헤드때문에 많은 힙메모리를 사용한다.
이전에 Swift는 시작할 때 많은 캐시와 메모리를 생성했다.
모든 언어 런타임에는 약간의 오버헤드가 있지만 Swift의 경우 너무 컸기 때문에 최적화하는 데 큰 중점을 두었다.
> 최적화 결과

5.3은 5.1에 비해 힙메모리를 3/1 미만까지 사용하게 되었다. => iOS 14부터 가능
그 이외 개선된 점
- 더 낮은 low-level수준의 프레임워크를 만들기위해 swift가 사용될 수 있게 됨
- 옵젝씨나 씨를 사용해 개발해야 했던 프레임워크를 개발할 수 있게 됨 good
- 더 자세하게 에러를 나타낼 수있는 진단이 생김
- 코드 작성시 더 정확하게 타입을 나타내줌
- keyPath도 나타나게해준다.
- code completion이 15배나 더빠름
- 들여쓰기 정확도도 높아짐
- 디버거는 불투명한 "잘못된 명령" 충돌을 표시하는 것에 그치는 게 아니라 런타임 실패 트랩에 대한 이유도 표시함
- 크로스 플랫폼 지원
- Apple platforms
- Ubuntu 16.03, 18.04, 20.04
- CentOS 8
- Amazon Linux 2
- Windows
- 오픈소스인 Swift AWS runtime을 이용해 서버리스 기능을 ㅜ십게 구현할 수 있게 함
- 언어와 라이브러리
- 원래 마지막 클로저만 trailing closure 적용이 됐는데, 중간 클로저도 적용가능해짐
- 
- 
- 클로저에서 keypath가 자동으로 뜸
- 
- $0.shoeSize => \.shoeSize
- @main(프로그램 시작점 지정)을 사용하면 컴파일러가 대신 main.swift를 암시적으로 만들어준다. (원래는 @UIApplicationMain이었음)
- 클로저의 캡쳐 리스트에서 self를 써주었다면 body에서는 생략해도 됨
- 
- struct, enum 타입인 경우는 self를 안써줘도 됨 (순환 참조를 만들지 않으니까)
- do-catch 문의 변경
- 변경 전
- 변경 후
- Float16 추가 (2byte 메모리)
- OSLog (통합 로깅 시스템) 개선
- 에러가 일어나면 print를 해서 콘솔창으로 확인하던 방식과 달리 로그를 남길 수 있음
- 재현하기 어려운 버그를 추적할 수 있음
- Swift Numerics
- 숫자에 관련한 새로운 오픈소스
- 복소수 및 산술 지원뿐만 아니라 일반 컨텍스트에 훨씬 더 유용한 방식으로 사인 및 로그와 같은 모든 기본 수학 함수를 정의