Xcode 27 출시: 요구 사항, 배포 타깃, 그리고 무엇이 깨졌나
Xcode 27은 2026년 9월 14일 빌드 27A266a로 출시되었습니다. 피드에 iOS 27.0 RC 항목이 올라온 지 사흘 뒤의 일이며, iOS 27.0(24A437), macOS 27.0(26A428)을 비롯한 나머지 27 플랫폼과 같은 날 나왔습니다. App Store Connect는 같은 날부터 27.0 GA SDK로 만든 빌드를 받기 시작했고, RC SDK 빌드는 9월 9일부터 받고 있었습니다.15 실행하려면 macOS Tahoe 26.6 이상과 Apple silicon Mac이 필요하고, Swift 6.4와 27 SDK를 탑재하며, iOS 17 이상을 실행하는 기기를 디버깅할 수 있고, 최소 배포 타깃 세 가지가 올라갔습니다. macOS 12, watchOS 9, DriverKit 21입니다.23 기존 프로젝트 입장에서는 확실히 빌드가 실패하는 변경 세 가지(@State 매크로, SE-0508로 인한 소스 호환성 깨짐, -ld64 링커 플래그), 오류를 낼 수 있는 의존성 스캔 규칙 하나, ARCHS_STANDARD의 조용한 변경 하나, 경고 두 가지가 생겼습니다. 모든 항목을 아래에서 27A266a로 직접 실행해 봤습니다.246
TL;DR
- 날짜와 빌드. Apple의 Releases 피드에는 Xcode 27(27A266a)과 27.0 운영체제 여섯 종 모두가 9월 14일 월요일 날짜로 올라와 있습니다. “iOS 27.0 RC (24A437)” 항목은 9월 11일 금요일 날짜인데, App Store Connect가 RC SDK 업로드를 받기 시작한 지 이틀 뒤이며, GA도 같은 빌드 번호를 답니다.15 App Store Connect 자체의 9월 14일 자 릴리스 노트에는 이제 Xcode 27로 빌드한 앱을 스토어와 TestFlight용으로 업로드할 수 있다고 적혀 있습니다.5
- 요구 사항과 하한선이 움직였습니다. Xcode 26.6은 macOS 26.2에서 실행되고 iOS 15 기기를 디버깅할 수 있었습니다. Xcode 27은 macOS 26.6이 필요하고, Apple silicon에서만 실행되며, iOS 17, tvOS 17, watchOS 10 이상만 디버깅할 수 있습니다. 이는 실제 기기뿐 아니라 시뮬레이터에도 해당합니다. 최소 배포 타깃은 macOS 11에서 12로, watchOS 8에서 9로, DriverKit 20에서 21로 올라갔고, iOS, iPadOS, tvOS는 15, visionOS는 1에 머뭅니다.23
- 확실한 실패 세 가지.
@State매크로: Apple이 직접 든 예제, 즉 선언 시점에 값을 가진@State프로퍼티를 다른 저장 프로퍼티보다 먼저 대입하는 이니셜라이저가variable 'self.title' used before being initialized로 실패합니다. 배열 또는 딕셔너리 리터럴 초기값과init접근자를 가진 계산 프로퍼티는 게터가 먼저 오면 컴파일되지 않는데, Apple은 이를 SE-0508로 인한 소스 호환성 깨짐이라고 밝힙니다. 그리고 Xcode 15가 문서화했던-ld64링커 플래그는ld: library 'd64' not found로 링크에 실패합니다.2468 - 경고하거나, 오류를 낼 수 있거나, 아무 말도 하지 않는 변경 네 가지. ld64가 사라졌기 때문에 링커는
-ld_classic을 경고와 함께 무시합니다. 한 번의 의존성 스캔 안에서 Clang 모듈 이름이 중복되면 “may report an error”(오류를 보고할 수 있음)라고 합니다. 27.0으로 설정한 macOS 전용 타깃은 x86_64를 직접 되돌려 넣지 않는 한 arm64로만 빌드되며, 아무 경고도 없습니다. 그리고PreviewProvider에는 “Use #Preview instead.”라는 27.0 사용 중단 메시지가 붙고 각 프리뷰 수정자에는 저마다의 대체 메시지가 붙지만, 배포 타깃이 27.0 미만이면 컴파일러는 그중 어느 것도 보여 주지 않습니다.24 - 9월 15일 기준으로 Apple은 Xcode 27.1을 내놓지 않았습니다. Releases 피드에도 릴리스 노트 색인에도 없고, Apple의 iPhone Duo 개발자 페이지는 27.1 베타를 여전히 “later this month”(이달 말)로 적어 두고 있습니다. Duo 개발자 글에서 설명한 SDK 공백은 그대로입니다.1 (9월 17일: 27.1은 여전히 없지만, Xcode 27.2 베타가 9월 16일에 나왔고 그 노트는 Duo SDK를 싣는 릴리스로 27.1을 지목합니다. 자세한 내용은 아래 업데이트에 있습니다.9) (9월 19일: Xcode 27.1 베타(27A9269)가 9월 18일에 iOS 27.1 SDK를 싣고 출시됐습니다. 아래 두 번째 업데이트에 그 노트가 있습니다.10) (10월 1일: 27.1은 여전히 그 첫 번째 베타뿐입니다.11) (10월 11일: Xcode 27.1 RC(27A9275)가 10월 5일에 출시됐습니다. 정식 릴리스가 아니라 RC이며, 같은 날짜의 App Store Connect 항목은 “You can now upload apps built with Xcode 27.1 RC using the SDK for iOS 27.1, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, and watchOS 27.0 for the App Store, and for internal and external testing through TestFlight.”(Xcode 27.1 RC로 iOS 27.1, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, watchOS 27.0 SDK를 사용해 빌드한 앱을 App Store용으로, 그리고 TestFlight를 통한 내부 및 외부 테스트용으로 업로드할 수 있다)라고 적고 있습니다.12) (10월 14일: Xcode 27.2 베타 3(27B5038j)이 출시됐습니다. Xcode 27.1은 여전히 RC에 머물러 있고, 정식 릴리스도 여전히 Xcode 27입니다. 아래 네 번째 업데이트에 베타 3 노트가 있습니다.13) (10월 15일: Xcode 27.1(27A9275)이 정식 릴리스가 됐습니다. 빌드 번호는 RC와 같고, Releases 피드의 날짜는 태평양 시간 13:00입니다. 노트 페이지의 제목이 바뀌었고, 같은 날 App Store Connect 항목은 그 이름으로 스토어용 빌드를 받습니다. Xcode 27은 더 이상 가장 최근의 정식 릴리스가 아닙니다.14)
9월 17일 업데이트: 27.2 베타가 먼저 나왔고, 27.1에는 맡은 역할이 있다
Apple의 Releases 피드에는 27.2 베타 묶음 전체가 9월 16일 수요일 날짜로 올라와 있습니다. Xcode 27.2 베타(27B5019j), iOS 및 iPadOS 27.2 베타(24B5084k), macOS 27.2 베타(26B5086k), tvOS 27.2 베타(24K5088l), visionOS 27.2 베타(24N5088l), watchOS 27.2 베타(24S5086l)에 TestFlight 업데이트까지 더해졌고, 피드의 어떤 항목도 27.1을 언급하지 않습니다.9 Xcode 27.2 베타 노트는 이 공백을 한 문장으로 설명합니다. “The iOS SDK and simulator support for iPhone Duo will be available later this month in an upcoming release of Xcode 27.1.”(iPhone Duo용 iOS SDK와 시뮬레이터 지원은 이달 말 예정된 Xcode 27.1 릴리스에서 제공될 예정) 따라서 Duo SDK를 싣는 쪽은 27.1이고, 27.2는 자체 새 기능을 가진 별도의 베타이며, 이 베타는 GA의 하한선을 그대로 유지합니다. “Xcode 27.2 beta requires a Mac running macOS Tahoe 26.6 or later.”(Xcode 27.2 베타는 macOS Tahoe 26.6 이상을 실행하는 Mac이 필요하다는 뜻)9
그 베타 노트의 항목 두 개가 이 글에 덧붙일 내용을 담고 있고, 아래에 인용한 시뮬레이터 런타임 알려진 문제 141290052는 27.2에서도 여전히 열려 있습니다. Project Format 절에는 “Xcode now supports a JSON-based project format (.xcproj) that’s more readable, merge-friendly, and easier for coding agents to edit,”(Xcode가 이제 더 읽기 쉽고 병합에 유리하며 코딩 에이전트가 편집하기 쉬운 JSON 기반 프로젝트 형식(.xcproj)을 지원한다)라고 적혀 있고, 파일 인스펙터에서 켤 수 있으며,”Projects using .xcproj also open in earlier versions of Xcode 27.”(.xcproj를 사용하는 프로젝트는 이전 버전의 Xcode 27에서도 열린다)이라고 합니다. SDK 절에는 알려진 문제가 하나 있습니다. “macOS, watchOS, tvOS, and visionOS SDKs in Xcode 27.2 incorrectly report 27.1 as a valid deployment target,”(Xcode 27.2의 macOS, watchOS, tvOS, visionOS SDK가 27.1을 유효한 배포 타깃으로 잘못 보고한다)이며, “unexpected behavior if this deployment target is used,”(이 배포 타깃을 사용하면 예기치 않은 동작)가 따르고, “Mac Catalyst builds with a 27.1 or 27.2 deployment target may be unable to use newly introduced API.”(배포 타깃이 27.1이나 27.2인 Mac Catalyst 빌드는 새로 도입된 API를 사용하지 못할 수 있다)라고 합니다.9 Apple은 제가 9월 16일과 9월 17일에 가져온 사이에 Xcode 27 노트 자체에도 Enhanced Security 아래에 알려진 문제 하나를 추가했습니다. “Apps with Hardware-Checked Pointer Arithmetic Slice feature enabled cannot be uploaded to the App Store on macOS Tahoe 26.6 with Xcode automatic signing enabled.”(Hardware-Checked Pointer Arithmetic Slice 기능을 켠 앱은 Xcode 자동 서명이 켜진 macOS Tahoe 26.6에서 App Store에 업로드할 수 없다) 우회책은 “Distribute with macOS 27 and Xcode 27 or use manual signing.”(macOS 27과 Xcode 27로 배포하거나 수동 서명을 사용하라)입니다. 제 arm64e.x1 글에 이 내용을 실었습니다.9 27.2 베타 노트의 어떤 내용도 링커, 모듈 이름 규칙, @State 매크로, 아래의 프리뷰 사용 중단을 건드리지 않습니다. 앞의 셋은 Xcode 27 노트에, @State 항목은 iOS 및 iPadOS 27 노트에 있으며, 이 글에서 인용한 Xcode 27 항목들은 9월 17일에도 9월 15일과 똑같이 읽힙니다.69
9월 19일 업데이트: Xcode 27.1 베타가 나왔고, iOS 27.1 SDK가 실렸다
Apple의 Releases 피드는 Xcode 27.1 베타(27A9269)를 9월 18일 금요일 날짜로 올렸습니다. 27.2 베타 묶음이 나온 지 이틀 뒤이고, Xcode 릴리스 노트 색인에는 이제 27 계열 항목이 Xcode 27, Xcode 27.1 Beta, Xcode 27.2 Beta 세 개 나열됩니다.10 27.1 베타 노트는 짧습니다. Overview는 이렇습니다. “Xcode 27.1 beta includes Swift 6.4 and SDKs for iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, and visionOS 27,”(Xcode 27.1 베타에는 Swift 6.4와 iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, visionOS 27용 SDK가 포함된다). 기기 디버깅 하한은 27.0과 같고, 요구 사항도 같은 “a Mac running macOS Tahoe 26.6 or later.”(macOS Tahoe 26.6 이상을 실행하는 Mac)입니다. 이 SDK 목록은 적힌 그대로 읽되, 한 가지 어긋남이 있습니다. Overview는 iPadOS를 27로 적었지만 아래 App Store Connect의 문장과 Apple의 API 페이지는 iPadOS 27.1 베타라고 하며, 저는 둘 다 인용할 뿐 어느 쪽이 맞는지 판정하지 않습니다. iOS 27.1은 Apple의 9월 16일 뉴스 글이 iPhone Duo가 10월 23일에 출시될 때 “will run”(탑재하고 구동한다)이라고 말한 릴리스입니다.10 App Store Connect 릴리스 노트에는 9월 18일 날짜로 TestFlight 항목에 짝이 되는 문장이 있습니다. “You can now submit apps built with Xcode 27.1 beta using the SDK for iOS 27.1 beta or iPadOS 27.1 beta for internal and external testing.”(Xcode 27.1 베타로 iOS 27.1 베타 또는 iPadOS 27.1 베타 SDK를 사용해 빌드한 앱을 내부 및 외부 테스트용으로 제출할 수 있다)10 Apple은 또 제가 9월 17일과 9월 19일에 가져온 사이에 27.2 베타 노트의 Overview를 다시 썼습니다. 위 업데이트에서 인용한 문장 “The iOS SDK and simulator support for iPhone Duo will be available later this month in an upcoming release of Xcode 27.1,”은 사라졌고, 그 자리에 “Download Xcode 27.1 beta to get the iOS SDK and simulator support for iPhone Duo,”(iPhone Duo용 iOS SDK와 시뮬레이터 지원을 받으려면 Xcode 27.1 베타를 내려받으라)라는 안내문이 다운로드 페이지 링크와 함께 들어갔습니다.10 Apple 문서는 이제 iPhone Duo API 가운데 다섯 개를 iOS 27.1, 베타로 표시합니다. 이름은 제 Duo 개발자용 글에 있습니다.
27.1 베타 노트에는 섹션이 셋 있고, 그중 둘이 Known Issues를 담고 있습니다. Mac Catalyst 항목: “Projects that use APIs specific to iOS 27.1 show compile errors when building for Mac Catalyst (“undeclared identifier”, “not found”, “has no member”, “cannot find”, etc).”(iOS 27.1 전용 API를 쓰는 프로젝트는 Mac Catalyst용으로 빌드할 때 컴파일 오류가 난다)(185924957). 해결 방법은 “Use build-time conditionals like #if !targetEnvironment(macCatalyst) (Swift) or #if !TARGET_OS_MACCATALYST (ObjC) to isolate affected code,”(빌드 시 조건문으로 해당 코드를 분리하라)입니다. 그리고 “Projects that target iOS 27.1 show no Mac Catalyst run destination available.”(iOS 27.1을 타깃으로 하는 프로젝트에는 Mac Catalyst 실행 대상이 표시되지 않는다)(187046347). 해결 방법은 “Add a Mac Catalyst 27.0 minimum deployment in target settings.”(타깃 설정에 Mac Catalyst 27.0 최소 배포 버전을 추가하라)입니다. 이 둘은 9월 17일 업데이트에서 인용한 27.2 베타의 SDK Known Issue 187160501과 나란히 놓이며, 제가 읽기로는 같은 27.1 공백을 macOS SDK 쪽에서 본 것입니다. Simulator 항목에는 Known Issues가 셋 있습니다. “Initial Simulator launch can take several minutes.”(시뮬레이터 첫 실행에 몇 분이 걸릴 수 있다)(187708500), “StandBy is unavailable in the iPhone Duo Simulator runtime.”(iPhone Duo 시뮬레이터 런타임에서는 StandBy를 쓸 수 없다)(187708663), “Running and debugging most app extensions is unavailable in the iPhone Duo Simulator runtime.”(iPhone Duo 시뮬레이터 런타임에서는 대부분의 앱 익스텐션을 실행하고 디버깅할 수 없다)(187708767). 세 번째 섹션인 Previews에는 New Feature가 하나 있습니다. “The canvas overrides picker now includes a Display group for previewing content on a device’s alternative display.”(캔버스 오버라이드 선택기에 기기의 다른 디스플레이에서 콘텐츠를 미리 보는 Display 그룹이 추가됐다)(182598534).10 27.1 베타 노트에는 링커, 모듈 이름 규칙, @State 매크로, 아래의 프리뷰 지원 중단을 건드리는 내용이 없고, 9월 19일에 다시 가져온 Xcode 27 노트는 9월 17일과 같은 내용이었습니다.10
이 글에 넣어 둘 날짜가 하나 더 있습니다. App Store 제출에 관한 Apple의 9월 9일 뉴스 글입니다. “Starting April 2027, apps and games uploaded to App Store Connect need to meet the following minimum requirements: iOS and iPadOS apps must be built with the iOS 27 & iPadOS 27 SDK or later,”(2027년 4월부터 App Store Connect에 업로드하는 앱과 게임은 다음 최소 요구 사항을 충족해야 한다. iOS 및 iPadOS 앱은 iOS 27 및 iPadOS 27 SDK 이상으로 빌드해야 한다). tvOS, visionOS, watchOS 앱도 같은 방식으로 27 SDK가 요구됩니다. Apple의 Upcoming Requirements 페이지에는 9월 19일 현재 아직 올라오지 않았고, 가장 최신 항목은 여전히 2026년 4월 28일의 Xcode 26과 26 SDK 하한입니다. 그러니 이 글이 다루는 27 SDK는 2027년 4월에 업로드 하한이 됩니다.10
10월 1일 업데이트: Xcode 27.2 베타 2가 나왔고, Xcode 27.0.1은 없다
Apple의 Releases 피드는 Xcode 27.2 베타 2(27B5028f)를 9월 28일 월요일 날짜로 올려 두었습니다. iOS, iPadOS, macOS, visionOS, watchOS의 27.0.1 업데이트와 같은 날입니다. 피드에 Xcode 27.0.1은 없습니다. 정식 릴리스는 그때도 여전히 Xcode 27(27A266a)이었고, 그 노트 페이지의 본문은 제가 9월 26일에 저장한 사본과 똑같습니다.11 베타 2 노트는 GetCodeCoverage MCP 도구를 추가하고, 첫 번째 베타의 Device Hub 입력 문제를 수정된 것으로 올렸습니다. 또 iPhone Duo 작업은 여전히 Xcode 27.1 베타로 안내하면서도 자체적으로 iPhone Duo 알려진 문제 두 건을 싣고, 9월 19일 업데이트에서 인용한 27.1 베타 항목 두 개, 185924957과 182598534를 되풀이합니다. 항목별 해설은 27.2 글에 있습니다. 아래에서 인용한 시뮬레이터 런타임 문제 141290052는 27.2 베타 2에서 수정된 것으로 올라 있지만, Xcode 27에서는 여전히 Known Issue로 남아 있습니다.11
10월 14일 업데이트: Xcode 27.2 베타 3이 나왔고, Duo 안내문은 사라졌다
Apple의 Releases 피드는 Xcode 27.2 베타 3(27B5038j)을 10월 14일 수요일 날짜로 올려 두었습니다. iOS, iPadOS, macOS, visionOS, watchOS의 네 번째 27.2 베타가 나온 다음 날입니다(tvOS는 없었습니다). 정식 릴리스는 그때도 여전히 Xcode 27(27A266a)이었고 Xcode 27.1은 여전히 10월 5일의 RC에 머물러 있었으며(10월 15일: Xcode 27.1은 그날 오후 RC의 빌드인 27A9275로 정식 릴리스됐습니다. 아래 다섯 번째 업데이트에 있습니다), Xcode 27 노트 페이지의 본문은 제가 10월 11일에 저장한 사본에서 바뀌지 않았습니다.13 베타 3 노트에서는 iPhone Duo 작업을 Xcode 27.1 베타로 안내하던 안내문이 빠졌고, 그 자리를 채운 문장도 없습니다. 따라서 Duo SDK가 27.2로 옮겨 갔다고 말하는 곳은 어디에도 없고, 제가 읽기로는 Duo용 빌드는 여전히 27.1 RC입니다. 그 밖에 베타 3 노트는 toolchain 컴파일 모드에 관한 Interface Builder 수정 두 건을 추가하고, 시뮬레이터 복제 문제를 Simulator Runtimes 제목 아래로 옮기면서 find 명령을 우회 방법으로 제시하며, 런타임 재설치 문제 187950199를 베타 2에서 해결된 것으로 다시 분류했습니다. 항목별 해설은 27.2 글에 있습니다. 아래에서 인용한 시뮬레이터 런타임 문제 141290052는 이와 다른 항목으로, 여전히 27.2 베타 2에서 수정된 것으로 올라 있고, Xcode 27 페이지에서는 여전히 Known Issue입니다. 같은 날 App Store Connect의 TestFlight 항목은 27.2 베타 3으로 만든 빌드를 테스트용으로는 받지만, 스토어용으로는 받지 않습니다.13
10월 15일 업데이트: Xcode 27.1이 정식 릴리스가 됐고, 빌드는 RC와 같다
Apple의 Releases 피드는 Xcode 27.1(27A9275)을 10월 15일 목요일 태평양 시간 13:00 날짜로 올려 두었습니다. iPhone Duo가 10월 23일에 출시되기 8일 전이며, 빌드 번호는 10월 5일 RC의 것입니다.101214 노트 페이지의 제목은 “Xcode 27.1 Release Notes”로 바뀌었고, Overview는 “Xcode 27.1 includes Swift 6.4 and SDKs for iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, and visionOS 27.”(Xcode 27.1에는 Swift 6.4와 iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, visionOS 27용 SDK가 포함된다)로, RC의 문장에서 “RC”를 뺀 것입니다. iPhone Duo Simulator 알려진 문제 두 건은 그대로입니다. 같은 날짜의 App Store Connect 항목은 “You can now upload apps built with Xcode 27.1 using the SDK for iOS 27.1, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, and watchOS 27.0 for the App Store, and for internal and external testing through TestFlight.”(Xcode 27.1로 iOS 27.1, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, watchOS 27.0 SDK를 사용해 빌드한 앱을 App Store용으로, 그리고 TestFlight를 통한 내부 및 외부 테스트용으로 업로드할 수 있다)라고 적고, 이어서 “Submit your iPhone Duo optimized apps and games in App Store Connect today. Starting April 2027, any apps or games submitted will need to include screenshots for iPhone Duo.”(iPhone Duo에 최적화한 앱과 게임을 오늘 App Store Connect에서 제출하라. 2027년 4월부터 제출하는 모든 앱과 게임에는 iPhone Duo용 스크린샷이 포함되어야 한다)라고 덧붙입니다. Xcode 27(27A266a)은 9월 14일의 릴리스로 피드에 남아 있고, Xcode 27 노트 페이지는 10월 11일 사본에서 바뀌지 않았습니다. 27.2 글과 Duo 준비 글에도 같은 메모가 있습니다.14
10월 26일 업데이트: 27.2 시스템들이 출시되었고, Xcode 27.2는 아직 RC다
Apple의 Releases 피드는 iOS 27.2(24B119, 같은 분에 두 번째 iOS 27.2 빌드 24B91020도 있습니다), iPadOS 27.2(24B119), macOS 27.2(26B123), tvOS 27.2(24K122), visionOS 27.2(24N120), watchOS 27.2(24S118)를 10월 26일 월요일 태평양 시간 10:00 날짜로 올려 두었습니다. 피드의 가장 최근 Xcode 항목은 여전히 10월 19일 태평양 시간 10:00 날짜의 릴리스 후보 Xcode 27.2 RC(27B48)이고, 그 노트 페이지의 제목도 여전히 “Xcode 27.2 RC Release Notes”입니다. Overview는 이렇습니다. “Xcode 27.2 RC includes Swift 6.4 and SDKs for iOS 27.2, iPadOS 27.2, tvOS 27.2, watchOS 27.2, macOS 27.2, and visionOS 27.2. Xcode 27.2 RC supports on-device debugging in iOS 17 and later, tvOS 17 and later, watchOS 10 and later, and visionOS. Xcode 27.2 RC requires a Mac running macOS Tahoe 26.6 or later.”(Xcode 27.2 RC에는 Swift 6.4와 각 27.2 SDK가 포함되고, 기기 디버깅은 iOS 17 이상, tvOS 17 이상, watchOS 10 이상, visionOS를 지원하며, macOS Tahoe 26.6 이상을 실행하는 Mac이 필요하다) App Store Connect의 10월 20일 항목은 이 빌드를 받습니다. “You can now upload apps built with Xcode 27.2 RC using the SDK for iOS 27.2 RC, iPadOS 27.2 RC, macOS 27.2 RC, tvOS 27.2 RC, visionOS 27.2 RC, and watchOS 27.2 RC for the App Store, and for internal and external testing through TestFlight.”(Xcode 27.2 RC와 각 27.2 RC SDK로 빌드한 앱을 App Store용으로, 그리고 TestFlight를 통한 내부 및 외부 테스트용으로 업로드할 수 있다) 9월에는 Xcode 27이 27.0 시스템들과 같은 날 나왔지만, 이번에는 시스템들이 Xcode 없이 출시되었습니다. RC 페이지는 베타 3에 다음을 더했습니다. Device Hub 기능 목록(슬로 모션 애니메이션, 시뮬레이터용 흔들기, 낙하, 메모리 압박 시뮬레이션, 스크린샷 컨텍스트 메뉴, 스크린샷 아이콘의 개선된 드래그 앤 드롭, 베젤 숨기기, App Settings 그룹, 189236369), visionOS 런타임이 없을 때의 Vision Pro 크래시와 메모리 경고 메뉴 항목, 그리고 이전 macOS 27.2 베타에서 Device Hub가 종료되던 문제의 수정(190126101), Device Hub가 “is unable to customize the text size for a device running iOS 18 or earlier”(iOS 18 이하를 실행하는 기기의 텍스트 크기를 사용자화할 수 없다)라는 Device Hub Known Issue(189261485), 두 디스플레이를 모두 쓰는 CameraCaptureAccessory에 대한 iPhone Duo 시뮬레이터 수정(190155353), 새 iPhone Duo 시뮬레이터 Known Issue인 “When switching between the inner and outer display of the iPhone Duo simulator, modifier keys such as Shift and Command might stop working.”(iPhone Duo 시뮬레이터의 안쪽과 바깥쪽 디스플레이를 전환하면 Shift와 Command 같은 보조 키가 작동하지 않을 수 있다)(189465196), 그리고 Instruments, Memory Gauge, XCTest UI Automation 수정 각 한 건입니다. macOS, watchOS, tvOS, visionOS SDK가 “incorrectly report 27.1 as a valid deployment target”(27.1을 유효한 배포 타깃으로 잘못 보고한다)라는 SDK Known Issue는 그대로이고, “APIs specific to iOS 27.1”(iOS 27.1 전용 API)에 관한 Mac Catalyst 항목도 그대로입니다. 두 Xcode 항목 사이에 iPhone Duo가 출시되었습니다. Apple 뉴스룸은 매장 데뷔를 10월 23일 금요일로 적고 있고, Apple의 보안 릴리스 페이지는 iOS 27.1을 “iPhone Duo” 하나만의 것으로, 10월 23일 날짜에 공개된 CVE 항목 없이 싣고 있습니다. 피드에는 iOS 27.1 항목이 한 번도 오르지 않았고 릴리스 노트 색인에는 27과 27.2만 있으므로, Xcode 27.1에 실린 27.1 SDK(이 Mac에서는 빌드 24A94232)는 휴대폰 한 기종에만 출시된 iOS 릴리스를 위한 SDK입니다. 10월 22일 날짜의 TestFlight 4.4.1은 “Support for iPhone Duo.”(iPhone Duo 지원)를 더했습니다. 27.2 노트는 iOS 27.2 릴리스 노트 글에서 읽고, 베타 기록은 27.2 베타 글에 남아 있습니다.15
9월 14일에 무엇이 나왔습니까?
| 항목 | 빌드 | 피드 날짜 |
|---|---|---|
| Xcode 27 | 27A266a | 2026년 9월 14일 월요일 |
| iOS 27.0 / iPadOS 27.0 | 24A437 | 9월 14일 월요일. 피드의 “iOS 27.0 RC (24A437)” 항목은 9월 11일 금요일 날짜이며, App Store Connect는 9월 9일 수요일부터 RC SDK 업로드를 받았습니다 |
| macOS 27.0 | 26A428 | 9월 14일 월요일 |
| tvOS 27.0 | 24J361 | 9월 14일 월요일 |
| visionOS 27.0 | 24M362 | 9월 14일 월요일 |
| watchOS 27.0 | 24R364 | 9월 14일 월요일 |
| App Store Connect | “You can now upload apps built with Xcode 27 using the SDK for iOS 27.0, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, and watchOS 27.0 for the App Store, and for internal and external testing through TestFlight.”(27.0 SDK를 사용해 Xcode 27로 빌드한 앱을 App Store용으로, 그리고 TestFlight를 통한 내부 및 외부 테스트용으로 업로드할 수 있게 되었다는 뜻) | 9월 14일 |
릴리스 노트의 Overview는 이렇게 적고 있습니다. “Xcode 27 includes Swift 6.4 and SDKs for iOS 27, iPadOS 27, tvOS 27, watchOS 27, macOS 27, and visionOS 27. Xcode 27 supports on-device debugging in iOS 17 and later, tvOS 17 and later, watchOS 10 and later, and visionOS. Xcode 27 requires a Mac running macOS Tahoe 26.6 or later.”(Xcode 27은 Swift 6.4와 27 SDK들을 포함하고, iOS 17 이상, tvOS 17 이상, watchOS 10 이상, visionOS에서의 기기 디버깅을 지원하며, macOS Tahoe 26.6 이상을 실행하는 Mac이 필요하다는 뜻)2 이 Mac에서 xcodebuild -version은 Xcode 27.0 Build version 27A266a를, swift --version은 Apple Swift version 6.4 (swiftlang-6.4.0.34.1 clang-2100.3.34.1)를 출력합니다.4
Xcode 27 릴리스 노트에는 무엇이 들어 있습니까?
노트는 Apple 개발자 문서 사이트의 Xcode Release Notes 아래에 있는 페이지 하나이며, 분량이 깁니다. 제목이 붙은 영역이 41개, 목록 항목이 296개이고, 세어 보면 새 기능 134개, 해결된 문제 134개, 알려진 문제 19개, 사용 중단 9개입니다. 항목이 가장 많은 영역은 60개인 Instruments이고, 그다음은 Device Hub 36개, Coding Intelligence 29개, Previews 27개, Previews & Playgrounds 18개, Testing 16개, Localization 15개 순입니다. 사용 중단 9개는 C++ Standard Library, Device Hub, devicectl, Instruments, Intel Deprecation, Linking, On Demand Resources, Previews, USDKit 아래에 있습니다. 이 가운데 빌드를 바꾸는 것은 Linking과 Intel 항목이며, 아래 절에서 이를 인용합니다. 이 숫자는 9월 26일에 각 제목 아래의 목록 항목을 제가 직접 센 것입니다.2
26.6과 비교해 Xcode 27은 무엇을 요구합니까?
빌드 머신을 업그레이드하기 전에 확인해야 할 문서는 Apple의 호환성 표입니다. 두 행을 나란히 놓으면 다음과 같습니다.3
| Xcode 26.6 | Xcode 27 | |
|---|---|---|
| 실행에 필요한 macOS | Tahoe 26.2에서 26.x | Tahoe 26.6 이상, Apple silicon 전용2 |
| SDK | iOS, tvOS, watchOS, visionOS, macOS 26.5; DriverKit 25.5 | iOS, tvOS, watchOS, visionOS, macOS 27; DriverKit 27 |
| 배포 타깃 | iOS 15, tvOS 15, watchOS 8, visionOS 1, macOS 11, DriverKit 20 | iOS 15, tvOS 15, watchOS 9, visionOS 1, macOS 12, DriverKit 21 |
| 디버깅 가능한 기기 | iOS 15, tvOS 15, watchOS 8, visionOS 1 이상 | iOS 17, tvOS 17, watchOS 10, visionOS 1 이상 |
| 시뮬레이터 | iOS 15, tvOS 15, watchOS 8, visionOS 1 이상 | iOS 17, tvOS 17, watchOS 10, visionOS 1 이상 |
| Swift 컴파일러 | 6.3 | 6.4(언어 모드 6, 5, 4.2, 4) |
이 행들 뒤에는 두 가지 결과가 숨어 있습니다. Instruments는 이제 iOS 17, watchOS 10, tvOS 17보다 오래된 기기를 받지 않으므로, 오래된 iPhone으로 꾸린 프로파일링 장비는 앱 코드를 건드리기도 전에 멈춥니다.2 그리고 Apple은 Device Hub의 키보드와 포인터 상호작용 범위를 한 문장으로 못 박습니다. “only supported on the following OS versions and newer: macOS 15.0, iOS 18.0, tvOS 18.0, watchOS 11.0, visionOS 2.0.”(macOS 15.0, iOS 18.0, tvOS 18.0, watchOS 11.0, visionOS 2.0 이상에서만 지원)2
Apple silicon 요구 사항은 Xcode를 실행하는 Mac 쪽에서는 우회할 방법이 없고, 7월에 Intel 글을 읽은 분에게는 이미 지난 이야기입니다. GA 노트는 7월의 문구를 그대로 유지합니다. “Xcode 27 will only install and run on Apple silicon Macs. The macOS 27 SDK supports back deploying Universal (Intel and Apple Silicon) apps to macOS 12 and later. Intel development is still possible with macOS versions that support Rosetta like macOS 27.”(Xcode 27은 Apple silicon Mac에만 설치되고 실행된다. macOS 27 SDK는 Universal 앱을 macOS 12 이상으로 백디플로이하는 것을 지원한다. macOS 27처럼 Rosetta를 지원하는 macOS 버전에서는 Intel 개발이 여전히 가능하다)2 세 번째 문장이 말하는 우회책은 앱을 배포할 Mac을 위한 것이지, 빌드하는 Mac을 위한 것이 아닙니다.
툴체인에서 무엇이 바뀌었습니까?
링커. GA 노트는 한 문장으로 정리합니다. “The ld64 linker has been removed and the -ld_classic option is no longer supported.”(ld64 링커가 제거되었고 -ld_classic 옵션은 더 이상 지원되지 않는다)2 27A266a에서 실제로 보면 이렇습니다. 툴체인의 usr/bin에는 링커 바이너리가 ld 하나뿐이고, 자신을 ld-27037.1, 2026년 8월 25일 빌드라고 보고합니다. 옛 플래그를 넘겨도 링크가 실패하지는 않습니다. hello.c에 int main(void){return 0;} 한 줄만 넣고 clang hello.o -o hello_classic -Xlinker -ld_classic을 실행하면 ld: warning: -ld_classic is no longer supported and will be ignored를 출력하고, 종료 코드 0으로 실행 파일을 써 냅니다. Apple이 Xcode 15에서 문서화했던 다른 표기인 -ld64는 결과가 더 나쁩니다.8 clang hello.c -o hello_ld64 -Wl,-ld64는 ld: library 'd64' not found로 실패하고 종료 코드 1을 반환합니다. 새 링커가 -ld64를 -l d64, 즉 d64라는 이름의 라이브러리 요청으로 읽기 때문입니다.4 따라서 OTHER_LDFLAGS에 -ld_classic을 남겨 둔 프로젝트는 계속 빌드되지만 링크할 때마다 새 경고가 뜨고, 옛 링커에서 얻던 동작은 모두 사라졌습니다. -ld64를 남겨 둔 프로젝트는 링크가 멈추는데, 그 오류는 링커 이름을 한 번도 언급하지 않습니다. ld64 글에서 이 플래그들이 어디서 왔는지 조사하고 두 실행 결과를 모두 기록했습니다.
기본 아키텍처. Intel Deprecation 절이 규칙을 밝힙니다. “Build targets with a min deployment target set to macOS 27.0 or DriverKit 27.0 will not build Universal by default. The ARCHS_STANDARD build setting will no longer include x86_64 when MACOSX_DEPLOYMENT_TARGET or DRIVERKIT_DEPLOYMENT_TARGET >= 27.0.”(최소 배포 타깃을 macOS 27.0 또는 DriverKit 27.0으로 설정한 타깃은 기본적으로 Universal로 빌드되지 않는다. MACOSX_DEPLOYMENT_TARGET 또는 DRIVERKIT_DEPLOYMENT_TARGET이 27.0 이상이면 ARCHS_STANDARD 빌드 설정에 x86_64가 더 이상 포함되지 않는다)2 멀티플랫폼 프로젝트(Yawara, SUPPORTED_PLATFORMS = iphoneos iphonesimulator macosx xros xrsimulator)에서 xcodebuild -showBuildSettings -sdk macosx로 재현했습니다. -sdk 인수가 없으면 이 프로젝트는 ARCHS_STANDARD를 아예 해석하지 않는데, 이 특이점은 Intel 글에서 다룹니다. MACOSX_DEPLOYMENT_TARGET = 26.0에서는 ARCHS_STANDARD = arm64 x86_64로, 27.0에서는 ARCHS_STANDARD = arm64로 해석되며, ARCHS_STANDARD_64_BIT는 둘 다 arm64 x86_64를 유지합니다.4 아무 경고도 없습니다. Universal로 배포하면서 타깃을 올린다면 ARCHS에 x86_64를 직접 추가하세요.
C++ 표준 라이브러리. “The minimum supported deployment target on macOS for the C++ standard library has been increased to 11.0,”(C++ 표준 라이브러리가 macOS에서 지원하는 최소 배포 타깃이 11.0으로 올라갔다)라고 하며, 노트는 “Potentially breaking changes” 아래에 동작 변경을 나열합니다. 첫 항목은 multi{map,set}::find가 더 이상 반드시 첫 번째 일치 요소를 반환하지는 않는다는 것입니다.2 새 기능 목록은 깁니다. std::chrono 값의 해싱, zip, std::optional<T&>, std::views::indices(n) 등이 있습니다.2
의존성 스캔, 그리고 이를 실패시킬 수 있는 규칙. Apple은 Swift 의존성 스캐너를 “to avoid redundant setup work and header searches when looking up Clang modules during a single dependency-scan action”(단일 의존성 스캔 작업 중 Clang 모듈을 찾을 때 불필요한 설정 작업과 헤더 검색을 피하기 위해) 최적화했다고 밝히며, 이 속도 개선에는 요구 사항이 따라옵니다. “every Clang module reachable from a single Swift dependency-scan action must have a unique module name. If two module maps visible to the same scan declare a Clang module with the same name, the scan may report an error. Previously, the scanner may have tolerated duplicating names.”(단일 Swift 의존성 스캔 작업에서 도달 가능한 모든 Clang 모듈은 고유한 모듈 이름을 가져야 한다. 같은 스캔에 보이는 두 모듈 맵이 같은 이름의 Clang 모듈을 선언하면 스캔이 오류를 보고할 수 있다. 이전 스캐너는 중복 이름을 허용했을 수 있다)2 Apple은 걸리는 형태 두 가지를 지목합니다. “projects or SDKs that vend the same Clang module name from more than one location on the header search path, and vendored third-party sources that ship a module.modulemap redeclaring an SDK module.”(헤더 검색 경로의 여러 위치에서 같은 Clang 모듈 이름을 제공하는 프로젝트나 SDK, 그리고 SDK 모듈을 다시 선언하는 module.modulemap을 포함한 서드파티 소스)2 링커 제거와 마찬가지로 이 규칙은 배포 타깃이 아니라 툴체인 업그레이드 시점에 발동합니다. ld64 글에서 충돌하는 모듈 맵 두 개를 스캐너에 통과시키고, SDK 모듈을 가리는 번들된 SQLite3 심(shim)을 컴파일하고, 프로젝트 일곱 개를 두 형태 모두에 대해 점검했습니다. 27A266a에서 첫 번째 형태는 Apple이 쓴 “may”(할 수 있다)가 예고한 그 오류를 보고합니다. module Widget을 선언한 모듈 맵 두 개를 하나의 검색 경로에 올리면 swiftc -scan-dependencies는 20번 중 20번 error: redefinition of module 'Widget'을 출력하면서도 20번 중 20번 종료 코드 0으로 끝나고 모듈을 첫 번째 -I 디렉터리로 해석합니다. Xcode 26.6은 7월에 같은 입력에 대한 20번의 실행 가운데 14번을 크래시하거나 abort로 끝냈습니다. 컴파일은 여전히 멈추는데, -typecheck가 같은 오류로 20번 중 20번 실패하기 때문입니다. 두 번째 형태, 즉 SDK의 SQLite3를 다시 선언하는 벤더링 맵은 stderr에 아무것도 남기지 않고 깨끗하게 스캔되며 SDK 모듈을 조용히 가려버립니다.4 ld64 글에는 26.6과 GA 양쪽의 실행 결과가 모두 실려 있습니다.
무엇이 컴파일되지 않습니까?
@State 매크로. 이 변경은 Xcode가 아니라 iOS 27 릴리스 노트에 실려 있고, 배포하는 타깃이 아니라 빌드에 쓰는 컴파일러에 따라 작동합니다. “Xcode 27 introduces a new @State implementation that avoids this repeated evaluation. This new behavior back-deploys to iOS 17 aligned OSes. The new @State is implemented with a Swift macro. It is largely source compatible with the property wrapper version, with a few exceptions.”(Xcode 27은 이 반복 평가를 피하는 새 @State 구현을 도입한다. 이 새 동작은 iOS 17 세대 OS까지 백디플로이된다. 새 @State는 Swift 매크로로 구현되었으며, 몇 가지 예외를 제외하면 프로퍼티 래퍼 버전과 대체로 소스 호환된다)6 Apple은 예외 네 가지를 들고 그중 둘에는 코드 목록을 붙였으며, 나머지 둘에는 한두 문장씩만 달았습니다. “In rare situations, the automatic inference of generic arguments of @State is less flexible with the macro implementation. Write the type with more specificity.”(드물게 @State의 제네릭 인수 자동 추론이 매크로 구현에서는 덜 유연하다. 타입을 더 구체적으로 쓰라)와 “Composing @State with other property wrappers or macros is not supported.”(@State를 다른 프로퍼티 래퍼나 매크로와 조합하는 것은 지원되지 않는다)입니다.6 기존 코드를 잡는 것은 코드 목록이 붙은 두 가지입니다. 하나는 선언 시점에 이미 값을 가진 @State 프로퍼티에 대입하는 이니셜라이저입니다. SwiftUI는 그 대입을 늘 버려 왔는데, 이제는 “some such cases no longer compile.”(그런 경우 일부는 더 이상 컴파일되지 않는다)이라고 합니다.6 다른 하나는 모든 저장 멤버가 private일 때 컴파일러가 합성하는 private 멤버와이즈 이니셜라이저입니다. “The state macro disables this synthesized initializer. So the code above no longer compiles.”(state 매크로는 이 합성 이니셜라이저를 비활성화한다. 따라서 위 코드는 더 이상 컴파일되지 않는다)6 27A266a에서 첫 번째 예제는 적힌 그대로 실패하며, page를 대입하는 줄에서 error: variable 'self.title' used before being initialized가 납니다. title이 존재하기 전에 매크로의 세터가 self에 대해 실행되기 때문입니다. self.title = title을 그 위로 옮기면 같은 파일이 컴파일되고, @State 대입은 예전처럼 버려집니다.46 두 번째 예제, 즉 선언 시점 값이 없는 @State를 가진 구조체에 대해 익스텐션에서 self.init(page: page, title: title)을 호출하는 코드는 제 실행에서 수정 없이 컴파일되었고, 매크로 확장을 보면 이를 가능하게 하는 형태가 드러납니다. 매크로는 @storageRestrictions(initializes: _page) init 접근자 뒤에 private var _page: SwiftUICore.State<StickerPage>를 내보내는데, 이 구성 덕분에 멤버와이즈 이니셜라이저가 page:를 받을 수 있습니다.4 이 노트는 확인해야 할 형태를 설명한 것으로 읽고, 각각을 자신의 코드에서 직접 확인하세요. @State 매크로 글은 출시 중인 앱 네 개에서 두 패턴을 세어 봤습니다. 그 글은 이번 GA 테스트 전인 7월에 베타 노트를 바탕으로 썼는데, 거기서 열어 둔 질문도 여기서 닫힙니다. 이니셜라이저 안에서 백킹 스토리지에 직접 대입하는 _page = State(initialValue:)는 선언 시점 값이 있든 없든 27A266a에서 컴파일됩니다.4
SE-0508 깨짐. Swift Compiler의 Known Issues에 이렇게 적혀 있습니다. “A computed property with both an init accessor and an array/dictionary literal initial value will no longer compile if the getter is declared before the init accessor.”(init 접근자와 배열/딕셔너리 리터럴 초기값을 모두 가진 계산 프로퍼티는 게터가 init 접근자보다 먼저 선언되면 더 이상 컴파일되지 않는다) 코드 목록이 이어지고, 그 뒤에 출처가 나옵니다. “This is a known source break from SE-0508.”(이는 SE-0508로 인한 알려진 소스 호환성 깨짐이다) 우회책 전문은 이렇습니다. “Swap the init accessor and the getter such that the init accessor is declared first.”(init 접근자가 먼저 선언되도록 init 접근자와 게터의 순서를 바꾸라)2 SE-0508은 “Array expression trailing closures”(배열 표현식 후행 클로저)로 Swift 6.4에 구현되었으며, 제안서는 정확히 이 경우를 예고합니다. “If the getter is declared before the init accessor, we will now attempt to parse as a trailing closure,”(게터가 init 접근자보다 먼저 선언되면 이제 후행 클로저로 파싱을 시도한다)에 더해 “init accessors are however considered for disambiguation, so swapping the accessors is sufficient to make this valid regardless of initial value used,”(다만 init 접근자는 모호성 해소에 고려되므로, 접근자 순서를 바꾸면 초기값과 무관하게 유효해진다)라고 하고, 이 경우가 “does not appear in the source compatibility suite, or for internal Swift projects at Apple.”(소스 호환성 스위트에도, Apple 내부 Swift 프로젝트에도 나타나지 않는다)이라고 덧붙입니다.7 아홉 줄짜리 구조체로 재현됩니다. 게터를 먼저 두면 swiftc가 접근자 줄에서 error: initializers may only be declared within a type으로 실패하고, @storageRestrictions(initializes:) init 접근자를 get 위로 옮기면 같은 파일이 컴파일됩니다.4
struct Container {
private var storage: [Int] = []
var items: [Int] = [] {
@storageRestrictions(initializes: storage)
init(initialValue) { storage = initialValue } // get보다 먼저 와야 함
get { storage }
set { storage = newValue }
}
}
PreviewProvider. Previews 절에는 사용 중단 항목이 하나 있습니다. “PreviewProvider and its family of preview modifiers.”(PreviewProvider와 그에 딸린 프리뷰 수정자들)2 SDK에도 반영되어 있는데, 프로토콜에는 메시지 하나가, 각 수정자에는 서로 다른 메시지가 붙어 있습니다. iOS 27 SDK의 SwiftUI 인터페이스에서 public protocol PreviewProvider는 @available(anyAppleOS, deprecated: 27.0, message: "Use #Preview instead.") 아래에 있고, previewLayout은 “Use #Preview(traits: .sizeThatFitsLayout) or .fixedLayout(width:height:) instead.”, previewDisplayName은 “Use #Preview(“name”) instead.”, previewInterfaceOrientation은 “Use #Preview(traits: .landscapeLeft) or other orientation traits instead.”, previewDevice는 “Use the device picker in Xcode’s canvas.”(Xcode 캔버스의 기기 선택기를 사용하라), 그리고 previewContext는 PreviewContext 및 PreviewContextKey 프로토콜과 함께 “Use #Preview with a Widget timeline provider or entries instead.”(대신 Widget 타임라인 프로바이더 또는 엔트리를 지정한 #Preview를 사용하라)라고 말합니다.4 이 메시지를 보게 될지는 두 가지 사실이 결정합니다. 컴파일러는 사용 중단 버전을 배포 타깃과 비교하므로, 수정자들은 최소 버전이 27.0인 타깃에서만 경고합니다. previewLayout, previewDisplayName, previewDevice를 사용하는 파일은 -target arm64-apple-ios27.0-simulator에서 경고 세 개를 냈고 17.0과 26.0에서는 하나도 내지 않았습니다. 그리고 PreviewProvider 자체는 다른 이유로 절대 경고하지 않습니다. SDK는 이를 anyAppleOS 사용 중단 바로 위에 @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)를 붙여 선언하는데, 제 검증에서 이 쌍을 가진 프로토콜은 27.0 타깃에서 준수(conformance)에 대해서도, 매개변수 타입으로 쓰는 경우에 대해서도 경고를 내지 않았습니다. 반면 같은 프로토콜을 @available(iOS, deprecated: 27.0)만으로, 또는 anyAppleOS 형태만으로 사용 중단 처리하면 둘 다 경고했습니다. 수정자들은 자기 선언에 anyAppleOS 사용 중단만 달고 있고(이들을 담은 extension SwiftUICore.View가 introduced 속성을 달고 있는데, 그렇게 상속된 형태는 경고를 억제하지 않습니다), 그래서 수정자는 경고하고 프로토콜은 경고하지 않는 것입니다.4 실제 출시 중인 어떤 배포 타깃에서도 빌드 로그는 어느 쪽이든 조용하므로, PreviewProvider와 수정자들을 검색해 #Preview로 옮기세요. 캔버스는 이제 새 #Preview(arguments:) 문법을 통해 인수별로 그리드로 렌더링합니다.24
System의 새 stat(). System 라이브러리는 이제 stat, lstat, fstat, fstatat에 대한 Swift API를 제공하며, Stat 타입과 FilePath.stat() 인스턴스 메서드가 있습니다.2 노트는 한정자 없는 stat()을 호출하는 익스텐션이 새 메서드와 충돌하던 문제를 해결됨으로 표시합니다. 그 충돌이 살아 있던 동안 Darwin. 한정자를 추가했다면 그대로 두어도 됩니다.2
Address Sanitizer는 반대 방향입니다. “Address Sanitizer might fail to launch on iOS 27.0, tvOS 27.0, watchOS 27.0, and visionOS 27.0 when building with Xcode 26.4 or older.”(Xcode 26.4 이하로 빌드하면 iOS 27.0, tvOS 27.0, watchOS 27.0, visionOS 27.0에서 Address Sanitizer가 실행에 실패할 수 있다) 우회책은 Xcode 26.5 이상인데, CI 머신에는 옛 Xcode를 유지하면서 기기만 27.0으로 업데이트하는 팀에는 중요한 문제입니다.2
IDE와 도구에서는 무엇이 바뀌었습니까?
- Interface Builder가 시뮬레이터 없이 빌드합니다. 새 컴파일 모드
toolchain은 “for UIKit (Cocoa Touch) based documents. Enabled by default,toolchainallows compiling IB documents without the need to download a simulator, which is especially useful for build servers.”(UIKit(Cocoa Touch) 기반 문서용이며, 기본으로 활성화된toolchain은 시뮬레이터를 내려받지 않고도 IB 문서를 컴파일할 수 있어 빌드 서버에 특히 유용하다)라고 설명됩니다.2 - 시뮬레이터가 더 빨리 부팅되고, 재부팅도 됩니다. “The simulator runtimes now contain a pre-built dyld cache. This will make first launch of a simulator much faster,”(시뮬레이터 런타임에 미리 빌드된 dyld 캐시가 포함되어 시뮬레이터의 첫 실행이 훨씬 빨라진다)라고 하며,
simctl에reboot명령이 추가되었습니다.2 알려진 문제 하나가 남아 있는데, Apple의 표현으로는 이렇습니다. “Some simulator runtimes are not completely deleted when removed, re-appearing after a reboot.”(일부 시뮬레이터 런타임은 제거해도 완전히 삭제되지 않고 재부팅 후 다시 나타난다)2 - devicectl JSON은 버전 5입니다.
xcrun devicectl --version은 642.16을 보고하고,list devices --json-output은"jsonVersion": 5를 씁니다. Apple은hardwareProperties,deviceProperties,connectionProperties필드를 사용 중단하고properties딕셔너리로 대체했으며, 이 필드들이 아직 들어 있는 결과에는_deprecationNotice가 붙습니다.24 - StoreKit 테스트. StoreKit 구성 UI에서 오퍼 코드를 정의할 수 있고, 로컬 테스트용 구독 번들을 구성할 수 있으며, Transaction Manager에서 기기 없이 오퍼 코드가 적용된 구매를 시험할 수 있습니다.2
- Organizer. Insights Overview가 “summarizes high-impact performance regressions”(영향이 큰 성능 저하를 요약한다)라고 하며, Hitches 지표가 Scrolling 지표를 대체합니다.2
- 코딩 어시스턴트. 모델 목록에 Google Gemini가 합류했고, “Planning with agents is now first class in Xcode,”(에이전트와 함께하는 플래닝이 이제 Xcode의 일급 기능이다)라고 하며, 플랜은 에이전트가 진행하기 전에 승인하는 편집 가능한 Markdown 산출물입니다. 코딩 에이전트 글에서 베타 시점의 워크플로를 다뤘고, GA 노트에는 바로 그 산출물을 위한 Markdown 편집기가 실려 있습니다.2
- 현지화. 에이전트가 String Catalog 항목을 번역할 수 있고, 현지화 내보내기가 이제 헤더 파일에서
NSLocalizedString과 유사한 매크로를 추출합니다.2 - Icon Composer. 노트는 이를 Icon Composer 2.0이라 부르며 “a new sharper rendering mode for upcoming 2027 operating systems”(다가오는 2027년 운영체제를 위한 더 선명한 새 렌더링 모드)라고 설명합니다. 27A266a에 들어 있는 번들은 버전 27.0을 보고합니다.24
- 테스트. 테스트 플랜에서 UI 테스트 중 대상 앱이 충돌했을 때 Xcode가 어떻게 처리할지를 끔부터 치명적 실패까지 설정할 수 있고,
swift test에--maximum-repetitions와--repeat-until [pass|fail], 그리고 마지막에 나오는 실패 요약이 추가되었습니다.2 - 디버깅. 브리징 헤더가 있을 때 LLDB는 “can now directly import explicitly built Swift modules and PCH from DerivedData,”(이제 DerivedData에서 명시적으로 빌드된 Swift 모듈과 PCH를 직접 가져올 수 있다)라고 하며,
language swift task tree명령이 Swift 동시성 태스크를 나열합니다.2
이번 주에 제가 할 일
- CI를 건드리기 전에 호환성 행을 읽습니다. 빌드 Mac에는 macOS 26.6, Apple silicon 전용, 가장 오래된 테스트 기기는 iOS 17, 그리고 macOS 12, watchOS 9, DriverKit 21 중 제품에 해당하는 것을 확인합니다.23
-ld_classic과-ld64를 grep으로 찾아 둘 다 제거합니다. 링커는 첫 번째를 링크할 때마다 경고와 함께 무시하고, 두 번째에서는 바로 실패합니다. 빌드 설정을 열어 본 김에, SDK 모듈을 다시 선언하는 직접 작성한module.modulemap파일도 찾아봅니다. Apple이 고유 모듈 이름 규칙에서 지목한 바로 그 형태입니다.24- macOS나 DriverKit 타깃을 27.0으로 설정했고 Intel용으로도 배포한다면
ARCHS를 명시적으로 설정합니다.ARCHS_STANDARD만으로는 arm64가 되는데, macOS에 대해서는 제가 재현했고 Apple은 둘 다에 대해 명시합니다.24 PreviewProvider,previewLayout,previewDisplayName,previewDevice를 검색하고 각 주석의 메시지를 따릅니다. 프로토콜은#Preview로,previewLayout은#Preview(traits: .sizeThatFitsLayout)또는.fixedLayout(width:height:)로,previewDisplayName은#Preview("name")로,previewDevice는 캔버스의 기기 선택기로 옮깁니다. 수정자들은 27.0 배포 타깃에서만 경고하고PreviewProvider준수는 어떤 타깃에서도 경고하지 않으므로, 출시 중인 타깃의 빌드 로그는 조용한 채로 남습니다.4- Xcode 27로 한 번 빌드하고 진단 두 가지를 확인합니다. 하나는
variable 'self.title' used before being initialized로, 선언 시점 값을 이미 가진@State프로퍼티를 다른 저장 프로퍼티보다 먼저 대입하는 이니셜라이저에서 나며, @State 매크로 글이 차근차근 설명합니다. 다른 하나는initializers may only be declared within a type으로, 배열 또는 딕셔너리 리터럴 초기값과 init 접근자를 가진 프로퍼티에서 나며, 접근자를 게터 위로 옮기면 됩니다.246 - App Store Connect가 받아 주는 지금, 27 SDK로 TestFlight 빌드를 업로드합니다. 그리고 런치 스크린 규칙과 UIKit 씬 의무화를 염두에 두세요. 둘 다 앱이 27에 링크되는 순간부터 적용됩니다.56
자주 묻는 질문
Xcode 27은 언제 나왔습니까?
2026년 9월 14일 월요일, 빌드 27A266a로, iOS 27.0, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, watchOS 27.0과 같은 날 나왔습니다. 피드는 iOS 27.0 RC(24A437) 항목에 9월 11일 날짜를 달았는데, App Store Connect가 RC SDK 빌드를 받기 시작한 지 이틀 뒤입니다.15
Xcode 27은 어떤 macOS가 필요합니까?
Apple silicon Mac의 macOS Tahoe 26.6 이상입니다. Intel Mac에는 설치되지도 실행되지도 않습니다. 같은 날 출시된 macOS 27.0에서도 실행됩니다.23
Xcode 27의 최소 배포 타깃은 무엇입니까?
iOS 15, iPadOS 15, tvOS 15, watchOS 9, visionOS 1, macOS 12, DriverKit 21입니다. Xcode 26.6과 비교하면 watchOS는 8에서, macOS는 11에서, DriverKit은 20에서 올라갔습니다.3
Xcode 27로 여전히 Universal Mac 앱을 빌드할 수 있습니까?
예, macOS 12까지 거슬러 빌드할 수 있지만, 타깃의 MACOSX_DEPLOYMENT_TARGET이 27.0이 되면 기본으로는 그렇지 않습니다. 그때 ARCHS_STANDARD는 arm64로만 해석되므로 ARCHS에 x86_64를 직접 추가해야 합니다.24
Xcode 27.1은 나왔습니까?
2026년 9월 15일 기준으로 아직입니다. Apple의 Releases 피드와 Xcode 릴리스 노트 색인에는 Xcode 27만 있고, Apple의 iPhone Duo 개발자 페이지는 Xcode 27.1 베타를 여전히 “Coming later this month”(이달 말 출시 예정)로 적어 두고 있습니다. iPhone Duo SDK는 이번 릴리스에 포함되지 않습니다.1 (9월 17일: 27.1은 여전히 없습니다. Xcode 27.2 베타(27B5019j)가 9월 16일에 나왔고, 그 릴리스 노트는 iPhone Duo용 iOS SDK와 시뮬레이터 지원이 “will be available later this month in an upcoming release of Xcode 27.1.”(이달 말 예정된 Xcode 27.1 릴리스에서 제공될 예정)이라고 적고 있습니다.9) (9월 19일: 베타로는, 그렇습니다. Xcode 27.1 베타(27A9269)가 9월 18일에 iOS 27.1 SDK와, 27.2 베타 노트의 표현으로 “simulator support for iPhone Duo,”(iPhone Duo 시뮬레이터 지원)를 싣고 출시됐고, App Store Connect는 그 빌드를 TestFlight용으로 받고 있습니다. 27.1 정식 릴리스는 아직 없으며, Apple의 9월 16일 뉴스 글은 iPhone Duo가 10월 23일에 출시될 때 “will run iOS 27.1”(iOS 27.1을 탑재하고 구동한다)이라고 말합니다.10) (10월 1일: 여전히 첫 번째 27.1 베타인 27A9269뿐입니다.11) (10월 11일: RC로서는 나왔습니다. Xcode 27.1 RC(27A9275)가 10월 5일에 Swift 6.4와 iOS 27.1 SDK를 싣고 출시됐고, App Store Connect는 그 빌드를 App Store용으로 받습니다. Releases 피드에는 정식 Xcode 27.1이 아직 없습니다.12) (10월 14일: 여전히 RC입니다. 그날 Xcode 27.2 베타 3이 출시됐지만, 함께 나온 Xcode 27.1 정식 릴리스는 없습니다.13) (10월 15일: 정식 릴리스로, 그렇습니다. RC의 빌드인 Xcode 27.1(27A9275)이 Apple의 Releases 피드에 태평양 시간 13:00 날짜로 올라 있습니다. 노트 페이지의 제목은 “Xcode 27.1 Release Notes”로 바뀌었고, 같은 날 App Store Connect 항목은 “You can now upload apps built with Xcode 27.1 using the SDK for iOS 27.1, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, and watchOS 27.0 for the App Store, and for internal and external testing through TestFlight.”(Xcode 27.1로 iOS 27.1, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, watchOS 27.0 SDK를 사용해 빌드한 앱을 App Store용으로, 그리고 TestFlight를 통한 내부 및 외부 테스트용으로 업로드할 수 있다)라고 적고 있습니다.14)
Xcode 27 릴리스 노트는 어디에 있습니까?
Apple 개발자 문서 사이트의 Xcode Release Notes 아래에 이 릴리스용 페이지 하나로 있습니다. 여기서 인용한 절은 Overview, Linking, Intel Deprecation, Previews, Swift Compiler, Address Sanitizer, Instruments, Device Hub, devicectl, Simulator, Interface Builder, C++ Standard Library, Organizer, Coding Intelligence, Source Editor, Icon Composer, StoreKit Testing in Xcode, Localization, Testing, Swift Package Manager, Debugging, System, 그리고 9월 17일 업데이트부터는 Enhanced Security입니다.29 @State 매크로 변경은 대신 iOS 및 iPadOS 27 릴리스 노트의 SwiftUI 절에 있습니다.6
출처
-
Apple, Releases, 2026년 9월 15일에 가져온 RSS 피드. “Xcode 27 (27A266a)”, “iOS 27.0 (24A437)”, “iPadOS 27.0 (24A437)”, “macOS 27.0 (26A428)”, “tvOS 27.0 (24J361)”, “visionOS 27.0 (24M362)”, “watchOS 27.0 (24R364)”, “App Store Connect Update”는 모두 2026년 9월 14일 월요일 날짜이고, “iOS 27.0 RC (24A437)”는 2026년 9월 11일 금요일 날짜입니다. Xcode Release Notes 색인에는 27 항목이 “Xcode 27 Release Notes” 하나뿐이며, 두 곳 모두 27.1 항목은 없습니다. Apple Developer, Get Ready for iPhone Duo, 2026년 9월 15일 확인: “Xcode 27.1 beta. Get the latest SDKs to build, run, and test your app for iPhone Duo. Coming later this month”(Xcode 27.1 베타. iPhone Duo용 앱을 빌드, 실행, 테스트할 최신 SDK. 이달 말 출시 예정). ↩↩↩↩↩
-
Apple, Xcode 27 Release Notes, GA 출시 후인 2026년 9월 15일 확인. 인용한 절: Overview; Linking, Deprecations(“The ld64 linker has been removed and the
-ld_classicoption is no longer supported.” 165165518); Intel Deprecation, New Features(ARCHS_STANDARD, 161837535) 및 Deprecations(Apple silicon 전용, 전문 인용, 162138432); Previews, Deprecations(“PreviewProviderand its family of preview modifiers.” 144168701) 및 New Features(#Preview(arguments:), 167544057); Swift Compiler, New Features(의존성 스캐너와 고유 모듈 이름 요구 사항, 발췌, 136303612) 및 Known Issues(SE-0508, 180969028; 우회책 문장은 전문 인용); System, New Features 및 Resolved Issues(177911316); Address Sanitizer, Known Issues(178072780); Instruments, Deprecations(166097304); Device Hub, Deprecations(160482487); devicectl, New Features(170812159) 및 Deprecations(183772705); Simulator, New Features(179846743, 172303413) 및 Known Issues(141290052); Interface Builder, New Features; C++ Standard Library, New Features 및 Deprecations; Organizer; Coding Intelligence(171990272, 172857081); Source Editor, New Features(Markdown 편집기, 175022151); Localization; Icon Composer; StoreKit Testing in Xcode; Testing; Swift Package Manager, New Features(--maximum-repetitions, 177561078; 실패 요약, 168311253); Debugging. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, Xcode support: minimum requirements and supported SDKs, 2026년 9월 15일 확인. Xcode 27 행: macOS Tahoe 26.6 이상; SDK는 iOS 27, tvOS 27, watchOS 27, visionOS 27, macOS 27, DriverKit 27; 배포 타깃은 iOS 15에서 27, iPadOS 15에서 27, tvOS 15에서 27, watchOS 9에서 27, visionOS 1에서 27, macOS 12에서 27, DriverKit 21에서 27; 기기 지원은 iOS 17, tvOS 17, watchOS 10, visionOS 1 이상; 시뮬레이터는 iOS 17, tvOS 17, watchOS 10, visionOS 1 이상; Swift 6.4 컴파일러, 언어 모드 6, 5, 4.2, 4. Xcode 26.6 행: macOS Tahoe 26.2에서 26.x; SDK는 26.5, DriverKit 25.5; 배포 타깃은 iOS 15, tvOS 15, watchOS 8, visionOS 1, macOS 11, DriverKit 20; 기기와 시뮬레이터 지원은 iOS 15, tvOS 15, watchOS 8, visionOS 1부터; Swift 6.3. ↩↩↩↩↩↩
-
저자 재현.
DEVELOPER_DIR을 가리키게 한 Xcode 27.0(27A266a), macOS 26.6.2(25G83), 2026년 9월 15일.xcodebuild -version: “Xcode 27.0 Build version 27A266a”;swift --version: “Apple Swift version 6.4 (swiftlang-6.4.0.34.1 clang-2100.3.34.1)”; 툴체인의usr/bin에는 링커가ld하나뿐이고,ld -v는 “PROJECT:ld-27037.1”과 “Aug 25 2026” 빌드를 출력합니다.int main(void){return 0;}가 담긴hello.c로clang hello.o -o hello_classic -Xlinker -ld_classic은 “ld: warning: -ld_classic is no longer supported and will be ignored”를 출력하고 종료 코드 0으로 끝났으며,clang hello.c -o hello_ld64 -Wl,-ld64는 “ld: library ‘d64’ not found”와 “clang: error: linker command failed with exit code 1 (use -v to see invocation)”를 출력하고 출력 파일 없이 종료 코드 1로 끝났습니다. 멀티플랫폼 프로젝트 Yawara.xcodeproj(SUPPORTED_PLATFORMS = iphoneos iphonesimulator macosx xros xrsimulator,-sdk인수 없이는ARCHS_STANDARD줄을 출력하지 않음)에 대한xcodebuild -showBuildSettings -sdk macosx:MACOSX_DEPLOYMENT_TARGET = 26.0에서ARCHS_STANDARD = arm64 x86_64, 27.0에서ARCHS_STANDARD = arm64, 둘 다에서ARCHS_STANDARD_64_BIT = arm64 x86_64.var items: [Int] = []와@storageRestrictions(initializes: storage) init(initialValue)접근자를 가진 아홉 줄짜리Container구조체: 게터가 먼저면init줄에서 “error: initializers may only be declared within a type”으로 실패하고, 접근자가 먼저면 종료 코드 0으로 컴파일됩니다. iPhoneOS 27.0 SDK의SwiftUI.swiftmodule/arm64e-apple-ios.swiftinterface:@available(anyAppleOS, deprecated: 27.0, message: "Use #Preview instead.")가 14971행(public protocol PreviewProvider), 14978행(그 익스텐션), 14991행(PreviewPlatform)에; “Use #Preview with a Widget timeline provider or entries instead.”가 15023행(PreviewContextKey), 15029행(PreviewContext), 15069행(previewContext)에; “Use the device picker in Xcode’s canvas.”가 15053행(previewDevice)에; “Use #Preview(traits: .sizeThatFitsLayout) or .fixedLayout(width:height:) instead.”가 15058행(previewLayout)에; “Use #Preview("name") instead.”가 15063행(previewDisplayName)에; “Use #Preview(traits: .landscapeLeft) or other orientation traits instead.”가 15075행(previewInterfaceOrientation)에 있습니다. 순수한PreviewProvider준수를swiftc -c로 컴파일하면-target arm64-apple-ios27.0-simulator,ios26.0,ios17.0어디서도 경고가 없었습니다.PreviewProvider안에서previewLayout(.sizeThatFits),previewDisplayName("Card"),previewDevice(PreviewDevice(rawValue: "iPhone 18 Pro"))를 적용한 파일은ios27.0에서[#DeprecatedDeclaration]경고 세 개(“‘previewLayout’ was deprecated in any Apple OS 27.0: Use #Preview(traits: .sizeThatFitsLayout) or .fixedLayout(width:height:) instead.” 및 그에 대응하는previewDisplayName과previewDevice메시지)를 냈고ios26.0과ios17.0에서는 없었습니다. 프로토콜 네 개에 각각 준수 구조체를 두고 한 함수 시그니처에any P매개변수를 둔 검증을-target arm64-apple-ios27.0-simulator로 컴파일했습니다.@available(iOS, deprecated: 27.0)만,@available(anyAppleOS, deprecated: 27.0)만,@available(iOS, deprecated: 27.0)위에@available(iOS 13.0, *)를 둔 것은 각각 준수 줄과any P매개변수 타입에서 경고(“‘P1’ was deprecated in iOS 27.0”, “‘P2’ was deprecated in any Apple OS 27.0”, “‘P4’ was deprecated in iOS 27.0”)를 냈지만, SDK의 쌍인@available(anyAppleOS, deprecated: 27.0)위의@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)는 어느 쪽에도 경고를 내지 않았습니다. 그 존재 타입을 통한 메서드 호출은 네 경우 모두 진단이 없었고,ios26.0에서는 네 경우 모두 경고하지 않았습니다. 인터페이스에서PreviewProvider는 14970행에서 14972행까지 정확히 그 쌍 아래에 있고,previewLayout은 15058행에서 15059행까지 자기 선언에anyAppleOS사용 중단만 달고 있으며, 이를 담은extension SwiftUICore.View의 introduced 속성은 15051행에 있습니다.init(title:)안에서_page = State(initialValue: StickerPage(title: title))를 대입하는 뷰 두 개, 즉@State private var page: StickerPage인 것과@State private var page = StickerPage()인 것을 담은 파일은ios27.0에서 종료 코드 0, 진단 없이 컴파일되었습니다.@State검증은 각각@State private var page와let title: String을 가진StickerPageView로, iPhoneSimulator 27.0 SDK에 대해swiftc -c -target arm64-apple-ios27.0-simulator로 컴파일했습니다. Apple의 첫 번째 예제, 즉@State private var page = StickerPage()와self.page를 먼저 대입하고self.title을 대입하는init(title:)는self.page줄에서 “error: variable ‘self.title’ used before being initialized”로 실패해 종료 코드 1이었고,self.title = title을self.page대입 위로 옮긴 같은 파일은 컴파일되어 종료 코드 0이었습니다. Apple의 두 번째 예제, 즉 초기값 없는@State private var page: StickerPage와self.init(page: page, title: title)을 호출하는 익스텐션은 컴파일되어 종료 코드 0이었고,-Xfrontend -dump-macro-expansions는 매크로가@storageRestrictions(initializes: _page) init(initialValue)접근자와 함께private var _page: SwiftUICore.State<StickerPage>를 내보내는 것을 보여 줬습니다.xcrun devicectl --version: 642.16;devicectl list devices --json-output은"jsonVersion": 5를 썼습니다. 27A266a 안의 Icon ComposerInfo.plist:CFBundleShortVersionString27.0. iPhoneSimulator 27.0 SDK에 대해-target arm64-apple-ios27.0-simulator로 실행한 모듈 맵 검증:module Widget을 선언하는module.modulemap을 각각 담은 디렉터리 두 개에, 이를 임포트하는main.swift하나를 더했습니다. 둘 다 검색 경로에 올린 상태에서swiftc -typecheck는 20번 중 20번 종료 코드 1로 끝났고(“error: redefinition of module ‘Widget’”, “note: previously defined here”),swiftc -scan-dependencies는 20번 중 20번 종료 코드 0으로 끝나면서 매번 같은 오류와 note를 stderr에 출력하고Widget항목이 첫 번째 디렉터리의 모듈 맵을 가리키고,-I인수 두 개의 순서를 제가 뒤집자 다른 쪽 디렉터리의 맵을 가리키는 그래프를 썼습니다.SQLite3를 선언하는Vendor/module.modulemap을 검색 경로에 올린 경우에는 20번 중 20번 종료 코드 0과 빈 stderr로 스캔되었고,SQLite3를 벤더링 맵으로 해석했으며,sqlite3_open을 호출하는 파일은 해당 디렉터리가 검색 경로에서 빠질 때까지 “error: cannot find ‘sqlite3_open’ in scope”로 타입 검사에 실패했습니다. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, App Store Connect release notes, 2026년 9월 15일 확인. 2026년 9월 14일 항목은 위 표에 전문 인용했습니다. 2026년 9월 9일 항목은 RC SDK 업로드를 기록하고 iPhone Duo, iPhone 18 Pro Max, iPhone 18 Pro, Apple Watch Ultra 4, Apple Watch Series 12의 스크린샷과 앱 미리보기 사양을 추가하며, “Support for uploading assets for iPhone Duo in App Store Connect will be available later this year.”(App Store Connect에서 iPhone Duo용 에셋 업로드 지원은 올해 말에 제공될 예정)라고 적고 있습니다. ↩↩↩↩↩
-
Apple, iOS & iPadOS 27 Release Notes, SwiftUI, New Features(105893279), 2026년 9월 15일 확인. 다음 인용의 출처입니다. “Xcode 27 introduces a new
@Stateimplementation that avoids this repeated evaluation. This new behavior back-deploys to iOS 17 aligned OSes. The new@Stateis implemented with a Swift macro. It is largely source compatible with the property wrapper version, with a few exceptions.”;StickerPageView목록이 딸린 “If you provide an initial value at@Statedeclaration, and also try to assign a value to it in an initializer, the initializer value is discarded. This behavior has not changed because of the macro, but some such cases no longer compile:”; 목록이 딸린 “When all stored members of a struct are private, the compiler synthesizes a private init that can be used in an extension of the same type:”; 그리고 “The state macro disables this synthesized initializer. So the code above no longer compiles. To mitigate, assign value to members explicitly:”; 또한 목록 없는 두 예외 “In rare situations, the automatic inference of generic arguments of@Stateis less flexible with the macro implementation. Write the type with more specificity.”와 “Composing@Statewith other property wrappers or macros is not supported.” 같은 문서의 UIKit 절에는 6단계에서 인용한 두 요구 사항이 있습니다. New Features의 “iOS and iPadOS apps built with the 27.0 SDK or later are required to include a launch screen.”(27.0 SDK 이상으로 빌드한 iOS 및 iPadOS 앱은 런치 스크린을 포함해야 한다)(168247372)와 Deprecations의 “Apps built with the latest SDK must adopt the scene-based life cycle or they fail to launch.”(최신 SDK로 빌드한 앱은 씬 기반 라이프사이클을 채택해야 하며, 그렇지 않으면 실행에 실패한다)(141837548)입니다. ↩↩↩↩↩↩↩↩↩↩↩ -
Cal Stephens, SE-0508: Array expression trailing closures, Swift Evolution, 상태 “Implemented (Swift 6.4)”, 구현 swiftlang/swift#86244, 2026년 9월 15일 확인. “Init accessors” 소절이 다음의 출처입니다. “One other case where this can result in an error is for properties with both an
initaccessor and initial value that is either an array or dictionary literal. If the getter is declared before theinitaccessor, we will now attempt to parse as a trailing closure:”, 위에서 인용한 모호성 해소 문장, 그리고 “This particular case appears to be quite rare in practice, it does not appear in the source compatibility suite, or for internal Swift projects at Apple.” ↩ -
Apple, Xcode 15 Release Notes, Linking, New Features(108915312), 2026년 9월 15일 확인: “The classic linker can still be explicitly requested using -ld64, and will be removed in a future release.”(클래식 링커는 -ld64로 여전히 명시적으로 요청할 수 있으며, 향후 릴리스에서 제거될 예정) ↩↩
-
Apple, Releases, 2026년 9월 17일에 가져온 RSS 피드, 마지막 빌드 날짜 Wed, 16 Sep 2026 14:00:00 PDT. 2026년 9월 16일 수요일 날짜의 항목: “TestFlight Update”, “Xcode 27.2 beta (27B5019j)”, “iOS 27.2 beta (24B5084k)”, “iPadOS 27.2 beta (24B5084k)”, “macOS 27.2 beta (26B5086k)”, “tvOS 27.2 beta (24K5088l)”, “visionOS 27.2 beta (24N5088l)”, “watchOS 27.2 beta (24S5086l)”; 27.1이 들어간 항목 제목은 없습니다. Apple, Xcode 27.2 Beta Release Notes, 2026년 9월 17일에 문서 JSON 엔드포인트를 통해 가져옴: Overview(iPhone Duo 문장과 macOS Tahoe 26.6 요구 사항), Project Format, New Features(184661114), SDK, Known Issues(187160501). 이 노트의 절은 General, Device Hub, Previews, Previews & Playgrounds, Project Format, SDK, Simulator이며, 어느 절도 ld64, 모듈 이름,
@State,PreviewProvider를 언급하지 않습니다. 같은 날 다시 가져온 Xcode 27 Release Notes에는 이 글에서 인용한 Xcode 27 항목들이 변함없이 실려 있고, 9월 16일에는 없던 항목 하나, 즉 업데이트에서 인용한 Enhanced Security, Known Issues(187057599)가 있습니다. 27.2 베타 노트의 Simulator Known Issue는 141290052입니다. ↩↩↩↩↩↩↩↩ -
Apple, Releases, 2026년 9월 19일에 가져온 RSS 피드, 마지막 빌드 일시 Fri, 18 Sep 2026 14:00:00 PDT: “Xcode 27.1 beta (27A9269)”는 Fri, 18 Sep 2026 10:00:00 PDT, “TestFlight Update”는 Fri, 18 Sep 2026 14:00:00 PDT 날짜. Apple, Xcode 27.1 Beta Release Notes, 2026년 9월 19일에 문서 JSON 엔드포인트로 가져옴: Overview(SDK 목록과 macOS Tahoe 26.6 요구 사항을 인용), Mac Catalyst, Known Issues(185924957, 187046347, 각각 해결 방법 포함), Previews, New Features(182598534), Simulator, Known Issues(187708500, 187708663, 187708767). 노트에 다른 섹션은 없음. 같은 날 가져온 Xcode 릴리스 노트 색인에는 Xcode 27 Release Notes, Xcode 27.1 Beta Release Notes, Xcode 27.2 Beta Release Notes가 나열됨. Apple, App Store Connect 릴리스 노트, 2026년 9월 18일, TestFlight update, 전문 인용. Apple, Xcode 27.2 Beta Release Notes, 2026년 9월 17일과 9월 19일에 가져옴: 두 번의 차이는 Overview뿐으로, 9월 17일의 문장 “The iOS SDK and simulator support for iPhone Duo will be available later this month in an upcoming release of Xcode 27.1.”이 안내문 “Download Xcode 27.1 beta to get the iOS SDK and simulator support for iPhone Duo.”로 바뀌었고, 그 링크는 https://developer.apple.com/download/applications/ 를 가리킴. 9월 19일에 가져온 Xcode 27 Release Notes는 9월 17일과 동일함. Apple, “Get ready with the latest beta releases”, 뉴스, 2026년 9월 16일: “When iPhone Duo becomes available on October 23, it will run iOS 27.1.” Apple, “App Store submissions now open for the latest OS releases”, 뉴스, 2026년 9월 9일, “Starting April 2027”로 시작하는 단락을 인용. Apple, Upcoming Requirements, 2026년 9월 19일에 가져옴, 가장 최신 항목은 “SDK minimum requirements”, “Since April 28, 2026”. Apple, ArrangementView, 2026년 9월 19일에 가져온 문서 JSON, 지원 플랫폼 iOS 27.1과 iPadOS 27.1, 베타 표시. 같은 지원 플랫폼, 즉 베타로 표시된 iOS 27.1과 iPadOS 27.1은 UIArrangementViewController, reservedRegions(kind:options:layoutDirectionBehavior:), reservedRegions(kind:options:), toolbarVerticalBehavior(_:) 페이지에도 똑같이 적혀 있고, 모두 같은 날 가져온 것입니다. ↩↩↩↩↩↩↩↩↩↩
-
Apple, Releases, 2026년 10월 1일에 가져온 RSS 피드: “Xcode 27.2 beta 2 (27B5028f)”는 Mon, 28 Sep 2026 10:00:00 PDT 날짜로 “iOS 27.0.1 (24A446)”, “iPadOS 27.0.1 (24A446)”, “macOS 27.0.1 (26A434)”, “visionOS 27.0.1 (24M372)”와 나란히 있고, 13:00:00 PDT 날짜로 “watchOS 27.0.1 (24R365)”가 있음. 피드의 Xcode 항목은 “Xcode 27.2 beta 2 (27B5028f)”, “Xcode 27.1 beta (27A9269)”, “Xcode 27 (27A266a)”, “Xcode 26.6 (17F113)”. Apple, Xcode 27.2 Beta 2 Release Notes와 Xcode 27 Release Notes, 2026년 10월 1일에 문서 JSON 엔드포인트로 가져옴. Xcode 27 페이지의 본문은 9월 26일에 가져온 것과 일치합니다. ↩↩↩↩
-
Apple, Releases, 2026년 10월 11일에 가져온 RSS 피드, 마지막 빌드 일시 Tue, 06 Oct 2026 10:00:00 PDT: “Xcode 27.1 RC (27A9275)”는 Mon, 05 Oct 2026 10:00:00 PDT 날짜. 피드의 Xcode 항목은 “Xcode 27.1 RC (27A9275)”, “Xcode 27.2 beta 2 (27B5028f)”, “Xcode 27.1 beta (27A9269)”, “Xcode 27 (27A266a)”, “Xcode 26.6 (17F113)”. Apple, App Store Connect release notes, 2026년 10월 11일에 가져옴, 2026년 10월 5일 날짜 항목 “App Store Connect updates” 인용. Apple, Xcode 27.1 RC Release Notes, 2026년 10월 11일에 가져옴, Overview: “Xcode 27.1 RC includes Swift 6.4 and SDKs for iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, and visionOS 27.”(Xcode 27.1 RC에는 Swift 6.4와 iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, visionOS 27용 SDK가 포함된다) ↩↩↩
-
Apple, Releases, 2026년 10월 15일 04:36 UTC(10월 14일 태평양 시간 21:36)에 가져온 RSS 피드: “Xcode 27.2 beta 3 (27B5038j)”는 Wed, 14 Oct 2026 10:00:00 PDT 날짜. “iOS 27.2 beta 4 (24B5110a)”, “iPadOS 27.2 beta 4 (24B5110a)”, “macOS 27.2 beta 4 (26B5112a)”, “visionOS 27.2 beta 4 (24N5114a)”, “watchOS 27.2 beta 4 (24S5112a)”는 Tue, 13 Oct 2026 10:00:00 PDT 날짜. 피드의 Xcode 항목은 “Xcode 27.2 beta 3 (27B5038j)”, “Xcode 27.1 RC (27A9275)”, “Xcode 27.1 beta (27A9269)”, “Xcode 27 (27A266a)”, “Xcode 26.6 (17F113)”. Apple, Xcode 27.2 Beta 3 Release Notes, 2026년 10월 15일 04:38 UTC(10월 14일 태평양 시간 21:38)에 문서 JSON 엔드포인트로 가져와, HomeView 글을 위해 2026년 10월 14일 05:09 UTC(10월 13일 태평양 시간 22:09)에 저장한 베타 2 사본과 비교: 안내문 없음. Interface Builder, Resolved Issues(186354589, 187747632). Simulator Runtimes, Known Issues(188407822). Simulator, Resolved Issues in Xcode 27.2 Beta 2(141290052, 187950199). Apple, Xcode 27 Release Notes, 2026년 10월 15일 05:03 UTC(10월 14일 태평양 시간 22:03)에 문서 JSON 엔드포인트로 가져옴: 내용은 2026년 10월 11일에 저장한 사본과 똑같고, 141290052는 여전히 Simulator, Known Issues 아래에 있습니다. Apple, App Store Connect release notes, 2026년 10월 15일 05:04 UTC(10월 14일 태평양 시간 22:04)에 가져옴, 2026년 10월 14일 날짜 항목 “TestFlight update”: “You can now submit apps built with Xcode 27.2 beta 3 using the SDK for iOS 27.2 beta 4, iPadOS 27.2 beta 4, macOS 27.2 beta 4, tvOS 27.2 beta 3, visionOS 27.2 beta 4, and watchOS 27.2 beta 4 for internal and external testing.”(Xcode 27.2 베타 3으로 iOS 27.2 베타 4, iPadOS 27.2 베타 4, macOS 27.2 베타 4, tvOS 27.2 베타 3, visionOS 27.2 베타 4, watchOS 27.2 베타 4 SDK를 사용해 빌드한 앱을 내부 및 외부 테스트용으로 제출할 수 있다) ↩↩↩↩
-
Apple, Releases, 2026년 10월 15일 태평양 시간 17:16(10월 16일 00:16 UTC)에 가져온 RSS 피드: “Xcode 27.1 (27A9275)”는 Thu, 15 Oct 2026 13:00:00 PDT 날짜이며, 10월 11일에 가져온 피드에 있던 10월 5일 RC 항목과 빌드 번호가 같습니다. 그 RC 항목은 이제 피드에 없습니다. Apple, Xcode 27.1 Release Notes, 2026년 10월 15일 태평양 시간 17:21에 문서 JSON 엔드포인트로 가져옴, “Xcode 27.1 RC Release Notes”에서 제목이 바뀜. Overview: “Xcode 27.1 includes Swift 6.4 and SDKs for iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, and visionOS 27.”(Xcode 27.1에는 Swift 6.4와 iOS 27.1, iPadOS 27, tvOS 27, watchOS 27, macOS 27, visionOS 27용 SDK가 포함된다). iPhone Duo Simulator Known Issues 두 건, 187708663과 187708767은 그대로. Apple, App Store Connect release notes, 2026년 10월 15일 태평양 시간 17:20에 가져옴, 2026년 10월 15일 날짜 항목 “App Store Connect updates”: “You can now upload apps built with Xcode 27.1 using the SDK for iOS 27.1, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, and watchOS 27.0 for the App Store, and for internal and external testing through TestFlight.”(Xcode 27.1로 iOS 27.1, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, watchOS 27.0 SDK를 사용해 빌드한 앱을 App Store용으로, 그리고 TestFlight를 통한 내부 및 외부 테스트용으로 업로드할 수 있다)와 “Submit your iPhone Duo optimized apps and games in App Store Connect today. Starting April 2027, any apps or games submitted will need to include screenshots for iPhone Duo.”(iPhone Duo에 최적화한 앱과 게임을 오늘 App Store Connect에서 제출하라. 2027년 4월부터 제출하는 모든 앱과 게임에는 iPhone Duo용 스크린샷이 포함되어야 한다). 같은 시간에 가져온 Apple 개발자 뉴스 피드에는 이 릴리스에 관한 항목이 없습니다. Apple, Xcode 27 Release Notes, 2026년 10월 15일 태평양 시간 17:26에 문서 JSON 엔드포인트로 가져옴: 본문은 2026년 10월 11일에 저장한 사본과 똑같습니다. 17:16에 가져온 피드의 Xcode 항목은 “Xcode 27.1 (27A9275)”, “Xcode 27.2 beta 3 (27B5038j)”, “Xcode 27.1 beta (27A9269)”, “Xcode 27 (27A266a)”, “Xcode 26.6 (17F113)”입니다. ↩↩↩↩
-
Apple, Releases, 2026년 10월 26일 태평양 시간 16:12에 가져온 RSS 피드: “iOS 27.2 (24B91020)”, “iOS 27.2 (24B119)”, “iPadOS 27.2 (24B119)”, “macOS 27.2 (26B123)”, “tvOS 27.2 (24K122)”, “visionOS 27.2 (24N120)”, “watchOS 27.2 (24S118)”는 Mon, 26 Oct 2026 10:00:00 PDT 날짜이고, “TestFlight 4.4.1”은 Thu, 22 Oct 2026 14:00:00 PDT 날짜이며, “Xcode 27.2 RC (27B48)”는 Mon, 19 Oct 2026 10:00:00 PDT 날짜로 가장 최근의 Xcode 항목입니다. iOS 27.1 릴리스를 가리키는 항목 제목은 없습니다. Apple, Xcode 27.2 RC Release Notes, 2026년 10월 26일에 문서 JSON 엔드포인트로 가져옴, Last-Modified는 Mon, 19 Oct 2026 04:56:10 GMT. Overview 인용. Device Hub, New Features(189236369), Resolved Issues(188313956, 188326513), Known Issues(189261485와 FB25077755, 우회 방법이 있는 189465196) 인용. Instruments(168530263), Memory Gauge(187611943), XCTest UI Automation(188422137). Mac Catalyst, Known Issues(185924957). SDK, Known Issues(187160501) 인용. Simulator, Resolved Issues(190126101, 190155353). Apple, App Store Connect release notes, 2026년 10월 26일에 가져옴: 2026년 10월 20일 항목 전문 인용. 2026년 10월 22일 항목 “TestFlight update”: “TestFlight 4.4.1 is now available on the App Store for iPhone and iPad. This update includes: Support for iPhone Duo. Stability improvements and bug fixes.” Apple Support, “Apple security releases”, 2026년 10월 26일에 가져옴: “iOS 27.1,” “This update has no published CVE entries.,” “iPhone Duo,” “23 Oct 2026.” 행. Apple Newsroom, “iPhone Duo arrives at Apple Store locations worldwide”, 2026년 10월 23일: “On Friday, October 23, the highly anticipated iPhone Duo made its debut at Apple Store locations worldwide.” 10월 26일에 가져온 iOS & iPadOS Release Notes 색인에는 “iOS & iPadOS 27 Release Notes”와 “iOS & iPadOS 27.2 Release Notes”만 있습니다. 저자의 Mac, 2026년 10월 26일, Xcode 27.1(27A9275): iPhoneOS와 iPhoneSimulator 27.1 SDK의
SystemVersion.plist는ProductBuildVersion24A94232를 보고합니다. ↩