Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

[버전정보] [11.1] 알렉산드리아 - 릴리스 1


Recommended Posts

<< 위로 이동 (최신 버전 포함 모든 버전)

"RAD 스튜디오 11 알렉산드리아 - 릴리스 1"을 정리한 Docwiki (원문 보기)를 번역한 글입니다. 

업데이트된 RAD 스튜디오 11.1 알렉산드리아 릴리스 출시 (2022년 3월 15일)

주의:
11 알렉산드리아에 새로 포함된 기능을 모두 보려면,
여기를 클릭.

RAD 스튜디오 11 알렉산드리아 - 릴리스 1 (11.1이라고도 부름)을 이제 설치할 수 있다. RAD 11.1은 11의 기능을 바탕으로 하여 제품 전반에 걸쳐 기존 기능을 강화하고 몇가지 새 기능을 추가했다. 업데이트 서브스크립션을 유지 중인 사용자는 누구나 델파이 11, C++빌더 11, RAD 스튜디오 11을 다운로드 받을 수 있다.

RAD 스튜디오 11.1은 품질 향상에 주력했다. 집중한 주요 품질 영역은 다음과 같다.

  • IDE
  • 원격 데스크탑
  • 컴파일러: 델파이, C++
  • C++ 툴체인
  • 델파이 LSP
  • C++ LSP
  • 델파이 RTL
  • VCL
  • 파이어몽키
  • 데이터
  • 인터넷

 

[11.1] 에서 강화된 점을 제품 영역 별로 보기

11 알렉산드리아 - 릴리스 1 제품 영역 별로 보기


 

1. IDE 향상

1.1 IDE 일반 향상

  • 설치가 완료되면, IDE가 "작업 시작하기"가 작동하면서, IDE를 다시 시작하므로, 첫 실행을 높은 사용 권한이 아닌 일반 사용자 권한으로 진행한다.
  • 이제 프로젝트 구성 설정에서 ‘Enable runtime themes (런타임 테마 활성화)’의 기본값은 "켜짐"이다.
  • dproj/cbproj 파일 안에 있는 ProjectRoot는 항상 일관되게 정렬된다.
  • IDE Wait 대화창에서 사용하는 ToolsAPI 인터페이스의 일부 파라미터 이름이 변경되어서 기능을 보다 잘 반영한다.
  • 이제 ‘New Edit Window (새 에디트 창)’은  복제를 지원하지 않는 화면인 경우 메뉴 항목이 비활성화되어 있다. 웰컴 페이지도 여기에 해당된다. 웰컴 페이지는 중복될 수 없고 다른 창에 끌어다 놓을 수 없기 때문이다.
  • Options > Saving and Desktop (저장 및 데스크탑) 페이지가 둘로 나누어져 새 페이지가 2개 생겼다:
    • Saving and Recovering (자동-복구, 자동-저장 옵션을 지정하는 곳)
    • Desktop and Layout (기존 페이지에 있던 나머지 옵션을 지정하는 곳)
  • Options 대화창 안에 있는 메시지 화면에서 에러(Error), 경고(Warning), 힌트(Hint)를 표현하는 색상을 바꿀 수 있다. IDE 테마별로 각각 다른 색상 조합을 지정할 수도 있다 (예: 라이트 테마, 다크 테마, 기타 테마 별로 각각 다른 색상 조합 지정).
    600px-Build_log.png
     
  • IDE에서 사용되는 사소한 대화창들에서도 스타일이 지원된다. 사용자 승인을 요청하는 창, 파일 덮어쓰기를 경고하는 창, 유니코드 프로젝트 이름을 확인하는 창, 유효하지 않은 코드 페이지 사용을 알리는 창 등이 해당된다.
  • 프로젝트 파일 안에 있는 배포 파일이 일관성있는 순서로 정렬되지 않던 이슈를 해소했다. 의미를 훼손하지 않으면서 변경된다.
  • 기본 C++ 콘솔 앱이 향상되었다. 그리고 콘솔 앱 생성은 C++과 델파이 모두에서 File > New (와 Create New) 메뉴에 있는 바로가기이다.  
  • IDE 교정(Fix) 팩 항목 일부가 통합되었다.
    • (편집 툴바 등) IDE 툴바 이슈
    • Options 대화창 페이지 안에 스크롤바가 나타나지 않음
    • 오브젝트 인스펙터 렌더링 결함 
    • 디버깅할 때, IDE와 코드 에디터가 비어 있음
    • FMX 폼 디자이너 텍스트 입력에서 (윈도우 키 등) 특별 키 이슈
    • 프로젝트 뷰의 목록 모드
    • 기타 다양한 예외...
  • New Items (새 항목) 대화창에서 항목 별 해당 플랫폼 표시
    600px-New_items.png
     
  • New Items (새 항목) 대화창을 열고 새 항목을 프로젝트에 추가하려고 할 때, 현재 프로젝트에서 활성화된 플랫폼에 해당하지 않는 항목은 숨김 처리됨
  • New Items (새 항목) 대화창에서 보기 스타일이 다양하게 제공됨. 이제는 목록을 수직으로 보기  뿐만 아니라 카드, 리스트, 아이콘, 작은 아이콘 보기가 제공됨
  • New Items (새 항목) 대화창은 이제 VCL 컨트롤인 TControlList를 사용함. 그 결과 스크롤 기능이 향상됨
  • Compile (컴파일) 대화창에서는 플랫폼과 빌드 구성이 표시됨. 그리고, 우선 순위를 고려하여 에러가 경고와 힌트보다 앞에 표시됨. 
    600px-Compile_dialog.png

 

1.2 IDE High DPI 품질

  • 데이터 모듈 (Data module)은  PixelsPerInch 프로퍼티의 값이 96 (기본값)일 때 해당 값을 저장한다. VCL 폼도 동일하다함.
  • 동적으로 생성된 프레임이 high DPI에서 디자인되는 경우 이제 올바르게 확대/축소된다.

 

1.3 웰컴 페이지

  • 웰컴 페이지에서 이제 배경 이미지를 지원한다. 이미지를 선택하면 웰컴 페이지 영역에 맞게 확대/축소 된다. 가로 세로 비율이 저장되므로 한쪽 축이 웰컴 페이지 크기에 맞으면 다른 축의 일부는 영역을 벗어날 수도 있다.
  • 웰컴 페이지 설정 페이지가 IDE Options 대화창에 새로 추가되었다. 이 페이지에서는 배경(각 테마 별로)을 설정할 수 있고 "프로젝트를 열면 웰컴 페이지 닫기"를 선택할 수 있다. 이것은 "웰컴 페이지 Layout Editor"에서도 설정할 수 있다.
  • 웰컴 페이지 프레임은 이제 투명이 기본값이다. 월페이퍼(wallpaper) 이미지를 지정하면 프레임 뒤에서 배경으로 배경으로 표현된다. 웰컴 페이지 투명도는 ToolsAPI에서 접근할 수 있는 메트릭스(metrics) 중 하나이다.
  • 웰컴 페이지 안에 있는 각 프레임 간의 간격과 웰컴 페이지의 상하 여백이 살짝 조정되었다.   


1.3.1 ToolsAPI 지원!

이제 ToolsAPI를 이용하여, 웰컴 페이지 안에 프레임을 생성할 수 있도록 완전하게 지원한다! 엠바카데로에서 제공하는 프레임들도 동일한 API를 사용한다. 즉 우리가 넣어둔 프레임에서 할 수 있는 것이라면 당신도 할 수 있다.

웰컴 페이지 데모 2개가 엠바카데로 공개 깃허브(Github)에서 제공된다. 간단 사용법과 고급 사용법을 볼 수 있다.

가장 간단한 형태를 보자면, 당신은 TFrame의 자손을 하나 생성하고 캡션(Caption)을 넣어서 표현할 수 있다. 생성한 프레임에는 당신이 원하는 무엇이든 넣을 수 있다. 원한다면, 더 복잡한 기능들도 활용할 수 있다.

  • 프레임 캡션(Caption)에는 커스텀 UI 크롬 (두번째 프레임을 통해 구현된다)이 포함될 수 있다. 우리가 제공한 Open Recent 프레임 (버튼 구현), Create New 프레임 (델파이와 C++ 간 토글 기능 구현) 에 있는 것들을 당신도 구현할 수 있다.
  • 우리가 제공한 프레임은 MVC 패턴을 사용하며, 데이터는 백그라운드 쓰레드에서 적재된다. 당신은 우리가 프레임을 만들 때 사용한 것과 동일한 프레임과 리스트뷰 등을 사용하여 우리가 구현을 것을 그대로 활용할 수도 있다. 당신은 우리가 제공한 동작과 룩앤필을 동일하게 얻을 수 있기 때문에, 우리의 설정을 흉내내지 않아도 되고 향후 우리가 기본 레이아웃과 크기 등을 변경을 신경쓰지 않을 수도 있다.

 

1.4 겟잇(GetIt) 대화창 향상

  • 겟잇 대화 상자가 재설계 되었다. 눈에 보이는 UI는 비슷하게 유지되었지만, 새롭게 ControlList 컴포넌트를 사용하여 패키지 목록을 담았다. 그 결과 눈에 띄는 성능 향상 효과가 생겼다.
  • RAD 스튜디오에서는 이제 겟잇(GetIt) 안에 들어가는 페키지의 아이콘들을 캐싱(cache)하기 때문에 대화창을 다시 열 때 걸리는 시간이 짧아졌다.
  • 겟잇 안에 패치 무시하기 옵션이 새로 추가되었다. 그 결과 패치 설치를 건너뛸 수 있다. 또한 보류 중인 패치 알림을 중지할 수 있다. 

 

2. 컴파일러와 툴체인 향상

2.1 델파이와 C++ 공통

2.1.1 ASLR, DEP/NX, TSAWARE

델파이와 C++ 모두에서,  윈도우 링커(Linker)들이 플랫폼 보안 구성을 더 잘 지원한다.

델파이에서는:

  • 이 기능은 이미 Compiler/linker 플래그 형태로 제공되고 있었다.
    • {$DYNAMICBASE} ASLR 용 플래그
    • {$SetPEOptFlags $40} DEP/NX 용 플래그, 또는 같은 기능인 ‑‑peflags 옵션

C++에서는:

  • -GE 플래그 사용: 이 플래그들을 켜거나 끄기 위한 링커(linker) 옵션:
 **-GE:option|0xNNNN[=on|off] Set DLL characteristics flags
     ALLOWBIND | ALLOWISOLATION | DYNAMICBASE | HIGHENTROPYVA
     NXCOMPAT | TSAWARE
HIGHENTROPYVA 는 ASLR; NXCOMPAT 는 DEP/NX; TSAWARE 는 터미널 서버용이다.

델파이와 C++ 모두에서:

  • 이제 이 설정의 기본값은 "켜짐"이다.
  • 우리는 보안 구성이 활성화된 (패키지 BPL 파일 등과 같은) 재배포가 허용되는 바이너리를 구축(Build)한다.

 

2.2 델파이 디버거: macOS ARM용과 Android용

macOS 애플리케이션을 애플 ARM 장비에서 실행할 때 사용되는 새 디버거가 생겼다. 이 디버거는 앱을 인텔 장비에서 실행하는 경우에는 사용되지 않는다.

새 디버거는 LLDB 최근 빌드이며, 델파이 구문의 하위 집합을 이해하는 델파이 파서가 핵심 기술이다. (예를 들어, 당신이 새 클래스를 정의할 수 없어도 이 디버거는 델파이 표현을 이해할 수 있다. 이 기술은 당신이 사용할 필요가 있는 모든 디버거 표현을 델파이로 충분히 이해할 수 있어야 한다.) 이 구문은 진정으로 델파이다워야 한다. 대소문자를 가리지 않고 델파이 구문 안의 복잡한 표현을 평가할 수 있어야 한다.

우리는 이 디버거를 안드로이드 64-bit 용에도 사용할 수 있도록 했다. 이 디버거는 ‘Disconnected(연결 끊김)’ 에러가 발생하거나 중단될 가능성이 훨씬 적다.

 

2.3 C++ 컴파일러와 툴체인

  • UnicodeString의 기본 생성자(constructor)가 더이상 인라인(inline) 되지 않는다. 따라서 개발자가 문자열(string)을 반환하는 함수를 호출하고 디버깅할 때 해당 생성자 안으로 들어가고 싶지 않다면, 이 변경은 도움이 된다.
  • AnsiStringT는 System:: namespace 접두사를 가진다.
  • 이제 많은 내장 헤더(xmmintrin.h 등)를 사용할 수 있다.
  • 이번 릴리스에는 하위 호환성을 깨는 C++ RTL 변경이 있다. 따라서 C++ 라이브러리는 11.1에서 다시 빌드되어야 한다 (예: 11.0에서 빌드된 오브젝트 파일 또는 .lib-s를 링크하지 말라). 이 변경은 윈64용 핸들을 올바르게 다루기와 관련이 있다. 일부 내부 RTL 구조는 과거에 확장되지 않아서 핸들 잘림 현상이 발생될 수 있었다; 이제는 충분히 확장되었다.
  • 이제 더 많은 내장 (예, SSE-AVX)이 RTL과 함께 제공된다.
  • System::DynamicArray에는 begin()과 같은 반복(iteration)을 위한 일부 STL이 포함되었다.
  • 델파이의 헬퍼 클래스 안에 들어있던 몇가지 문자열 함수들을 이제 C++에서 사용할 수 있다.
  • 예전 IDE에서는 (제공되는 상황이라면)클래식 디버그 라이브러리를 Clang 릴리스 바이너리보다 먼저 링커에서 찾을 수 있다는 링킹 경로 이슈가 있었기 때문에, 만약 당신이 당신의 컴포넌트 또는 라이브러리를 디버그 빌드로 제공하고 두 컴파일러를 모두 지원했었다면 당신의 고객이 잘못된 컴파일러 버전을 링크하게 되는 결과를 초래할 수 있었다. 이제는 해결되었다.
  • 디버거 (특히 윈64용에서)에 있던 많은 컴파일러 버그와 디버그 정보가 개선되었다; 릴리스 모드에서 TDS 파일을 사용; 로케일(locale)과 기타 많은 RTL 및 STL 영역을 조정; 라이브러리 임포트가 많이 개선; 생성된OMF 라이브러리에 대한 coff2omf 수정, 등등


3. LSP 향상 (델파이와 C++)

3.1 델파이 LSP

  • DelphiLSP는 품질과 속도에 주력했다. 그 결과 11.1은 성능이 크게 향상되었다.
  • 새롭게 더 향상된 성능은 모든 프로젝트 유형(패키지 프로젝트 포함)에 적용된다는 점이 핵심적인 변화이다.
  • 예외 정보(Exception info)가 헬프 인사이트 안에 다시 표시된다. 
  • 이제 배열 및 세트에 대해서 헬프 인사이트 안에 줄 번호 정보를 사용할 수 있다.
  • 비활성화된 macro/ifdef 안에서 Ctrl-Shift-아래 방향키를 누르면 선언된 다음 메서드의 구현부로 이동한다.
  • 별칭이 지정된 제네릭 타입에서 Ctrl-클릭 이동을 할 수 있다. 예를 들어, 만약 IntArray가 TArray<Integer> 타입이라면, IntArray를 Ctrl-클릭하면 System.pas 유닛 안에 있는 TArray<>가 있는 곳으로 이동하는 것이 아니라, TArray<Integer>가 있는 곳으로 이동한다.
  • 유닛 안에 지시자(Directive)가 포함되었을 때 ctrl-shift-위 방향키/아래 방향키 이동이 올바로 작동하지 않던 이슈가 해소되었다.
  • 다른 드라이브에 있는 파일을 프로젝트에 넣어서 사용하는 프로젝트에서 에러 인사이트(Error Insight)가 작동하지 않던 문제가 해소되었다.
  • 일반 프로젝트가 이제 훨씬 더 빠르게 로딩된다. 프로젝트를 로드할 때 파싱을 훨씬 더 적게 하는 등 관련된 기술을 크게 변경했다. 그리고 DelphiLSP는 프로젝트 로딩을 끝내고 훨씬 더 빠르게 요청에 반응한다.
  • 이제 에러 인사이트 결과가 훨씬 더 빠르게 업데이트 된다. 5배에서 30배까지 속도 향상을 기대할 수 있다. 가장 현격한 향상을 볼 수 있는 경우는 (다른 유닛을 많이 사용하는) 의존성이 많은 유닛들이 있는 상황이다.

기타 향상된 점:

  • 매크로 (정의) 다루기가 개선되어서 IFDEF가 있을 때 메소드의 구현부와 선언부를 오가는 동작이 더 향상되었고 클래스 선언 부의 코드 완성도 더 잘 동작한다.  
  • 인클루드된 파일 안에 선언된 매크로 (정의)가 있는 경우에도 찾을 수 있다. 위 향상에 영향을 주었다.
  • 프로퍼티를 선언할 때, 코드 완성(Code Completion)에서 겟터(Getter)와 셋터(Setter)를 제안한다.
  • 코드 완성에서 Set type을 보여준다.
  • 클래스 선언부 코드 안에 타입 파라미터가 나타난다. 제네릭 선언 안에 있는 제네릭 타입 (예: T)도 해당된다.
  • 제네릭 타입의 인스턴스를 만들려고 할 때 파라미터 툴팁/헬프가 표시된다.
  • 레코드 선언부 안에서 코드 완성을 할 때, AfterConstruction와 같이 TObject-고유한 완성이 나타났었다. 이제는 해결되었다. 

 

3.2 C++과 cquery

600px-Cpp_options.png

LSP Behavior 탭이 새로 생겼다. 이제 cquery LSP 서버가 파일을 인덱싱하는 방식을 통제하는 2가지 옵션이 제공된다. 즉, 코드 완성, 이동 등을 수행할 때 사용하는 정보를 어떻게 저장하는가를 지정하는 옵션이다. 여기에는 Restart server each time a project 옵션 (기본 설정에서 미리 선택되어 있음)과 Index only files that are opened in the editor 옵션이 있다.

주의: 인덱싱 작업은 부하가 CPU에 집중된다. 대체로 인덱싱이 완료될 때가지 코드 인사이트를 사용할 수 없다. LSP 서버를 재시작하기, 예를 들어 플랫폼 바꾸기 등은 저장된 인덱스를 모두 지운다.

기타 향상된 점:

  • 코드 완성에 나타나는 목록은 cquery가 반환하는 순서대로 정렬된다. 그 순서는 범위(scope) 순서이다. 순서를 바꾸고 싶으면 (기본 설정에서 꺼져있는) Alpha Sort(알파벳 정렬)을 켠다.
  • 기본 설정으로 모든 C++ 프로젝트의 Project Options에서 인덱싱이 켜져 있어야 한다.
  • 프로젝트 안에 직접 들어있지 않은 헤더 파일 (예: cpp/header 유닛 짝이 아닌 부분) 에서도 코드 완성을 사용할 수 있다. 
  • 프로젝트 옵션(Project Options)이나 활성 플랫폼을 변경하면 새 프로젝트 설정에 맞게 LSP 서버가 다시 시작된다.
  • LSP 서버는 파일이 언제 저장되었는 지를 알고 올바르게 업데이트 한다. 이점은 새 파일인 경우 특히 중요하다. 왜냐하면, 이 버전의 경우, 파일이 디스크에 존재하기 않으면 코드 인사이트가 작동하지 않기 때문이다. 

기타 C++ 기능:

  • IDE는 LSP 서버가 준비될 때까지 올바르게 기다린다.
  • 프로젝트의 메인 소스 파일에서 코드 완성을 사용할 수 있다.

 

3.2.1 Performance 향상

  • 코드 완성이 나타나는 시간은 프로젝트의 규모와 관계없이 2초 이내이다. VCL 프로젝트에서 글로벌 범위에서 코드 완성이 작동하면, 80,000개가 넘는 항목이 반환된다는 점에 주의하라.

 

4. 라이브러리 향상

FMX와 VCL로 구축된 프로젝트들 사이에 코드 공유를 돕기 위해, 프레임워크 별 사전 정의 심볼을 추가했다.

  • FRAMEWORK_VCL - 이 사전 정의 변수가 True로 지정되면, 이 해당 프로젝트는 VCL 프레임워크를 사용한다.
  • FRAMEWORK_FMX - 이 사전 정의 변수가 True로 지정되면, 이 해당 프로젝트는 파이어몽키 (FMX) 프레임워크를 사용한다.

 

4.1 델파이 RTL

4.1.1 최적화 작업

  • 델파이 RTL 측면에서 우리는 성능 최적화와 관련된 작업을 했다.
  • 또한 _CopyArray, _IntToStr64, _IntToStr32, InitInstance, InvokeRecordInitializer, _FinalizeRecord, _UStrAsg (including purepascal version), _LStrAsg, _LStrLAsg, AnsiLowerCase / AnsiUpperCase, TStringHelper.IndexOf가 향상되었다.

 

4.1.2 새 TURLStream 클래스

  • 새 스트림 클래스인 TURLStream가 새로 생겼으며, 일반 기반 클래스인 TAsyncStream은 비동기 스트림을 위한 새 기반 클래스이다. 이것은 TMemoryStream으로부터 상속받는다. TURLStream은 비동기 스트림 중 하나로서 URL 경로를 지원하며 TAsyncStream으로부터 상속받는다.
  • TAsyncStream.Create는 해당 백그라운드 쓰레드 안에서 APopulate(채우기)를 시작한다. 완료되기 전까지는 TAsyncStream에 대한 모든 TStream 메소드 호출이 차단된다. 활용 방식은,
    • IAsyncResult를 사용하여 TAsyncStream 채우기 완료를 기다리고 확인한다. TAsyncStream은 IAsyncResult를 지원한다.
    • AProvide 익명 메소드를 제공한다. 이것은 채우기가 완료되면 호출된다.
  • TURLStream 생성자(constructor)는 자신의 기반 클래스 생성자를 확장하여 아래와 같이 선언된다.

constructor TURLStream.Create(const AURL: string;

 const AProvide: TAsyncStream.TStreamer;
 ASynchronizeProvide, AFreeOnCompletion: Boolean);

 

  • TURLStream은 기반 클래스인 TAsyncStream의 행위를 상속받지만, 안에서는 URL 스키마에 따라 THttpClient 또는 TFileStream을 사용한다.
  • TAsyncStream에는 다음과 같은 퍼블릭(public) 메소드가 있다: Destroy, AfterConstruction, Read, Write, Seek, SetSize(Int64), SetSize(Longint), SaveToStream.
  • TURLStream에는 다음과 같은 퍼블릭(public) 메소드가 있다: Destroy, RegisterSyncReqExexcutor, UnRegisterSyncReqExecutor.

 

4.1.3 RTL 기타 향상

  • TOSVersion 데이터 구조에서 윈도우 11과 윈도우 서버 2022을 지원한다.
  • TURI.ToString이 포트를 고려한다.
  • TMetaFile은 이제 큰 스트림에서 데이터를 로드할 수 있다.

 

4.1.4 TMemIniFile 및 섹션 중복

  • TIniFile이 변경되어 10.3 이전의 행위와 섹션이 중복되는 경우에 대한 호환성이 더 좋아졌다.

 

4.2 VCL

최근에 추가된 강화된 기능 (예, TTreeView, TRichEdit, TEdgeBrowser, TNumberBox 등)과 관련된 이슈 해소에 주력했다.

 

4.3 파이어몽키(FireMonkey)

4.3.1 안드로이드 SDK 연동 향상

  • advmanager를 위해 android.bat 파일 도구에 대한 의존을 제거했다. 그리고  안드로이드 플랫폼용 IDE SDK 관리자 대화창을 업데이트 했다.
  • DEX 컴파일과 DEX 병합이 C++/델파이 링킹 이후로 지연되어서, 배포 없이 컴파일하는 속도가 더 빨라졌다.
  • 안드로이드 플랫폼 코어를 통합할 수 있도록,  메소드 오버로드로 Java 인터페이스를 구현하도록 델파이 클래스에 대한 지원을 추가했다. 이는 안드로이드 12와 안드로이드 센서 접근 문제를 해소하는 데 도움이 된다. (SensorInfo 데모 교정).
  • Java 인터페이스를 구현하는 델파이 클래스는 이제 Int8, Int16, Int64, Float32, Float64 값을 반환하는 함수를 가질 수 있다.

 

4.3.2 TWebBrowser

  • 윈도우에서 TWebBrowser (WebView 2 지원) 향상, 윈도우의 웹브라우저 엔진을 하나 이상 바꿀 수 있는 기능이 추가되었다. WindowsEngine 프로퍼티의 기본값이 변경되었다.
  • TWebBrowser의 크기 변경과 투명도 이슈가 해소되었다. 또한 모바일에서 로컬 파일 작업 기능이 향상되었다.

 

4.3.3 FMX 기타 품질

  • 윈도우에서 HighDPI-관련 이슈 해소
  • TMessageManager.Unsubscribe 성능 향상
  • TMemo 컨텍스트 메뉴에 Undo(되돌리기) 추가 및 내용 자동 스크롤링 이슈 해소
  • 안드로이드와 iOS에서 이모티콘 색상 향상
  • macOS 플랫폼에서 메탈 GPU 드라이버 지원 향상

 

4.4 데이터

4.4.1 일반 사항

  • 필드 링크 디자이너(Field Link Designer)와 새 필드 대화창(New Field Dialog)을 더 크고 더 사용하기 쉽게 만들었다.
  • Firebird 4의 긴 필드 이름 (최대 63자) 지원하기 위해 데이터베이스 RTL 안에 있던 필드 이름 31-글자 제한을 없앴다.

 

4.4.2 FireDAC(파이어닥)

  • FireDAC용 스트럭처 뷰를 구현 했다. 또한 일부 FireDAC 창들이 High DPI를 더 잘 지원하게 되었다.
  • 데이터베이스 지원 추가: MariaDB 10.6 서버 (10.6 클라이언트 사용)
  • 데이터베이스 지원 추가: SQLite SEE, C++빌더에서 FireDAC 정적 바인딩(static binding)을 할 때, SQLite OBJ들을 빌드할 수 있도록 명령줄 배치(Batch)를 제공한다. readme 파일인 sqlite_see.txt에 절차가 설명되어있다 (RAD 스튜디오 11.0에서는 이미 겟잇을 통해 이것을 받아서 사용할 수 있었다).
  • FireDAC의 Firebird 4 드라이버를 향상했다. 추가된 데이터 타입을 지원한다:
    • INT128
    • NUMERIC 정밀도 19..38
    • TIME WITH TIME ZONE, TIMESTAMP WITH TIME ZONE (제한있음)
    • DECFLOAT(16/34)
    • 네이티브 구문 시간제한
  • FireDAC에 FireBird 4 페이지크기 32768 지원이 추가되었다.

 

4.5 인터넷 (Internet)

4.5.1 안드로이드에서 작동하는 웹브로커 (WebBroker)

  • 웹브로커 서버 애플리케이션을 이제 안드로이드 장비에도 배포할 수 있다. 또한 (안드로이드 OS를 실행하는 라즈베리 파이와 같은) 개발자 보드에도 배포할 수 있다. 안드로이드 32-비트와 64-비트 모두 해당된다.

 

4.5.2 데이터스냅 (DataSnap)

  • Web.Win.ISAPIThreadPool을 확장하여 쓰레드를 64개 이상 허용할 수 있게 되었다. NumberOfThreads  변수 타입이 Cardinal로 변경되었다. ShutdownTimeout 변수 (쓰레드 풀에서 모든 작업 쓰레드를 끝내기 위해 기다릴 시간 제한을 밀리초 단위로 지정하는 곳)의 기본값은 2분이다.

 

4.5.3 RAD 서버

  • 데이터베이스 구조 일부가 향상되었고, 새 엔드포인트인 REST SysAdmin가 제공된다.
    • GET /sysadmin/log - LOG 테이블 내용에 대한 정보를 반환한다.
    • POST /sysadmin/log?minTime=<ISO8601 date> - 지정된 날짜/시간보다 오래된 레코드를 LOG 테이블에서 모두 삭제한다.
    • GET /sysadmin/backup?backupFile=<file path> - emsserver.ib 데이터베이스 백업 파일을 만든다. 백업 파일은 인터베이스 서버 안에서 사용할 수 있다.
    • POST /sysadmin/backup?backupFile=<file path> - 지정한 백업 파일로부터 emsserver.ib 데이터베이스를 복구한다.
    • GET /sysadmin/validate - emsserver.ib 데이터베이스 평가를 수행하고, 데이터베이스의 상태를 반환한다.
  • RAD 서버 사용자가 동시에 세션 한개 이상에서 로그인할 수 있도록 허용한다.
  • RS라이트(RSLite)용 새 배포 기능
    • EMS.INI의 새 옵션으로, Data 섹션 안에 ClientLib 엔트리를 사용하여, 특정 인터베이스 클라이언트 라이브러리 (임베이드 DB 또는 일반 DB 중 하나)를 고를 수 있도록 했다.
    • 이제 RS라이트용 즉시 배포 기능이 있다.

 

4.5.4 기타

  • REST 디버거에서 클라이언트측 인증서를 선택할 수 있는 옵션이 추가되었다.
  • REST 디버거가 이제 DPI-인식 창이 되었다.
  • TCustomRESTRequest 클래스에 새 BodyCodePage 프로퍼티가 생겼다. 이 프로퍼티는 요청 바디의 코드 페이지 (Request body code page)를 명시한다. 특별한 값들이 몇개 있다.
    • -1 (기본값) - 플랫폼의 기본 인코딩을 사용
    • 0 - 현재 활성화된 코드 페이지 사용
    • 65001 - UTF8 사용 
  • AmazonAPI에서 지역(Region) 변경을 지원한다.

 

5. 기타 참고 (See Also)


View full RAD 스튜디오 버전별 신기능

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

 공유하기

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.