RAD 스튜디오 11.0 알렉산드리아 "새 기능 한글 요약본: 언어와 컴파일러" 입니다.
11.0 알렉산드리아의 모든 새 기능, 강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New (영문 보기, 한글번역 보기) 와 관련 페이지를 보기 바랍니다.
11.0 알렉산드리아 - 언어와 컴파일러 관련 주요 업데이트 요약
델파이: 이진 리터럴 및 숫자 구분기호
델파이 언어는 10진수 및 16진수 외에 이진 리터럴에 대한 지원이 추가되었다.
바이너리 리터럴은 % 기호를 접두사로 사용한다 (다른 파스칼 컴파일러에서 사용하는 구문과 동일하다 )
const Four = %100; var x: Integer; begin x := %10010001;
또한 숫자가 많은 리터럴 값의 가독성을 향상시킬 수 있도록 숫자 구분 기호(밑줄, “_”)을 사용할 수 있다. 코드 구문 분석과 컴파일에서 해당 기호는 무시된다. (C# 7.0에서 도입된 기능과 유사)
const
AMillion = 1_000_000; // _로 구분되므로 "1백만" 임을 쉽게 알 수 있다.
ANumber = %10010101_10011001_11010001_10010011"; // 바이너리 리터럴에서도 _를 사용할 수 있다.
이 숫자 구분 기호는 이진 리터럴에서도 사용할 수 있다. (예 "%10010101_10011001_11010001_10010011")
AVX 명령어에 대한 인라인 어셈블러 지원(AVX-512)
AVX2(ymm) 및 AVX512(zmm) 등 최신 명령어셋을 위한 asm 코드를 지원한다.
참고: (최신 인텔 CPU와 같은) AVX-512 호환 CPU가 있어야 이 기능을 테스트할 수 있다. 더 자세한 정보: https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX-512
신규 C++ 코드 포맷터
C++에 사용되는 코드 포맷터 기술이 clang 형식으로 완전히 대체되었다. 새 C++ 포맷터 옵션은 Language > C++ > Formatting 에서 설정할 수 있다.
코드 포맷을 수동으로 지정하기는 언제든 할 수 있다. 하지만, 저장하거나 입력할 때 IDE가 자동으로 코드 포맷을 지정하도록 할 수도 있다. 'Auto formatting' 설정에서 format on save, 또는 format on newline로 지정하면 된다.
IDE는 일반적인 C++ 프로젝트 규칙대로, 소스폴더의 .clang-format 파일에 지정된 포맷 설정을 사용한다. .clang-format 파일을 찾을 수 없는 경우 IDE는 (위에 있는) Options 대화창에 있는 Formatting style에 지정된 포맷을 사용한다 (기본 값은 Embarcadero 추첫 포맷이다).
C++ / Delphi 호환성
이제 델파이 타입용 C++-호환 RTTI가 있다. 이제 델파이 타입을 다루는 make_shared를 사용할 수 있으며, C++로 델타이 타입을 사용할 때 도움을 주는 타입 컨버전(전환)이 들어있다.
C++: 델파이 타입 RTTI 호환성
예전에는 델파이 타입에 사용할 수 있는 C++ 타입 정보가 없었다. 즉, delphi-type이 Pascal 코드에서 가져온 타입이거나 C++의 델파이 스타일 클래스인 typeid(delphi-type)의 결과에 액세스하면 AV가 발생합니다. typeid는 단순히 타입에 대한 std::typeinfo를 반환하거나, 또는 해당 인스턴스의 가장 많이 파생된 타입에 대한 다형성 형식인 경우 이를 반환한다.
typeid()는 이제 std::typeinfo를 반환한다. 그리고 델파이 타입 용 C++ 호환 RTTI가 생성된다.
스마트 포인터를 델파이 클래스에서 사용
이제 std::make_unique 와 std::make_shared 모두를 델파이 클래스에서 사용 할 수 있다 (델파이 또는 C++에 정의 되었지만 델파이에 정의된 클래스에서 상속됨).
타입 변환
이제 RTL에는 델파이 타입과 C++(및 델파이) 문자열 간에 타입 변환을 하는 헬퍼 메서드가 포함되었다. 여기에는 TDateTime에서 문자열 타입으로 변환, C++ 문자열에서 델파이 문자열로 쉽게 변환(할당), 델파이 문자열에서 std::string_view 사용이 포함되었다. 이제 to_string()과 from_string() 메소드를 이용해 문자열로 변환하거나 문자열에서 변환한다. (UnicodeString, WideString 및 AnsiString, 코드 페이지로 템플릿 포함).
이 메소드를 제공하는 타입은 다음과 같다.
- Currency
- TDateTime
- Integer(32/64비트, 부호가 있거나/부호가 없는)
- 부동 소수점 타입(Extended)
- Variants
기타
- 이제 Clang 컴파일러는 인터페이스가 IUnknown에서 파생되지 않았을 때 경고를 표시한다.
- 이제 C++ Win64 디버거를 사용하여 프로세스에 연결할 수 있다.
- 프로젝트 일괄 컴파일이 .c 파일을 무시하던 문제가 해결되었다.