피드로 돌아가기
Dev.to
원문 읽기
Apple이 Xcode 26.4를 출시하며 Address Sanitizer와 Thread Sanitizer의 무한 대기 버그를 해결하고 Instruments에 Run Comparison, Top Functions, Power Profiler 코어별 분석 기능을 추가
Xcode 26.4 -- Here Is What Actually Matters for Devs
AI 요약
Context
Xcode 26.3 이하에서 OS 26.4 대상으로 빌드할 때 Address Sanitizer와 Thread Sanitizer가 무한 대기 상태에 빠지면서 CI 파이프라인이 오류 메시지 없이 중단되는 문제가 발생했다. 성능 분석 시 수동으로 중첩된 콜 스택을 탐색하고 여러 프로파일링 세션을 비교하는 과정이 비효율적이었다.
Technical Solution
- Address Sanitizer와 Thread Sanitizer의 무한 대기 버그 수정: Xcode 26.4로 업그레이드 필수
- Instruments에 Run Comparison 기능 추가: View > Detail Area > Compare With에서 여러 프로파일링 세션의 콜 트리를 비교하여 함수별 성능 변화 시각화
- Instruments에 Top Functions 모드 추가: 호출 계층 구조와 관계없이 전체 트레이스에서 가장 비용이 높은 함수를 자동으로 표시
- Power Profiler에 CPU 코어별 분석 기능 추가: Apple Silicon의 효율 코어와 성능 코어 간 워크로드 분산 현황 파악 가능
- xctrace import에 --append-run 옵션 추가: 여러 트레이스 파일을 하나의 문서로 병합
- String Catalog 편집 기능 확대: 복사/붙여넣기 시 기존 키에 번역 적용 또는 새로운 다국어 키 추가 선택, 언어 일괄 제거, 새 언어 추가 시 기존 언어로부터 자동 사전 번역
- C++ 표준 라이브러리 알고리즘 최적화: std::ranges::copy 계열, std::ranges::equal, std::ranges::swap_ranges, std::stable_sort (부동소수점 타입에 기수 정렬 적용)
- Swift Testing과 XCTest 상호운용성을 기본값 비활성화로 변경: SWIFT_TESTING_XCTEST_INTEROP_MODE 환경 변수로 명시적 옵트인 필요
- Swift Testing에 이미지 첨부 기능 추가: CGImage, NSImage, UIImage, CIImage 직접 지원
- 미대기 알림 기대값(unwaited notification expectation)으로 인한 테스트 오염 버그 수정: 관련 없는 테스트에 영향을 주지 않도록 개선
Impact
- std::ranges::copy, copy_n, copy_backward, move, move_backward, rotate: std::vector::iterator에 대해 최대 2000배 성능 향상
- std::ranges::equal: 최대 188배 성능 향상
- std::ranges::swap_ranges: 최대 611배 성능 향상
- std::stable_sort (부동소수점 타입): 최대 10배 성능 향상
- bitset::to_string (조밀한 비트셋): 최대 16배 성능 향상
Key Takeaway
OS 26.4 환경에서의 Sanitizer 회귀 버그는 CI/CD 파이프라인의 암묵적 중단을 초래하므로 즉시 Xcode 26.4 업그레이드가 필수이며, Instruments의 Run Comparison과 Top Functions 기능은 성능 최적화 워크플로우에서 수동 분석 비용을 크게 절감한다.