반응형
Xcode14 ReleaseNote
Xcode14 Release Note Apple Clang Compiler를 보면 C++ 컴파일러의 기본 옵션이 변경(93456065)된 걸 알 수 있다.
더보기
Apple Clang Compiler
New Features
- New C++ projects you create in Xcode use C++20 language dialect by default. (93456065)
- Several C++20 and C++2b papers have been implemented:
- C++20 papers that have been implemented:
- P0692R1 - Access checking on specializations
- P0388R4 - Permit conversions to arrays of unknown bound
- C++2b papers that have been implemented:
- P1938R3 - if consteval
- P1401R5 - Narrowing contextual conversions to bool
- P1949R7 - C++ identifier syntax using Unicode Standard Annex 31
- P2360R0 - Extend init statement to allow alias declaration (93898598)
- C++20 papers that have been implemented:
Resolved Issues
- Fixed: Xcode doesn’t provide semantic highlighting and jump-to-definition support for C++20 concept declarations and the requires clauses in templates. (93046529)
Deprecations
- Starting with Xcode 14, bitcode is no longer required for watchOS and tvOS applications, and the App Store no longer accepts bitcode submissions from Xcode 14.
-
Xcode no longer builds bitcode by default and generates a warning message if a project explicitly enables bitcode: “Building with bitcode is deprecated. Please update your project and/or target settings to disable bitcode.” The capability to build with bitcode will be removed in a future Xcode release. IPAs that contain bitcode will have the bitcode stripped before being submitted to the App Store. Debug symbols can only be downloaded from App Store Connect / TestFlight for existing bitcode submissions and are no longer available for submissions made with Xcode 14. (86118779)
그 외 주요 변경 사항을 같이 보자면,
- Xcode14 부터 bitcode 옵션이 deprecated 되었고, 이를 이용해 빌드한 경우 앱스토어에서 승인하지 않는다고 한다.(86118779)
- C++ 20부터 지원하는 템플릿 내 concept 선언과 require 절로 점프하지 못하던 이슈를 해결했다고 한다.(93046529)
- 컴파일 단의 에러의 위치나 원인을 좀 더 명확히 표시 할 수 있게 되었다는 뜻.
What can we do with GUN++20
Xcode14 이상에서 신규 프로젝트를 생성하면 아래 그림과 같이 build settings에서 `C Language Dialect` 와 `C++ Launguage Dialect` 의 값이 각각 `gun11`과 `gun++20`으로 설정된 걸 확인 할 수 있다.
Xcode14 Release Note Apple Clang Compiler를 보면 C++ 컴파일러의 기본 옵션이 변경(93456065)된 걸 알 수 있다.
- C++20 papers that have been implemented:
위 변경 사항에 대한 자세한 내용은 여기(docs for C++20)를 참고.
아마 SIGABRT 나 SIGSEGV 같은 crash의 원인이나 위치가 조금 더 정확해질 수 있을 것 같다(아닐수도....). 가끔 '여기서 왜 OutOfIndex 가 나지?' 하고 이해가 안돼는 크래시도 조금 줄어들지도 모르겠다.
C++ compiler의 가본값 변경과 함께 C compiler의 기본값도 gnu11 로 변경되었다. gnu11 current support library
Upgrade to GNU++20
Xcode14가 나오기 전에 생성한 프로젝트라면, GNU 버전이 각각 `gun11`과 `gun++20`미만일 것이다. Xcode14부터 바뀐 기본 값이 변경 되었으니, 변경된 값으로 빌드 세팅을 바꾸고 테스트해봐도 좋을 것 같다.
반응형