피드로 돌아가기
Xcode 26.4 -- Here Is What Actually Matters for Devs
Dev.toDev.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

ArshTechPro2026년 3월 26일

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 기능은 성능 최적화 워크플로우에서 수동 분석 비용을 크게 절감한다.

원문 읽기