GN⁺: 애플, Swift Build 오픈 소스화 발표
(swift.org)- Swift는 다양한 플랫폼을 지원하는 언어로 인기를 얻고 있으며, 다양한 임베디드 장치와 운영 체제에서 사용 가능
- Apple은 Swift Build라는 강력하고 확장 가능한 빌드 엔진을 오픈 소스로 공개
- Swift Build는 Xcode의 빌드 엔진으로 사용되며, "App Store 앱 및 Apple 자체 운영체제 빌드"에도 활용됨.
- Linux와 Windows 타겟 빌드도 지원
-
Swift Build의 핵심 기능
- 빌드 시스템은 프로젝트 설명과 소스 코드를 명령줄 도구, 라이브러리, 애플리케이션 같은 출력물로 변환하는 역할을 함
- Swift Build는 Swift Package Manager나 Xcode 같은 상위 클라이언트가 요청한 빌드를 계획하고 실행하는 인프라 구성 요소
- Swift 컴파일러와의 강력한 통합을 통해 Swift 프로젝트의 빌드를 신뢰성 있고 효율적으로 조정
- 다양한 제품 유형을 지원하며, 고급 빌드 구성 옵션을 제공
- Swift와 C 코드 빌드 시 병렬성을 극대화하는 빌드 그래프 최적화를 포함
-
Swift Build의 로드맵
- Xcode의 빌드 엔진과 비교하여 Swift Package Manager의 빌드 엔진은 비교적 단순함
- Apple 플랫폼에서 두 가지 다른 패키지 빌드 방법이 사용자 혼란을 초래
- Xcode의 빌드 엔진을 Swift 프로젝트에 기여하고 Swift 컴파일러와 함께 오픈 소스로 개발하여 이러한 문제를 해결하고자 함
- SwiftPM은 모든 플랫폼에서 통합된 빌드 실행 엔진을 제공할 기회를 가지게 됨
- 이 변화는 사용자에게 투명하게 작용하며, 모든 기존 패키지와의 완전한 호환성을 유지
- 새로운 기능과 개선 사항을 모든 플랫폼과 도구에 걸쳐 제공할 수 있는 기반을 마련
- Swift Build를 SwiftPM의 대체 빌드 엔진으로 통합하는 PR 제출
- 커뮤니티와 협력하여 모든 플랫폼과 프로젝트 모델에서 향후 도구 개선의 혜택을 누릴 수 있도록 빌드 시스템 통합 작업을 완료하고자 함
-
참여 초대
- Swift 코드 빌드 방식을 계속 발전시키기 위해 커뮤니티와 협력하기를 기대함.
- GitHub의 Swift 조직에서
swift-build
저장소를 찾을 수 있으며, 빌드 및 기여 방법을 설명하는 README와 문서가 포함되어 있음. - 풀 리퀘스트와 이슈를 통한 기여를 환영하며, Swift 포럼에서 개선에 대한 피드백과 아이디어를 받고자 함.
- Swift의 빌드 시스템에 대한 흥미로운 새로운 장이며, Swift의 모든 잠재력을 열어줄 것으로 기대함.
https://llvm.org/devmtg/2016-11/… 의 12 page. 가 중요한 내용인거 같네요.
Traditional UNIX compiler/build system model
• Compiler runs as separate process
• Primitive mechanisms for communicating dependencies
• Fixed input/output pipeline defined by command line
• This is an API ...
• ... and we haven’t changed it in decades
• We ❤ breaking APIs
Java 쪽은 코드사이의 의존성을 알려주는 API가 있어서 빌드도구 들에게 어떻게 하면 incremental build가 되는지 알려주도록 되어 있는 것 같은데,
ex: Gradle
Native 빌드에도 해당 방법을 적용하는 방향으로 가야할 것 같습니다.
Hacker News 의견
-
Swift가 "모든 것에 좋지만 Apple 플랫폼에 더 좋음"이라는 인식이 언어에 해로울 수 있음. 이는 Swift 생태계에 더 많은 사람을 끌어들이지 못함
- 경쟁자들은 더 오픈 소스적이고, 기여자가 많으며, 범위가 좁음
- Xcode 같은 도구를 오픈 소스로 만들지 않으면 다른 언어와의 격차가 커질 것임
-
Swift는 멋진 언어임
- "index out of range" 오류 시, 오류 메시지가 어디서 발생했는지 알려주지 않음
- Golang은 오류가 발생한 파일과 줄 번호를 알려줌
-
Swift의 상황이 초기 C# 시절을 떠올리게 함
- C#도 오픈 소스와 크로스 플랫폼으로 홍보되었으나 기대에 미치지 못함
-
Swift가 Apple의 LLVM 포크가 아닌 일반 LLVM을 기반으로 구축되었으면 좋겠음
-
Swift는 Xcode와의 분리를 목표로 해야 함
- Xcode는 3.1점으로 과대평가된 면이 있음
-
SwiftPM의 새로운 릴리스는 모든 플랫폼에서 통합된 빌드 실행 엔진을 제공할 기회를 줌
- 이는 Swift의 멀티플랫폼 생태계를 구축하는 열쇠가 될 것임
-
Xcode 없이 Swift 개발이 가능한 길을 열 수 있는지 궁금함
-
Swift 빌드가 Swift의 도구 및 언어 서버와 얼마나 잘 통합되어 있는지 명확하지 않음
- 언어 서버는 이미 오픈 소스임
-
Swift가 Apple로부터 독립되어 기쁨
- 크로스 플랫폼 프로젝트에서 URLSession.shared.data가 Linux에서 컴파일되지 않아 다른 언어로 전환한 경험이 있음
-
Swift가 임베디드 시스템에 진지한지 궁금함