콘텐츠로 이동

Swift Evolution / proposal history

이 페이지는 Swift 언어와 컴파일러를 “지금 구현이 어떤가”가 아니라 “왜 이런 방향으로 왔는가”라는 설계/역사 관점에서 읽기 위한 상위 허브다.

Swift에는 proposal, manifesto, archive, rejected 문서에 장기 비전, 실패한 실험, 재구성된 아이디어가 함께 남아 있다. 이 페이지는 그 자료들을 한 덩어리의 “언어 진화 지형도”로 묶어 읽기 위한 상위 허브다.

이 허브가 묶는 6개 축

핵심 질문 연결 페이지
비전 문서 Swift는 장기적으로 어떤 방향을 지향했는가 제네릭 매니페스토, 소유권 매니페스토, ABI Stability Manifesto 해설
제안 문서 기능은 어떤 문제의식으로 제안되었는가 Swift 언어 개요, Swift와 Swift Compiler의 관계
archive / rejected 왜 어떤 방향은 접혔고, 어떤 방향은 재구성되었는가 Swift Concurrency 전체 구조, Swift 소유권·메모리 모델
구현 연결 proposal은 어떤 compiler / ABI / runtime 변경으로 이어졌는가 타입 체커 설계 및 구현, SIL (Swift Intermediate Language), Swift 런타임, 라이브러리 진화 (Library Evolution)
언어 표면 vs 내부 구현 surface syntax와 implementation burden는 어떻게 맞물렸는가 Swift 타입 시스템, 표준 라이브러리·런타임·컴파일러의 관계
역사 읽기 방법 현재 문서와 과거 proposal 문서를 어떻게 함께 읽어야 하는가 Swift Compiler 학습 스택, 위키 키워드 연결망

왜 이 허브가 필요한가

Swift를 구현 중심으로 공부하다 보면 종종 이런 질문이 생긴다.

  • 왜 제네릭은 이런 형태로 설계됐지?
  • 왜 ownership은 opt-in 철학을 강조하지?
  • 왜 ABI stability / library evolution 문서가 이렇게 보수적이지?
  • 왜 어떤 기능은 proposal에 있었지만 실제 언어에는 다른 형태로 들어왔지?

이 질문들은 현재 코드만 봐서는 잘 안 풀린다. proposal / manifesto / archive 문서를 같이 봐야 “지금의 구현”이 “과거의 설계 선택” 위에 있다는 점이 드러난다.

로컬에서 직접 확인되는 역사 재료

이 머신의 로컬 Swift 소스 트리에서 바로 확인되는 주된 역사 재료는 다음이다.

  • swift/docs/proposals/ — 초기/중기 설계 proposal 문서들
  • swift/docs/proposals/archive/ — 현재 기준으로 접혔거나 역사적 의미가 강한 proposal
  • swift/docs/proposals/rejected/ — 채택되지 않은 방향
  • swift/docs/GenericsManifesto.md
  • swift/docs/OwnershipManifesto.md
  • swift/docs/ABIStabilityManifesto.md

반면 공개 Swift Evolution 저장소 자체를 이 로컬 checkout 안에서 직접 확인할 수는 없었다. 즉 지금 로컬에서 읽을 수 있는 것은 “swift 메인 저장소에 남아 있는 설계 역사” 쪽이라고 보는 편이 맞다.

자주 헷갈리는 구분

1. Swift Evolution vs library evolution

이 둘은 이름이 비슷하지만 다르다.

  • Swift Evolution: 언어/기능 설계 제안과 채택의 역사
  • library evolution: ABI와 resilience를 전제로 공개 라이브러리를 어떻게 진화시키는가

관련 페이지: - 라이브러리 진화 (Library Evolution) - ABI Stability Manifesto 해설

2. manifesto vs implemented feature

manifesto는 “이미 구현된 명세서”가 아니라 장기 비전, 용어 정리, 설계 공간의 지도에 가깝다. 그래서 manifesto를 읽을 때는 현재 구현 페이지와 꼭 같이 봐야 한다.

관련 페이지: - 제네릭 매니페스토 - 소유권 매니페스토 - Generics Manifesto 해설

3. archived proposal vs dead idea

archive에 들어갔다고 해서 완전히 의미가 사라진 것은 아니다. 오히려 현재 구현의 전신, 대안, 실패한 추상화 실험을 보여 주는 경우가 많다. 예를 들어 concurrency를 볼 때도 MemoryAndConcurrencyModel.rst 같은 문서는 여전히 맥락을 준다.

관련 페이지: - Swift Concurrency 전체 구조 - Swift Task·Executor·Runtime

4. proposal history vs source-level implementation doc

proposal은 “왜”를 설명하고, implementation doc은 “어떻게”를 설명하는 경우가 많다. 둘을 같이 봐야 납득이 된다.

관련 페이지: - 타입 체커 설계 및 구현 - SIL (Swift Intermediate Language) - Swift 런타임

proposal history를 읽는 좋은 방법

1. 현재 기능 허브를 먼저 본다

먼저 현재 상태를 요약한 허브를 읽는다.

예: - Swift 타입 시스템 - Swift 소유권·메모리 모델 - Swift Concurrency 전체 구조

2. 그다음 manifesto / proposal 문서를 본다

현재 구조를 알고 난 뒤 proposal 문서를 보면, 무슨 제약을 풀려 했고 무엇이 아직 미완인지 더 잘 보인다.

바로 이어 읽기 좋은 교차 페이지: - Value Semantics / COW proposals → ownership/runtime 교차 읽기 - In-Place Operations proposal → writeback / COW / optimizer-friendly API 교차 읽기 - Optimizer Effects / Unsupported Optimization Attributes proposals → SIL optimizer / function attributes 교차 읽기 - Declaration Type Checker proposal → 현대 Sema 교차 읽기 - Compilation Model / WMO proposals → driver 교차 읽기 - Enums / EnumStyle proposals → 타입 시스템 / API 표면 / 레이아웃 교차 읽기 - TypeState proposal → 초기화 / lifetime / ownership 경계 교차 읽기 - Option Sets proposal → importer / layout / value-type API 교차 읽기 - AttrC proposal → C export / bridging / importer 교차 읽기 - C pointer interop proposals → UnsafePointer 모델 교차 읽기 - ObjC interop proposal → importer / dispatch 교차 읽기 - Initialization / Accessors proposals → property model 교차 읽기 - Initializer Inheritance proposal → 현대 init 모델 교차 읽기 - Constructors / ClassConstruction proposals → 현대 init 모델 교차 읽기 - Remote Mirrors proposal → runtime/reflection 교차 읽기

3. 마지막으로 구현 페이지로 내려간다

proposal의 아이디어가 compiler / runtime / ABI에서 어떤 비용을 치렀는지 확인한다.

예: - 타입 체커 설계 및 구현 - SIL 소유권 모델 (OSSA) - Swift 런타임 - 라이브러리 진화 (Library Evolution)

로컬 Swift 소스에서 같이 볼 경로

비전 / 장기 방향 문서

  • swift/docs/GenericsManifesto.md
  • swift/docs/OwnershipManifesto.md
  • swift/docs/ABIStabilityManifesto.md

proposals 디렉터리 예시

  • swift/docs/proposals/Concurrency.rst
  • swift/docs/proposals/ValueSemantics.rst
  • swift/docs/proposals/Inplace.rst
  • swift/docs/proposals/InoutCOWOptimization.rst
  • swift/docs/proposals/OptimizerEffects.rst
  • swift/docs/proposals/UnsupportedOptimizationAttributes.rst
  • swift/docs/proposals/WholeModuleOptimization.rst
  • swift/docs/proposals/Enums.rst
  • swift/docs/proposals/EnumStyle.rst
  • swift/docs/proposals/TypeState.rst
  • swift/docs/proposals/OptionSets.rst
  • swift/docs/proposals/RemoteMirrors.rst
  • swift/docs/proposals/ObjCInteroperation.rst
  • swift/docs/proposals/DeclarationTypeChecker.rst

archive / rejected 예시

  • swift/docs/proposals/archive/MemoryAndConcurrencyModel.rst
  • swift/docs/proposals/archive/ProgramStructureAndCompilationModel.rst
  • swift/docs/proposals/archive/UnifiedFunctionSyntax.rst
  • swift/docs/proposals/rejected/ClassConstruction.rst
  • swift/docs/proposals/rejected/Constructors.rst
  • swift/docs/proposals/rejected/KeywordArguments.rst

이 목록만 봐도 Swift 진화사는 문법 제안만의 역사가 아니라, 타입 시스템, ownership, ABI, interop, optimizer, compilation model이 함께 움직인 역사라는 점이 드러난다.

추천 읽기 순서

큰 그림부터 보는 루트

  1. Swift 전체 지도
  2. Swift 언어 개요
  3. Swift Evolution / proposal history
  4. Swift와 Swift Compiler의 관계

제네릭 / 타입 시스템 중심

  1. Swift 타입 시스템
  2. 제네릭 매니페스토
  3. Generics Manifesto 해설
  4. Swift Evolution / proposal history
  5. Declaration Type Checker proposal → 현대 Sema 교차 읽기

ownership / concurrency 중심

  1. Swift 소유권·메모리 모델
  2. Swift Concurrency 전체 구조
  3. 소유권 매니페스토
  4. Swift Evolution / proposal history
  5. Value Semantics / COW proposals → ownership/runtime 교차 읽기

ABI / 배포 / 안정성 중심

  1. 표준 라이브러리·런타임·컴파일러의 관계
  2. 라이브러리 진화 (Library Evolution)
  3. ABI Stability Manifesto 해설
  4. Swift Evolution / proposal history
  5. Compilation Model / WMO proposals → driver 교차 읽기
  6. Remote Mirrors proposal → runtime/reflection 교차 읽기

같이 보면 좋은 페이지