
애플의 프로그래밍 언어 스위프트가 최신 버전인 5.7 버전을 배포했다. 인포월드는 스위프트 5.7 버전의 주요 특징으로 사용성 개선, 보다 축약되고 빨라진 표준 라이브러리, 빌드 및 배포 시간 축소, 새로운 제네릭 구현 등을 언급했다.
스위프트 5.7은 if let 구문, 멀티 구문, 클로저 타입 주석 등 보일러플레이트 코드를 위한 새로운 단축 구문을 추가했다.
또한, 기존에 오랫동안 존재했던 언어의 제약을 제거하여 더욱 매끄러운 제네릭 프로그래밍을 구현하였으며 새로운 주석과 옵트인 진단을 이용하여 데이터 레이스 안전(data race safety)을 개선하였다. 문자열 처리를 위한 새로운 기능과 API가 제공되며 분산 환경에서 행위자 격리(actor isolation) 기능도 지원한다.
자료형 검사자(type checker)의 제네릭 구현도 재작성되어 성능과 정확도를 개선하였다. 스위프트 5.6에서는 일부 프로토콜 구성과 연관 타입(associated type)의 자료형 검사 시간이 기하급수적으로 늘어났지만 스위프트 5.7에서는 선형적으로만 증가한다. 스위프트의 제네릭 구현 개선은 오랫동안 존재해오던 버그를 다수 제거하며 여기에는 컬렉션의 SubSequence 연관 타입이나 CaseIterable 프로토콜 관련된 것들이 포함된다.
또, 자동 참조 카운트(Automatic reference counting)로 최적화 허용 시 변수의 수명을 줄이는 새로운 규칙을 적용했다. 사용자 친화성과 예측 가능성을 한 단계 더 높였다. 새로운 규칙을 적용하기 위하여 컴파일러는 내부적으로 각 변수의 정적 범위(lexical scope)를 추적한다.
함수 콜 인수, 글로벌 함수, 변수의 코드 완성은 스위프트 자료형 검사자(type checker)와의 연계로 코드 완성도의 정확도를 높이기도 했다.
마지막으로 윈도우 툴체인의 변화에도 주목할 만하다. 스위프트 5.7 버전은 스위프트 드라이버를 컴파일러 드라이버로 온전히 채택한다. 따라서 C++ 드라이버를 대체재로 이용하지 않아도 된다.
윈도우의 설치 프로그램은 모듈 지도(module-map)와 패키징 파일을 이용하도록 개선되어 설치 프로그램의 크기가 줄어들었다.
[저작권자ⓒ CWN(CHANGE WITH NEWS). 무단전재-재배포 금지]