Burt.K

Awesome Discovery

[SE-0006] 표준 라이브러리에 API 가이드라인 적용하기

작성일 — 2025년 3월 8일

Table of Contents

표준 라이브러리에 API 가이드라인 적용하기

리뷰어 노트

이 리뷰는 서로 밀접하게 연관된 세 가지 리뷰 중 하나로, 동시에 진행된다:

이 리뷰들이 동시에 진행되는 이유는 이들이 서로 강하게 상호작용하기 때문이다 (예: 표준 라이브러리의 API 변경은 특정 가이드라인에 해당하거나, 임포터 규칙이 특정 가이드라인을 구현하는 등). 이러한 상호작용과 논의를 관리하기 위해 다음 사항을 요청한다:

소개

Swift 3의 일환으로 개발 중인 Swift API 설계 가이드라인이 있다. 표준 라이브러리는 Swift API 설계 가이드라인의 모범이 되어야 한다. 표준 라이브러리의 API는 어떤 애플리케이션 도메인에서도 가장 빈번히 사용되는 Swift API일 뿐만 아니라, 다른 라이브러리에도 선례를 제공하기 때문이다.

이 프로젝트에서는 표준 라이브러리 전체를 검토하고 가이드라인을 따르도록 업데이트한다.

제안하는 솔루션

실제 작업은 Swift 저장소swift-3-api-guidelines 브랜치에서 진행 중이다. 주요 변경 사항은 다음과 같다.

API 차이점

Swift 2.2 표준 라이브러리 API와 제안하는 API 간의 차이점은 swift-3-api-guidelines 브랜치에서 구현되면서 이 섹션에 추가된다. 많은 타입에 영향을 미치는 반복적인 변경사항의 경우, 대표적인 예시 하나만 보여준다. 예를 들어, generate()makeIterator()로 이름이 변경되었다. 이 메서드의 프로토콜 요구사항만 보여주고, 이 메서드의 다른 모든 이름 변경은 생략한다. 타입 이름이 변경된 경우, 타입 선언에 대한 차이점만 보여주고, 해당 이름이 사용된 API에 미치는 다른 모든 효과는 생략한다.

기존 코드에 미치는 영향

제안된 변경 사항은 Swift 코드에 큰 영향을 미치며, Swift 2 코드를 Swift 3 코드로 변환하기 위해 마이그레이션 도구가 필요하다. 이 제안에서 나온 API 차이가 필요한 변환에 대한 주요 정보 소스가 될 것이다. 또한, 언어가 허용하는 범위 내에서 라이브러리는 기존 이름을 renamed 주석과 함께 사용 불가능한 심볼로 유지할 것이다. 이를 통해 컴파일러가 명확한 오류 메시지를 생성하고 Fix-Its를 제공할 수 있다.