2026년 7월 Swift 소식: 동시성 런타임과 테스트 기능 업데이트
What's new in Swift: July 2026 Edition
핵심 요약
- Swift Concurrency 런타임에 작업 분배 방식을 바꾸는 Task Stealers가 병합됐고, SwiftPM에는 자체 호스팅을 시작할 수 있는 패키지 레지스트리 참조 구현과 기본 인증 지원이 추가됐다.
- Swift Testing의 태그 기반 테스트 필터링과 실행 파일 경로를 제공하는 CommandLine.executablePath가 향후 릴리스를 위한 제안으로 채택됐으며, withDeadline 제안도 수정 후 채택됐다.
- 제로 카피 토크나이저 swift-gigatoken과 Swift 오류를 값 의미론 기반으로 지우는 any-error-swift가 소개됐고, 커뮤니티에서는 여러 워킹그룹과 Google Summer of Code 기여가 이어졌다.
도입
2026년 7월 Swift 프로젝트에서는 런타임, 패키지 관리, 테스트 도구의 변경이 진행됐다. Swift Concurrency의 Task Stealers가 병합됐고 SwiftPM은 패키지 레지스트리 서비스의 참조 구현과 기본 인증을 추가했다. Swift Evolution에서는 테스트 태그 필터링, 실행 파일 경로 조회, 비동기 작업의 절대 시간 제한을 다루는 제안이 채택 단계에 올랐다.
상세 요약
프로젝트와 커뮤니티
Swift 기여는 언어와 컴파일러 작업에 한정되지 않는다. Alexander Sandberg는 4년 동안 Swift Website Workgroup에서 웹사이트 콘텐츠와 탐색 구조 개선, 사이트 개편, 릴리스 블로그 작성, pull request 검토, 이슈와 포럼 답변에 참여했다. 그는 워킹그룹을 떠나지만 커뮤니티 활동은 이어간다고 밝혔다. 프로젝트에는 웹사이트 외에도 서버, 테스트, Windows, Android 등을 담당하는 워킹그룹이 있다. 참여를 원하는 사람은 커뮤니티 페이지와 워킹그룹의 공개 회의를 참고할 수 있다.
Google Summer of Code 기여도 진행 중이다. Ege Kaya는 Swift Concurrency 런타임의 Task Registry를 개발하고 있으며, Filip Sakellariou는 swift-syntax에, Padmashree S S는 sourcekit-lsp에 기여하고 있다.
런타임과 개발 도구
Swift Concurrency 런타임의 새 primitive인 Task Stealers가 병합됐다. 이 변경은 cooperative thread pool에서 작업이 분배되는 방식을 바꾼다. 기사에서는 동시성 작업이 많은 코드를 작성하는 개발자가 지켜볼 만한 런타임 변경으로 소개한다.
도구 측면에서는 다음 변경이 포함됐다.
- VS Code 확장은 Swift 설치가 잘못된 경우 이를 명확하게 알리고, clean build folder 명령을 추가했다.
- Swift Testing의 이벤트 스트림에는
ABI.ContextAPI가 추가됐다. CI 도구와 대시보드에서 사람이 읽을 수 있는 출력을 만드는 데 쓰인다.
패키지와 커뮤니티 라이브러리
SwiftPM에는 패키지 레지스트리 서비스의 참조 구현과 기본 인증 지원이 들어갔다. 이는 자체 호스팅 레지스트리를 탐색할 때 활용할 수 있는 출발점으로 제시됐다.
커뮤니티 프로젝트로는 두 라이브러리가 소개됐다.
swift-gigatoken은 제로 카피 토크나이저다. 초당 최대 670MB를 처리하며 NEON과 CRC32를 지원하고, WebAssembly 및 Embedded Swift와 호환된다. 관련 맥락은 Swift 6.4에서 확장되는 Embedded Swift 기능에서 확인할 수 있다.any-error-swift는 모든 Swift 오류를 지우는 구체적이고 값 의미론을 따르는Hashable타입을 제공한다. Foundation을 요구하지 않으며 Swift가 실행되는 모든 플랫폼에서 동작한다.
채택된 Swift Evolution 제안
최근 채택된 제안은 두 가지다.
- ST-0025, 태그 기반 테스트 실행 필터링: Swift Testing 테스트에 이름이 있는 태그를 붙이고,
--filter와--skip으로 태그를 기준으로 실행하거나 건너뛸 수 있게 한다. 예를 들어swift test --skip tag:uiTest처럼 사용한다. 기존에는 정규식 기반 필터링은 가능했지만 태그와 결합할 수 없었다. - SE-0513, 현재 실행 파일 경로 API: 표준 라이브러리의
CommandLine.executablePath로 현재 실행 중인 실행 파일의 경로를 가져온다. Swift가 지원하는 플랫폼에서 일관된 경로 조회 방법을 제공하는 것이 목적이다.
수정 후 채택된 제안은 **SE-0526, withDeadline**이다. 이 함수는 clock instant로 지정한 절대 시한 안에 비동기 작업을 실행하고, 기한까지 끝나지 않으면 작업을 취소한다. 여러 중첩 작업이 하나의 마감 시각을 공유할 수 있어, 호출 계층마다 상대 시간을 전달할 때 생기는 시간 편차를 피하도록 설계됐다.
결론
이번 소식의 중심은 런타임 내부의 작업 분배 변경과 개발 도구의 구체적인 개선이다. 태그로 테스트를 선택하거나 건너뛰는 기능, 모든 지원 플랫폼에서 현재 실행 파일 경로를 얻는 API, 중첩 작업에 공유할 수 있는 마감 시각 기능이 제안에 포함됐다. 프로젝트 기여는 컴파일러뿐 아니라 웹사이트, 서버, 테스트, 플랫폼별 워킹그룹에서도 이뤄지고 있다.