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

Recommended Posts

에 포스트됨

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

RAD Studio (RAD 스튜디오) 13 Florence(플로렌스)에서 새로 도입되고 향상된 것들입니다.
13.0 Florence의 모든 새 기능,  강화된 기능, 버그 픽스 등에 대해서는 Docwiki의 What's New (영문 보기) 와 관련 페이지를 보기 바랍니다.

목차


 

1    설치 및 GetIt 패키지 관리자 향상

여기서는 설치 프로그램(Installer)와 GetIt Package Manager(겟잇 패키지 매니저) 향상들을 자세히 안내한다.
 

1.1    설치 절차 업데이트

RAD Studio Florence 13.0(RAD 스튜디오 플로렌스 13.0)부터는, 설치 프로그램이 Windows SDK를 자동으로 설치하지 않는다. 대신, 컴퓨터을 점검해, SDK 현재 버전이 설치되어 있는지 확인한다. 만약 설치되어 있지 않으면, 설치 진행 도중에, 팝업을 표시해 설치 링크를 직접 설치하도록 안내한다. Windows SDK를 다운로드하고 설치하는 것은 RAD Studio를 사용하기 위한 필수 사전 조건이다. 따라서, RAD Studio 13.0을 설치하기 전에 미리 설치하기를 권한다. 자세한 내용은 설치 노트(Installation Notes)를 참고.

Windows SDK를 설치할 때, 다음 옵션을 활성화하는 것이 좋다.

  • 데스크톱 C++ x86 앱용 Windows SDK
  • 데스크톱 C++ amd64 앱용 Windows SDK

또한 다음 사항들이 자동으로 활성화된다.

  • 데스크톱 앱용 Windows SDK 서명 도구
  • UWP Managed Apps (UWP 관리 앱)용 Windows SDK
  • UWP C++ 앱용 Windows SDK.

이 릴리스에서는  "모델링" 기능을 설치가 RAD Studio IDE(32비트 및 64-비트 버전 모두)에서 제거되었다. 따라서 Feature Manager(기능 관리자) 안에 있는 추가 설치 옵션에서도 해당 기능이 제거되었다 . 이는 Delphi(델파이) 형식 표현(formatting)에도 영향을 미친다.
 

1.2    GetIt 패키지 관리자의 패키지 버전 관리

RAD Studio Florence 13.0부터, 단일 GetIt 패키지가 여러 버전으로 제공될 수 있다. 그리고 여러분이 원한다면 최신 버전 대신 특정 버전 설치를 선택할 수 있다. 하나의 패키지에 여러 버전이 있는 경우, Install(설치) 버튼의 드롭다운 메뉴를 펼치면 해당 버전들을 확인할 수 있다.

300px-Version_install_getit.png

이제 프로젝트 구성의 패키지 종속성은 패키지의 특정 버전을 참조할 수 있다. 그리고 몇 가지 필터링 규칙이 허용된다.

또한, GetIt UI에는 범용 명령 버튼 하나가 제공된다. 이 버튼은 주요 작업을 수행할 뿐만 아니라 기타 여러 가지 기능을 수행할 수 있다. 즉, 드롭 다운 메뉴를 통해 추가 기능(제거 또는 업데이트)들을 수행할 수 있다. 또한, 설치된 패키지 목록을 내보내는 기능도 추가되었다. 자세한 내용은 GetIt Package Manager Window(겟잇 패키지 매니저 창) 페이지를 참조.
 

1.3    내부 버전 번호 일원화: 37로 통일

이번 릴리스에서, RAD Studio는 모든 내부 버전 번호를 37로 통합했다. RTL, 패키지 등등 아래에 나열된 모든 것들에 반영되었다.

  • 주요 레지스트리 항목:
    HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\37.0
  • 패키지 버전과 RTL 버전.
  • FMX 버전: FMX.Types.FireMonkeyVersion
  • PA Server(PA 서버) 버전.
  • 제품이 기본적으로 설치되는 폴더:
    C:\Program Files (x86)\Embarcadero\Studio\37.0

참고:
이번 릴리스에서는, IDE 설치 폴더와 런타임 패키지의 경우, 버전 번호가 37로 넘어갔다. 즉, 현재 버전에서 많은 숫자를 건너뛰었다. 다만, 기준이 되는 컴파일러 버전은 숫자 하나가 올라갔다.

 

2    64-비트 IDE 향상

RAD Studio 13.0에서는, 처음으로 모든 기능을 갖춘 64-비트 IDE가 들어갔다. 이는 (현재) Windows 64 대상 플랫폼 전용이다. 이 정식 64-비트 IDE는 RAD Studio 버전 12.3에서 처음 도입되었던 64-비트 IDE를 기반으로 기능과 지원을 확장하고 완성한 것이다. 12.3에 있던 "시작 버전" 64-비트 IDE와 달리, 13.0에 들어간 64-비트 IDE는 Delphi와 C++를 지원한다. 그리고, 64-비트 Windows 애플리케이션을 구축하고 디버깅할 수 있다.

주요 업데이트 내용:

  • 코드 템플릿(Ctrl-J) 지원 (Surround 메뉴 등).
  • Type 라이브러리, ActiveX, COM을 지원.
  • C++Builder용 VA 통합이 64-비트 IDE에도 반영됨 .
  • 새 디버거 엔진 구현(C++ 및 Delphi 애플리케이션 디버깅 용)
  • 델파이 디버거 성능이 크게 향상됨.
  • 포인터 주소를 더 델파이-스타일에 가깝도록 변경함.
  • 제거된 기능들: Together(투게더) 기반 기능(Modeling, Audits, Metrics 등)
     

3    IDE 변경 및 강화

이번 릴리스에서는, RAD Studio IDE를 향상하고 현대화했다. 그러기 위해, 광범위하고 구성 가능한 검색 기능을 다양한 IDE 창들 안에 추가했다. 이 기능을 포함한 기타 향상 및 변경 사항들 중 IDE 영역에 대한 자세한 안내는 다음과 같다.
 

3.1    검색 기능 향상

RAD Studio Florence 13.0은 특정 검색 기능을 여러 가지 창들 안에 넣었다. 따라서, 프로젝트, 유닛 등이 방대한 경우 또는 기타 경우에, 훨씬 더 빠르게 접근할 수 있게 되었다. 이 검색 기능은 일원화되었다. 그리고 검색을 지원하는 모든 창 안에 들어갔다. Ctrl+F를 사용하면 바로 검색할 수 있다. Esc키를 누르면 검색 결과가 닫히고 원래 컨트롤로 포커스가 돌아간다.

이 검색 기능이 추가된 창들 그리고 해당되는 설명:

  • Structure View(구조 창) : 증분 검색이 추가됨. 디자인 보기와 소스 코드 보기 상태 모두에서 지원됨. 소스 코드 검색 결과는 구문 강조 표시가 제공됨.
  • Project Manager(프로젝트 매니저) : 증분 검색이 추가됨. 고속 검색. 대규모 프로젝트(20,000개 이상의 파일이 들어 있는 경우)에 최적화됨.
  • Message Pane(메시지 창)과 Events Log(이벤트 로그) : 증분 검색 기능이 추가됨. 대규모 데이터 구조를 탐색하는 데 도움이 됨.
  • Object Inspector(오브젝트 인스펙터) : 검색 아이콘이 추가됨. 빠른 탐색 및 이동.
  • Tool Palette(도구 팔레트) : 검색 아이콘이 추가됨. 빠른 탐색 및 이동.

또한, Messages(메시지)와 Events(이벤트) 창 안에도 이 검색 기능이 새로 구현되었다. 뿐만 아니라, 새 검색 기능이 Projects(프로젝트) 검색과 Structure View(구조 보기)에 추가되어, 드롭다운을 통해 특정 검색을 구성할 수 있다.

spacer.png


 

3.2    메시지 로그 향상

RAD Studio Florence 13.0에서는  IDE > Compiling and Running > Build Log 라는 새 옵션이 추가되었다 .

  • Compiler Logs(컴파일러 로그)에 강조 표시를 활성화할 수 있다.
  • IDE에게 Messages(메시지) 창 안의 힌트와 경고를 그룹화하도록 요청할 수 있다. 그러면, 많은 메시지를 탐색할 때, 더 명확하게 파악할 수 있고 빌드 프로세스도 더 빨라진다.

spacer.png
 

3.3    ToolsAPI 업데이트

RAD Studio Florence 13.0 릴리스에서는 ToolsAPI에 다음과 같은 업데이트가 추가되었다.

  • 환영 페이지의 UI를 업데이트하는 새 메서드가 추가되었다.
    INTAWellcomePageDataPluginListView370.Invalidate
  • 마우스 이벤트 클릭을 가로챌 수 있는 지원이 추가되었다.

위에 언급된 업데이트에 대한 자세한 내용은 ToolsAPI 페이지 참조.
 

3.4    Smart CodeInsight(스마트 코드 인사이트) 향상

RAD Studio Florence 13.0에서는 웹 기반 "RAD AI Companion"이 도입되었다. 이것은 특화된 채팅 및 코드 생성기다. 특별히 RAD Studio 관련 콘텐츠를 학습한 AI다. Help > RAD AI Companion 메뉴를 사용해 열 수 있다 .

AI_companion.png

또한, 이번 릴리스에서는 Smart CodeInsight Options(스마트 코드인사이트 옵션) 페이지에 새 연결 테스트 버튼이 추가되었다 . 이제 사용자는 채팅을 사용해 보지 않고도 미리 구성을 직접 테스트할 수 있다.

기타 향상은 다음과 같다.

  • 모델들은 실제 정보를 반환하기 전에 응답의 일부로 “<think(생각하는 중입니다)>”를 반환한다. 이 경우, IDE는 "thinking" 태그를 제거한다.
  • Smart CodeInsight 채팅 창 안의 버튼들에 대한 힌트가 향상되었다. 이제 해당 단축키가 표시된다.
     

3.5    IDE 기타 변경 사항

IDE에서 반영된 기타 추가 업데이트 및 향상에 대해 자세한 설명:

  • 새 IDE 옵션인 Tabs(탭)이 도입되었다. 사용자는 에디터의 배경색을 에디터 탭에 반영할 수 있다.
  • 새 IDE 옵션이 추가되어서 현재 활성된 IDE 테마를 Structural Highlight(구조 강조) 색에 사용할 수 있다. 이 옵션을 사용하면, 구조 강조 표시에 사용할 색상 스타일을 선택할 수 있다.
  • 이중 버퍼링(double buffering)과 깜빡임 제거 기능이 기본적으로 활성화되었다. 여러분이 이중 버퍼링을 재정의하고 싶다면 새 레지스트리 설정(Globals\SingleBufferingInRemoteSessions)를 사용하면 된다.
  • 활성 리팩토링 옵션이 없는 경우 리팩토링 메뉴는 회색으로 표시된다("리팩토링 없음" 하위 항목은 이제 표시되지 않음).
  • IDE의 Exception(예외) 대화 상자에는 이제 호출 스택 추적이 직접 표시된다. 따라서, 코드 흐름을 이해할 수 있는 중요한 정보를 파악할 수 있다.
  • Structure Pane(구조 창) 안에서 오류 메시지를 복사할 수 있는 기능이 추가되었다.
  • Attach to Process(프로세스에 연결) 대화 상자를 재설계했다. 새로 추가된 열에서 프로세스에 대한 정보를 표시한다. 또한 다양한 UI 컨트롤에 대한 정보도 표시한다.
  • Git 소스 제어 통합이 향상되었다. 사용자 이름과 비밀번호 대신 GitHub 토큰 이름이나 토큰 키를 사용할 수 있다는 사실을 알려준다.
  • FireMonkey 애플리케이션에 폼(form)을 추가할 때, HD Form과 3D Form 중에서 선택할 필요가 없어졌다. 3D Form을 추가하는 옵션은 별도로 제공된다.
  • 다크 테마 모드에서 여백 아이콘을 향상했다. 이미지 주위에 흰색 테두리가 생기지 않는다.
     

4    IDE 도구 관리 향상

RAD Studio에는 강력한 도구들이 들어 있어서, Delphi 및 C++ 개발자가 애플리케이션 코드를 더욱 쉽게 작성할 수 있다. 다양한 IDE 도구들에 대한 향상과 업데이트는 다음과 같다.

4.1    DelphiLSP (델파이LSP)

이번 릴리스에서는, DelphiLSP 아키텍처 향상 작업이 계속되었다. 하지만, Delphi 고객의 특정 요청에 부응하여 당분간, 오래 전에 있던 "Classic" Delphi CodeInsight 코드 완성 엔진을 다시 사용할 수 있도록 옵션을 제공한다. 그래서 DelphiLSP 기반인 IDE인 RAD Studio 13.0 안에서 이 오래된 엔진을 사용하고 싶으면 누구나 쉽게 사용할 수 있다.

참고:
이 "Classic" Code Insight Manager를 활성화하는 경우, DelphiLSP로 이전된 일부 기능이 영향을 받는다 (예: Structure Pain, Error Insight, 에디터 탐색 막대-에디터 상단에 있는 도구 모음으로써 코드 이동/탐색에 사용됨). 여러분이 Classic Code Insight Manager를 활성화하면, 이 기능들이 작동하지 않는다. 우리는 이 변경을 바꿔 다시 예전과 같이 돌아갈 계획은 없다.


이 Classic Code Insight 를 활성화 하려면,  Tools > Options > Editor > Language > Code Insight 탭을 선택하면 된다. (아래 그림 참조)

spacer.png
 

4.2    Delphi Advisor Wizard (델파이 조언 마법사) 업그레이드

RAD Studio 13.0에서는, 새 Delphi Upgrade Advisor(업그레이드 조언) 마법사가 도입되었다. 개발자는 이 마법사를 통해 프로젝트 구성 및 코드에 대한 의미 있는 변경들을 파악할 수 있다. 그래서 컴파일 시간과 코드 도구 사용 경험을 크게 향상시킬 수 있다. 이 마법사는 별도의 GetIt 패키지로 제공된다. 일단 설치되면, IDE에 드롭다운 메뉴가 추가된다.

몇 가지 구체적인 제안들을 제공하는 것 외에도, Delphi Upgrade Advisor 마법사는 reFind 스크립트를 제공한다. 그래서 여러분이 프로젝트의 uses 문장을 정리하는 데 사용할 수 있다.
 

4.3    C++용 Visual Assist(비주얼 어시스트)

RAD Studio Florence 13.0에는, VA 통합이 향상되었다. 그래서 RAD Studio가 툴체인(toolchain)들과 프로젝트 구성(configuration)들을 관리하는 방식에 VA가 더 잘 부합한다.

VA는 이제 여러분이 프로젝트 구성, 타겟 플랫폼, 툴체인 등을 변경할 때마다 자동으로 다시 로드된다. 따라서, 포함 경로와 심볼 식별이 항상 정확하게 유지된다. 심지어, 동일한 프로젝트 그룹 안에 여러 프로젝트를 넣어두고 각 프로젝트마다 서로 다른 설정을 사용하는 경우에도 그렇다. (자세한 내용은 Visual Assist for C++ 페이지를 참조)
 

4.4    디버거 업데이트

이 릴리스에서는 디버거를 LLDB 버전 20으로 업데이트했다. 이는 Windows 64-비트 Modern 플랫폼용 Clang 컴파일러의 버전을 20으로 업데이트한 것과 같은 맥락이다.

디버거에서 수행된 기타 향상 및 품질 작업 목록:

C++용:

  • OutputDebugStringW가 유니코드 출력을 처리하는 방식을 향상했다.
  • 인쇄 대상이 아닌 와이드 문자 값들이 이제 디버거 Output 창 안에서 올바른 형식을 사용해 표시된다.
  • 이 디버거 하에서, argc와 argv는 이제 공백이 포함된 파라미터를 올바르게 처리한다.


델파이용:

  • 범위가 지정된 열거형 값은 이제 선언된 형식 안에 적절하게 포함된다. 따라서, 전역 네임스페이스 안에서 충돌하지 않는다. 또한, 이 값들은 이제 디버거 화면들 안에서 정확하게 렌더링된다.
  • 이제 디버깅 중에, 오브젝트 멤버 세트 값들이 올바르게 표시된다.
  • 클래스 변수 이름들이 이제 올바르게 확인된다. 이름 다루기도 향상되었다.
  • 유니코드 변수 처리가 향상되었다; 이 디버거는 이제 더 광범위한 유니코드 식별자들을 수용한다.

또한, IDE 옵션(Options) 안에서, 여러분은 Code Highlight가 Debug 창들 안에서 활성화되도록 설정할 수 있다.

4.5    리소스 컴파일러

이 릴리스 에서는 RAD Studio 안에 들어가는 리소스 컴파일러(Resource Compiler)들에서 몇 가지를 조정했다.

Florence 13.0부터 RAD Studio는 resinator 라는 오픈소스 리소스 컴파일러를 추가로 배포한다 . 이것은 이제 빌드 시스템의 디펄트 리소스 컴파일러다. resinator에 대한 자세한 내용은 GitHub의 resinator를 참조 .

또한, 다양한 리소스 컴파일러를 더 쉽게 선택할 수 있도록 새 옵션이 추가되었다. 그 안에서 Windows SDK의 클래식 리소스 컴파일러 등등이 제공된다.
 

5    Delphi(델파이) 컴파일러 업데이트

RAD Studio 13.0에서, Delphi 언어에 대한 여러 가지 향상들이 제공된다. 새 삼항 연산자(ternary operator)부터 새 컴파일러 지시어(directive)들까지 다양하다.
 

5.1    If 조건 연산자(Conditional Operator)

RAD Studio Florence 13.0 릴리스에서, Object Pascal(오브젝트 파스칼) 언어 안에 조건 연산자(즉 삼항 연산자)가 추가되었다. 동작 방식은 (다른 프로그래밍 언어에서 흔히 볼 수 있는) ? : 연산자와 비슷하다. 하지만, 문장 작성 규칙은 델파이 개발자들에게 더 친숙하고, Pascal-지향 방식이다. if-then-else 구문과 닮았다.

예시 및 더 많은 정보는 Conditional Operators (Delphi) 페이지 참고.
 

5.2    새 "is not" 및 "not in" 연산자(Operator)

이 컴파일러는 “is not” 그리고 "not in" 연산자를 허용한다. 그래서, 더 짧고 더 읽기 쉽게 기존의 연산자들을 결합해 사용할 수 있다. 예시는 Delphi Expressions(델파이 표현식) 페이지를 참조.
 

5.3    새 "noreturn" 지시어

"noreturn" 지시어(directive)는 프로시저에 연계할 수 있는 속성(attribute)이다. 이것은 해당 프로시저를 호출 하면, 예외가 발생하고 정상적인 실행이 완료되지 않음을 나타낸다. 이를 통해, 컴파일러는 정의되지 않은 결과에 대한 경고를 건너뛸 수 있으며, 최적화 및 코드 제거도 할 수 있게 된다. 예시는 Delphi Declarations and Statements 페이지 참조.

이 새 지시어를 사용하면, W1035 경고를 제거할 수 있다. (W1035 경고는 예외 발생으로 인해 적절한 값이 할당되지 않을 수 있음을 알려준다). 예시는 W1035 Return value of function '%s' might be undefined 페이지 참조.
 

5.4    {$PUSHOPT} 및 {$POPOPT} 지시어

이 새 Delphi 컴파일러 지시어를 사용하면 현재 옵션들과 경고 구성들의 세트를 저장하고 복원할 수 있다.

이 릴리스에서, 다음과 같은 지시어 불균형 경고가 추가되었다.

파일 안에 $PUSHOPT 가 $POPOPT 보다 많은 경우, 그 소스 파일 끝에 동일한 경고가 나타난다. 모든 옵션들과 설정들이 이 새 지시어에 적합한 것은 아니다. 적합한 옵션들에 대해서는 Eligible Options를 참조.
 

5.5    {$IFOPT} 지시어에서 긴 지시어 지원

RAD Studio Florence 13.0부터, {$IFOPT} 지시어가 긴 지시어를 지원한다. 예:

{$IFOPT SCOPEDENUMS ON}

지원되는 지시어들에 대한 전체 목록은 $IFOPT 페이지를 참조.
 

5.6    제네릭 타입(Generic Type)에 대한 새 제약 조건(Constraint)들

제네릭 형식에 대해 새 제약 조건인 "interface"와 "unmanaged"가 추가되었다. unmanaged는 기존 레코드 제약 조건의 일부를 대체한다.

또한, 이 새 제약 조건들 덕분에, 제네릭 타입으로 선언된 값 타입 변수에 대해 L-Value 변환(cast)이 허용된다. 제네릭 클래스의 메서드 안에서, 이제는 제네릭 메서드의 결과를 캐스팅해 해당 제네릭 타입 자체를 반환하도록 할 수 있다. 그래서 사용되는 구체적 타입에 맞출 수 있다.

예 :

class function TMyData<T>.OperateSubtract(const L, R: T): T;
begin
  if (GetTypeKind(T) = tkInteger) and (SizeOf(T) = 1) then
    Byte(Result) := Byte(L) - Byte(R) // 새 타입으로 변환!
  else if (GetTypeKind(T) = tkInteger) and (SizeOf(T) = 2) then
    Word(Result) := Word(L) - Word(R) // 새 타입으로 변환!
  // ...
  else if (GetTypeKind(T) = tkFloat) and (SizeOf(T) = 10) then
    Extended(Result) := Extended(L) - Extended(R); // 새 타입으로 변환!
end;

 

5.7    NameOf 내장 함수

새 NameOf(식별자)라는 표준 프로시저가 있다. 이것은 이름이 비슷한 C# 함수의 작동 방식과 마찬가지다. 여러분이 어떤 식별자든 전달하면, 그에 상응하는 문자열 표현이 반환된다.

 Memo1.Lines.Add (NameOf (Sender));
 Memo1.Lines.Add (NameOf (self));
 Memo1.Lines.Add (NameOf (TForm31));
 Memo1.Lines.Add (NameOf (X));
 Memo1.Lines.Add (NameOf (Integer));

 

5.8    레코드 클래스 연산자인  Initialize 및 Finalize 선언 시, 암시적 "Self" 파라미터

맞춤-관리 레코드(custom-managed record)를 위한 두 가지 클래스 연산자 선언이 훨씬 더 간결해진다. Self 파라미터를 생략할 수 있다(암시적으로 사용 된다). 동작이나 코드 생성에는 아무런 변화가 없다. 그저 문장 작성만 간소화된다.

예시는 Custom-Managed Record) 페이지를 참조.
 

5.9    Delphi 컴파일러 기타 향상

Delphi 컴파일러의 기타 추가 향상과 품질 향상:

$WEAKPACKAGEUNIT 지시어는 전역(global) 변수가 유닛의 인터페이스(interface) 구역, 초기화(initialization) 블록 또는 종료(finalization) 블록, 클래스 생성자 또는 클래스 소멸자 안에 포함되어 있는 경우 error()를 보고한다.

참고:
이 변경으로 인해 기존 코드가 컴파일되지 않을 수 있다.

  • 해당 컴파일러 오류 'E2033' (Types of actual and formal var parameters must be identical)은 이제 관련 타입의 이름을 포함한다.
  • 데이터 캐스팅을 위해 두 개의 새 경고가 추가되었다: W1076, W1077
     

6    C++Win64 Modern 플랫폼이 Clang 20으로 업데이트 됨

RAD Studio Florence 13.0 릴리스에서, Modern Win64 C++ 컴파일러가 Clang 버전 20으로 업데이트되었다. 12.x 버전에 포함되었던 버전은 Clang 15였다. 이 새 Clang 기반 컴파일러는 C++23을 지원한다. 또한, 이 릴리스에서, Modern Win64 C++ 툴체인(toolchain)들의 다른 모든 요소들도 함께 업데이트되었다.

이번 릴리스에서는, 최신 C++ 표준, 호환성, 안정성 등에 중점을 둔 커다한 향상이 반영되었다. 이번 릴리스에 포함된 주요 향상들:

  • LLVM 툴체인 업그레이드(v20) : 툴체인이 LLVM v15에서 LLVM v20으로 업그레이드되었다. 이 업데이트는 최신 C++ 표준과 컴파일러 최적화를 지원한다.
  • ASAN 지원 향상 : 해당 AddressSanitizer(ASAN) 런타임이 이제 수정되어 Windows 11과 호환성이 맞는다.
  • 새 C++ 표준 선택 : BCC64X는 이제 디펄트 설정이 C++23이다. 하지만, 사용자는 (필요에 따라) C++20 또는 C++17을 타겟으로 선택할 수 있다.
  • RTL/STL 공유 라이브러리에 버전 반영 : 공유되는 런타임 라이브러리(예: libc++.dll)에 이제 BDS 버전 번호가 접미사로 추가된다(예: libc++-370.dll). 이를 통해, 여러 버전의 RAD Studio가 설치되어 있을 때 발생할 수 있는 런타임 충돌이 방지된다.
  • 오래된 이슈 해소 : LLVM v15 그리고 그 이전 툴체인 버전들에 존재하던 수많은 버그와 불일치들이 이번 릴리스에서 해결되었다.
     

7    Delphi RTL 향상

이번 릴리스에서, JSON RTL이 향상되었다. 따라서 여러분은 특정 값을 가진 필드를 억제(suppress)할 수 있다. 새 애트리뷰트(attribute)를 붙이면 된다. 기타 JSON 관련 향상과 Delphi RTL 업데이트들은 다음과 같다:
 

7.1    SmartCore AI (스마트코어 AI) 컴포넌트 팩

RAD Studio 13.0에서는 새로운 핵심 AI 컴포넌트 세트가 제공된다. 이 새 컴포넌트 세트의 목적은 Delphi 또는 C++Builder를 사용해, 고객이 기존 앱에 AI 기능을 추가하거나 또는 완전히 새로운 AI-중심 앱을 구축할 수 있도록 하는 것이다. 이는 미래를 위한 기본 빌딩 블록(구성요소)이자 기반이다: 이 핵심 아키텍처를 기반으로 고객과 서드파티 공급업체는 다른 AI 엔진들과 UI 컨트롤들을 가지고 새로 구축하거나 기능을 확장할 수 있다.

SmartCore AI 컴포넌트 팩은 GetIt(겟잇)에서 제공된다. AI connection 컴포넌트는 FireDAC의 데이터베이스 연결과 유사한 역할을 한다. AI-엔진에 독립적인 이 단일 컴포넌트는 지정된 드라이버를 사용해 REST를 통해 다양한 AI 엔진(OpenAI, Claude, Gemini, Ollama 등)과 통신한다. 이 SmartCore AI 엔진은 AI 제공사에 맞는 드라이버들을 추가할 수 있는 기능을 제공한다. 그래서 여러분의 프로젝트가 시장 발전에 따라 알맞은 AI 제공업체로 확장될 수 있도록 한다. 해당 구성은 사용하기 쉬운 AI 연결 마법사를 통해 관리하면 된다.

컴포넌트 팩 안에는 다양한 데이터 유형(텍스트, 이미지, 구조화된 데이터 등)에 맞는 AI 요청 컴포넌트들 세트가 있다. 이것들은 프롬프트와 연계될 수 있다. 또한 UI 컨트롤과 직접 바인딩해 그 결과를 표시할 수 있다. 이 컴포넌트 기반 모델 덕분에 RAD Studio 13.0에서 SmartCore AI 컴포넌트를 사용하기가 매우 간편하다.
 

7.2    JSON 처리

JSON 관련 업데이트들:

  • TJsonOption에 joIgnoreDefault와 joIgnoreSpecial 프로퍼티가 추가됨.
  • TMarshalUnmarshalBase.ValueSerialization : jvExcludeSpecial 기본값을 사용하는 TJsonValueSerialization.
  • TJSONValue.GetValue<T>(const APath: string; ADefaultValue: T):T 는 동작이 변경되었다. 이제는 JSON 값이 있으면 해당 값을 찾는다. 찾으면 지정된 형식으로 변환한다. 값을 찾을 수 없거나, 복원할 수 없거나, JSON 값이 null이면, 기본 값(default value)을 반환한다.
  • TJSONNumber 클래스는 이제 TJSONValue 클래스에서 직접 상속된다.
  • TJSONString 클래스는 이제 "sealed"로 지정되었다.
  • TJsonReader는 이제 ReadAsUInt64가 있다.

이 JSON 직렬화기(JSON Serializer)는 디펄트 값을 사용하고 있는 프로퍼티들을 생략할 수 있는 옵션을 제공한다.

  • 새 TJsonConverter.CanWrite(AValue)라는 오버로드 메서드.
  • TJsonSerializer.MemberSerialization : TJsonMemberSerialization 프로퍼티가 있다. 기본값은 TJsonMemberSerialization.Fields다.
     

7.3    Delphi RTL 기타 변경 사항

RAD Studio Florence 13.0 릴리스에 반영된, 기타 Delphi RTL 업데이트들:

  • WinRT API들을 새로 고치고, GetIt에 있는 WinMD 정의에서 나온 WinAPI 헤더들의 외부 스냅샷을 새로 만들고, RTL 파일들 안에 있는 WinAPI 선언들을 정리했다.
  • 내장된 DUnitX 버전을 0.4.1 버전으로 업데이트했다(마지막 수정일: 2025년 6월 26일).
  • TStringHelper.Contains 함수에 대소문자를 구분하지 않는 버전이 추가되었다.
  • "_" 및 "%binary nums"를 지원하는 System.StrUtils.LiteralToInt 함수가 추가되었다. 그 결과, TIntegerProperty 및 TInt64Property 클래스는 이제 TryLiteralToInt를 사용한다.
  • 새 TPath.Exists가 추가되었다 .
  • TRegistry 클래스에 ReadUInt64 와 WriteUInt64가 추가되었다.
  • TThreadedQueue에는 이제 Count 프로퍼티가 있다. 이는 이름 일관성을 맞추기 위해 추가되었다.
  • TDictionary<K,V> 및 TOrderedDictionary<K,V>가 업데이트되었다. TOrderedDictionary를 TDictionary로 형변환(cast)해도 TOrderedDictionary의 동작이 그대로 유지된다.
  • 동기화 클래스인 TMutex, TSemaphore, TEvent의 생성자는 이제 THandleObject.LastError 프로퍼티를 설정하고 나서 호출자에게 반환한다.
  • 다음과 같은 서명을 가지는TStringList 생성자가 추가되었다.
    constructor Create(Options: TStringsOptions; Duplicates: TDuplicates = dupIgnore); overload;
  • System.RTTI 유닛 안에는, GetStorageSize 라는 새 함수가 있다. 그래서 해당 타입의 값을 메모리에 저장하는 데 필요한 바이트 수를 읽을 수 있다.
  • 새 TSizeF.Zero 메서드가 추가되었다.
  • 교착 상태(dead lock) 상황을 디버깅할 수 있도록, WriterID 프로퍼티가 IReadWrite/TMultiReadExclusiveWriteSync에 추가되었다.
  • TRttiDataMember를 재구성했다. 새로운 중간 클래스가 도입되었다:
    • TRttiPlaceMember
    • TRttiDataMember
    • TRttiIndexedProperty
       

8    VCL 향상

13.0에서, RAD Studio는 새 기능들과 광범위한 품질 향상을 이 강력한 통합 UI 라이브러리에 반영했다. VCL에는 UIAutomation Microsoft 인터페이스, TitleBar 스타일 등이 들어갔으며, 그 외에도 많은 기능들이 추가되었다.

8.1    UIAutomation 지원

VCL 애플리케이션이 UI 테스트 수행 도구들에 대해 접근성과 통합성을 향상할 수 있도록, 버전 13.0에서, UIAutomation 지원이 VCL 라이브러리에 추가되었다.
 

8.2    TitleBar(타이틀바) 향상

이번 릴리스에서, TitleBarPanel이 사용자 지정 VCL 스타일을 지원한다. 이를 통해, 제목 표시줄 영역에 스타일이 적용된 컨트롤을 그릴 수 있는 기능이 추가되었다.

이와 관련해 이번 릴리스에는 포함된 업데이트들:

  • 새 TTitleBar.StyleColors 프로퍼티가 추가되었다. 그래서 VCL 스타일 색상을 자동으로 제목 표시줄의 배경 및 버튼에 적용할 수 있다. 이 지원에 포함되는 컨트롤들: TButton, TSpeedButton, TCheckBox, TRadioButton, TToolBar, TEdit, TComboBox, TFormTabsBar, TActionToolBar, TActionMainMenuBar
  • MDI 애플리케이션 안에서 TitleBar 사용이 향상되었다.
  • TitleBar의 사용자 맞춤 버튼에 대한 힌트 지원이 추가되었다.
  • HighDPI 지원이 향상되었다.
     

8.3    ControlList 향상

RAD Studio Florence 13.0은 ControlList 컴포넌트에 대해 다음과 같은 향상을 제공한다.

  • ControlList 컴포넌트는 새로 호스팅되는 컨트롤 타입으로 SplitButton을 지원한다. 이 구현에는 다음이 포함된다.
    • TControlListButton 컨트롤의 clbkSplitPushButton 및 clbkSplitToolButton 스타일.
    • 버튼 분할 드롭다운 영역의 새로운 모습. 화살표가 있다.
    • TControlListButton 컨트롤의 DropDownMenu 프로퍼티.
  • 새로운 OnGetItemHint 이벤트와 새로운 ShowItemHint 프로퍼티가 추가되었다. 그래서 글로벌 컨트롤 힌트 대신 항목별 힌트를 제공할 수 있다.
     

8.4    FormsTabsBar 컴포넌트 향상

RAD Studio Florence 13.0은 FormsTabBar 컴포넌트(RAD Studio 12에서 처음 도입됨)에 대해 다음과 같은 향상을 제공한다.

  • 투명도 지원 추가: 새 프로퍼티인 Transparent와 ShowBottomLine이 추가되었다.
  • 새로운 OnGetTabCaption 이벤트 추가: TFormTabsBar를 더 유연하게 사용할 수 있다
  • TabFromPoint 메서드와 TabIndexFromPoint 메서드가 이제는 public 이다.
  • 새로운 MouseMiddleButtonClose 프로퍼티 추가: 마우스 가운데 버튼으로 탭을 닫을 수 있다.
     

8.5    EdgeBrowser 업데이트

이 릴리스에서는, Microsoft WebView 2 컨트롤(Chromium 기반 Edge라고도 함)에 대한 인터페이스가 WebView2 SDK 버전 1.0.3296.44로 업데이트되었다.

또한 TEdgeBrowser 컴포넌트(및 해당 데모)가 업데이트되었다. 그래서 AddWebResourceRequestedFilterWithRequestSourceKinds를 지원한다. 이것은 AddWebResourceRequestedFilter 대신 사용할 수 있다.
 

8.6    WinUI 3 데모

이 릴리스에서는,WinUI 3 헤더와 독립형 WinUI 3 데모를 새로 고쳤다. 이전에는 GetIt에서 별도로 다운로드하여 사용할 수 있었지만, 이제는 제품 핵심 데모 안에 들어갔다.
 

8.7    ActionMainMenuBar 스크롤 기능

이 릴리스에서는 새로운 스크롤 기능이 TActionMainMenuBar 컨트롤에 추가되었다. 이 기능은 메뉴의 세로 높이가 화면 높이를 초과할 때 활성화된다.

아래는 이 기능이 실제로 작동하는 예시 화면이다. 참고로, 이 기능은 RAD Studio IDE에서도 이 기능이 사용될 수 있다. 즉, 저해상도 화면에서 실행되는 경우에 볼 수 있다.

spacer.png
 

8.8    VCL 기타 향상

VCL의 추가 업데이트 및 변경 사항들:

  • 남아 있는 Win98에 국한된 지원 기능들을 VCL 코드에서 제거했다.
  • TToggleSwitch 컨트롤을 향상해, Windows 10/Windows 11 토글 스위치처럼 보이도록 했다. "Windows 10" VCL 스타일을 업데이트한 결과다.
  • TDragDockObject 클래스를 업데이트했다. 그래서 DropAlign 프로퍼티에 대한 읽기/쓰기가 가능하다.
  • 새로운 TActionMainMenuBar.OnSelectMenuItem 이벤트가 추가되었다. 그래서 ActionMainMenuBar의 메뉴 항목에 대한 힌트를 표시할 수 있다.
  • TCategoryButtons 컨트롤의 경우, TButtonItem과 TButtonCategory에 Visible프로퍼티와 Enabled 프로퍼티가 추가되었다.
  • 새로운 TStyleManager.FormBorderSize 프로퍼티가 추가되었다.
  • 새로운 TMonthCalendar.OnChange 이벤트가 추가되었다.
  • TSplitter에 새로운 OnBeforeResize 및 OnAfterResize 이벤트가 추가되었다.
  • 새 public 함수인 VCLEditors.GetFormDPIForVCLEditors가 추가되었다. 그래서 HiDPI IDE 하에서 VCL 에디터를 개발하는 데 도움이 된다.
  • TCanvas는 TPoint 파라미터를 가지는 새 오버로드 메서드들이 제공된다: AngleArc, Draw, LineTo, MoveTo, FloodFill, TextOut

 

9    FireMonkey(파이어몽키) 업데이트

RAD Studio 13.0에서 FireMonkey에는 새로운 Display Link Service(디스플레이 링크 서비스)가 통합되었다. 그래서 애니메이션의 안정성과 부드러움을 크게 향상시킨다.  또한 이 프레임워크는 비트맵 복사 시, 향상된 성능을 제공한다. 이는 GPU를 활용하기 때문이다. 또한 새 MaskEdit 컴포넌트 등등 많은 향상들이 반영되었다.

FireMonkey 영역 에 대한 업데이트와 향상들은 다음과 같다:
 

9.1    Apple(애플) 플랫폼 API

RAD Studio Florence 13.0 릴리스에서는, iOS 및 macOS 플랫폼 API들에 대해 매우 많은 업데이트와 확장들이 Delphi  헤더 파일들 안에서 제공된다. 또한 이 릴리스는 모든 iOS API 헤더들이 RTL에서 iOS 18.4 로 업데이트되었다. 구체적인 확장 기능들은 다음과 같다:

  • 누락된 NSWindow 함수가 추가되었다.
  • 범용 링크 지원 확장 (iOSapi.Foundation 안에서).
  • 추가 CoreText 상수 함수들이 iOSapi.CoreText.pas 안에 추가되었다 .
  • coalescedTouchesForTouch(touch: UITouch): NSArray; cdecl; 이 UIEvent 인터페이스에 추가되었다 (iOSapi.UIKit 유닛 안에 있음).
  • UITextView와 UITextField 인터페이스안에 누락된 메서드 선언들이 추가되었다 (iOSapi.UIKit.pas 유닛 안).
  • &string 메소드가 NSAttributedString 인터페이스 안에 추가되었다 (iOSapi.Foundation.pas 안)
  • CVMetalTexture와 CVMetalTextureCache 선언이 추가되었다 (iOSapi.CoreVideo.pas 안)
  • Macapi.QuartzCore.pas 안에 누락된 함수들이 추가되었다 .
  • Macapi.AppKit.pas 에 인터페이스와 메서드가 추가되었다 .
  • CTFontManagerRegisterGraphicsFont 선언이 추가되었다 (Macapi.CoreText.pas 안)
  • iosapi.CoreLocation가 iOS 18.4로 업데이트되었다 (CLVisit 지원 등등).
  • 새로운 파일인 iOSapi.CoreMIDI, iOSapi.CoreAudioTypes 가 추가되었다.
  • iOSapi.AudioToolbox 유닛이 iOS 18.4로 업데이트되었다. 해당 AudioUnit 프레임워크는 더 이상 지원되지 않으므로 제거되었다. 그 대신 AudioToolbox를 사용해야 한다.
  • AVAudioSession 오브젝트를 확장했으며 iOSapi.AVFoundation 안으로 가져왔다.
  • 새로운 헤더 iOSapi.ImageIO .
     

9.2    Android(안드로이드) 플랫폼 API

RAD Studio Florence 13.0은 기본적으로 Android API 레벨 35를 타겟으로 한다. 또한 도구 관리 기능을 추가해 향후 새로운 API 레벨을 지원할 수 있도록 한다.

추가 변경 사항은 다음과 같다.:

  • TTexture 클래스를 향상시켰다. 그래서 GL_TEXTURE_EXTERNAL_OES 타겟을 지원한다.
  • Java2OP 명령-줄 도구를 재작업했다. Doclava를 새로운 jparser 명령-줄 도구로 교체했다. 이를 통해 플랫폼 모듈에서 내보낸 패키지에 선언된 API를 다시 구현하는 데 따른 문제들이 해결되었다.
  • getEventTimeNanos와 getHistoricalEventTimeNanos가  JMotionEvent에 추가되었다. (Androidapi.JNI.GraphicsContentViewText.pas 안)
  • manifestmerger 명령-줄 도구가 31.10.1 버전으로 업데이트되었다.
  • AAPT2 명령-줄 도구가 8.10.1 버전으로 업데이트되었다.
  • dexter 명령-줄 유틸리티가 1.0.1 버전으로 업데이트되었다.
  • rclasser 명령-줄 유틸리티가 1.0.1 버전으로 업데이트되었다.
  • bundletool 명령-줄 유틸리티가 1.18.1 버전으로 업데이트되었다.
  • packager 명령-줄 유틸리티가 버전 1.2.1로 업데이트되었다.
     

9.3    MaskEdit 컨트롤

RAD Studio Florence 13.0에서는, 새로운 MaskEdit 컨트롤이 FireMonkey용으로 새로 도입되었다. 입력 마스크를 할 수 잇는 특정 디자이너가 들어갔다.

spacer.png

VCL 안에 있는 마스트 에디터와 달리, FMX의 TMaskEdit 구현에서는 MaskEdit의 현재 값이 유효하지 않더라도 예외가 발생하지 않는다. 그 대신 OnValidateError 이벤트를 사용할 것을 권장한다. 이 이벤트를 사용하면, 개발자는 유효하지 않은 값에 대한 시각적 피드백을 사용자에게 제공할 수 있다. 포커스를 재설정 후에도 값이 여전히 유효하지 않은 경우에는, 유효하지 않은 상태 그대로 유지된다. 그리고 값이 유효해질 때까지 OnChange 이벤트는 발동되지 않는다.
 

9.4    새 Display Link Service(디스플레이 링크 서비스)

FMX용 새 Display Link Service는 이제 모든 애플리케이션 애니메이션을 위한 중심 엔진이 되었다. 이 엔진은 이전에 사용되던 타이머 기반 엔진을 완전히 대체한다.

프레임에-정확한 이 시스템은 디스플레이의 실제 화면 주사율을 활용해 모든 UI 업데이트와 애니메이션을 동기화하고 구동한다. JChoreographer(Android), CADisplayLink(iOS) 등 플랫폼 네이티브 API를 활용하므로, 애니메이션 처리가 VSync 이벤트와 긴밀하게 연동되는 것을 보장한다. 그래서 더욱 부드럽고 일관된 시각적 효과를 모든 플랫폼에서 제공한다.

참고:
이 기본적이고 구조적인 변경으로 인해 기존 코드와의 일부 변경 및 비호환성이 발생한다. 예를 들어, TAniCalculations 안에 있던 Interval 프로퍼티가 제거되었다[1]. 그리고 다른 일부 프로퍼티들은 TDateTime에서 Double로 수정되었다.

 

9.5    FMX Linux (FMX 리눅스)

RAD Studio Florence 13.0 릴리스에서는, 새 버전인 FMX Linux가 제공된다. GetIt 패키지 안에 있다. 또한, 이 라이브러리의 IDE 통합이 더욱 원활해졌다.
 

9.6    Skia(스키아) 업데이트

RAD Studio Florence 13.0 릴리스에는, Skia 라이브러리 통합(Skia4Delphi)이 최신 버전인 7.0.0으로 업데이트되었다. 이 업데이트는 여러 문제를 해결하고 Skia 통합을 향상한다.

참고: Releases - skia4delphi/skia4delphi
 

9.7    FireMonkey 컨트롤 및 컴포넌트 기타 향상

FireMonkey 컨트롤과 컴포넌트에 대한 추가 업데이트와 변경 사항은 다음과 같다:

  • TComboEdit 컴포넌트는 이제 입력 자동 완성을 지원한다. 편집 가능한 텍스트 구성을 사용한다.
  • 새 프로퍼티 집합이 TPresentedScrollBox에 추가되었다. 그래서 사용자는 스크롤 애니메이션, 바운스, 터치 상호작용을 제어할 수 있다. 새 프로퍼티들은 다음과 같다: AutoHide, Bounces, ScrollAnimation, ScrollDirections, TouchTracking.
  • 새 컴포넌트인 TApplicationEvents가 추가되었다.
  • TDateTime을 Double로 변경했다. 그 이유는 이 API가 이제는 초 단위 간격으로 작동하기 때문이다. iOS의 DisplayLink는 초 단위로 작동하는 반면, Android의 JChoreographer는 나노초 단위로 작동한다.
  • FMX.Text.TextEditor와 FMX.Text.SpellingManager 메서드는 Virtual 메서드로 변환되었다.
  • IFMXSpellCheckerService를 재설계했다. 그래서 새 인터페이스인 IFMXSpellCheckerServiceEx를 만들었다. 이것을 사용하면 서로 다른 언어와 문장으로 작업할 수 있다.
  • TGlyph 컴포넌트에 대한 HitTest 프로퍼티가 published(게시) 되었다.
  • TextPrompt 프로퍼티가 TMemo에 추가되었다 . 이 프로퍼티는 이 컨트롤의 텍스트가 비어 있을 때 그 위치에 미리 제시되는 텍스트(placeholder text)로 사용된다. TEdit에서와 동일하게 작동한다.
  • 새 OnCheckedChange 이벤트가 TListBoxItem에 추가되었다 .
  • "그립(grip)"에 대한 방향이 TSplitter 스타일에서 추가되었다.
  • TShape 및 기타 시각적 컨트롤에 대한 TouchTargetExpansion 프로퍼티가 published(게시) 되었다.
  • TBindNavigator 버튼 아이콘들을 이제 스타일을 통해 수정할 수 있다.
  • 새로운 TTrackBar Reverse 프로퍼티가 추가되었다. 그래서 트랙바를 반전할 수 있다. 또한, TTrackBar는 이제 마우스 휠 스크롤을 지원한다.
  • MenuItem의 height(높이)는 과거에 상수였지만, 이제는 사용자가 TStyleTag 오브젝트를 TMenuItem 스타일에 추가하고  StyleName=“height“를 지정할 수 있다. 그러면, 메뉴 항목 높이를 해당 Value 프로퍼티에서  지정할 수 있다.
  • TGlyph에 새 프로퍼티들이 생겼다. ImageRect와 Bitmap이다. 이것들을 사용하면 실제 그림 크기와 좌표를 표현할 수 있다.
  • TExpander의 FContentHeight 값은 이제 ContentHeight 프로퍼티에서  접근할 수 있다.
  • TStringGrid TPopupColumn 입력이 향상되었다.
  • DoStateChanged 가상 메서드가 TRadioButton, TCheckBox, TArcDial에 도입되었다.
  • TCustomCanvasGpu에는 TCanvasHelper 타입의 새로운 클래스 프로퍼티 Helper가 추가되었다. FMX 라이브러리 확장에 관심이 있는 개발자를 위한 것이다.
  • FMX.TListBoxGroupHeader에 이제 TextSetting.Trimming이 추가되었다.
  • AutoTranslate 프로퍼티가 TMainMenu와 TPopupMenu에 추가되었다.
  • TWebBrowser에 EvaluateJavaScript 메서드의 오버로드 버전을 추가되었다. TJavaScriptResultCallback 파라미터를 사용할 수 있다.
  • 새 컴포넌트인 TApplicationEvents가 추가되었다. 이것은 VCL에 있는 것과 비슷한 것이다.
  • TAlignLayout을 업데이트했다. 그래서 컨트롤을 가운데 정렬하기 위한 새로운 정렬 옵션을 포함한다. 새 정렬 방법은 다음과 같다: TopCenter, TopLeft, TopRight, LeftCenter, LeftTop, LeftBottom, RightCenter, RightTop, RightBottom, BottomCenter, BottomLeft, BottomRight.
  • 이모지 기호의 16.0 버전에 대한 지원이 추가되었다.
  • TBindNavigator는 이제 각 버튼에 대한 특정 힌트와 스타일을 구성할 수 있도록 옵션을 제공한다. ButtonsOptions 프로퍼티의 하위 프로퍼티들을 사용하면 된다.
     

9.7.1    모바일 기타 향상

  • iOS에서 전체 화면을 지원한다.
  • RAD Studio는 이제 iOS 시작 파라미터들을 전달한다. 이것은 다른 프레임워크 또는 다른 앱과의 상호작용에 사용할 수 있다 ( TApplicationEvent 참조; FinishedLaunching).
  • iOS에서 받아쓰기 관련 문제가 해결되었다.
  • iOS의 목록 뷰에서 바운스를 비활성화하는 기능을 추가되었다. 새 프로퍼티인 TListView.Bounces를 사용하면 된다. 개발자는 이 프로퍼티를 통해 콘텐츠가 스크롤 범위를 넘어 스크롤되는 기능을 제어할 수 있다. 이 기능은 터치스크린에만 적용된다.
     

10    데이터베이스 및 FireDAC(파이어닥)

부호 없는 큰 정수 데이터베이스 필드 지원 확장에서부터 필드 에디터에서 필드를 시각적 폼(Form)에 끌어 놓을 때 사용할 수 있는 더욱 유연한 옵션들에 이르기까지 많은 향상들이 있다.

여기에는 데이터베이스와 FireDAC 컴포넌트에 대한 업데이트와 향상들을 나열한다.
 

10.1    데이터베이스 RTL

데이터베이스 RTL에 대한 업데이트 및 향상들:

  • 새로운 필드 타입이 TFieldType에 추가되어, 부호 없는 큰 정수(Unsigned Big Integer)를 지원한다. 이제 TFieldType.ftLargeUint 라는 타입이 있다. FireDAC은 Oracle 및 MySQL 드라이버를 통해 이 타입을 지원한다. 또한 TFDMemTable을 통해서도 지원한다.
  • 새 EllipsisPosition 프로퍼티가 VCL TDBText 컴포넌트에 추가되었다.이것은 TLabel에서와 같은 방식으로 작동한다.
  • 새 DataSet 프로퍼티들이 추가되었다. 그래서 부착된 DataSource 오브젝트들을 접근할 수 있다.
  • TDataSet.DataSourceCount 프로퍼티.
  • TDataSet.DataSources 프로퍼티.
  • 오버로드된 DrpCtrls.RegisterFieldControl 프로시저가 추가되었다. 그래서, 생성된 사용자 정의 데이터-인식 컨트롤의 설정을 사용자 정의할 수 있다. 아래 예를 참조:
    uses DrpCtrls;
      RegisterFieldControl(TIntegerField, 'TDBLabeledEdit',
        procedure (Control: TControl; DataSource: TDataSource; Field: TField)
        var
          LEdit: TDBLabeledEdit;
        begin
          LEdit := Control as TDBLabeledEdit;
          LEdit.DataSource := DataSource;
          LEdit.DataField := Field.FullName;
          LEdit.EditLabel.Caption := Field.DisplayLabel;
        end);

             

10.2    FireDAC

이 릴리스에서는 FireDAC 안에 다음과 같은 업데이트와 향상된 기능들이 추가되었다:

  • Firebird 5.0 이상 버전에서 TFDFBBackup 안에 병렬 작업 지원이 추가되었다 . ParallelWorker(TFDIBBackup , TFDIBRestore , TFDIBValidate)들은 서비스 관리자가 요청된 작업을 실행하는 데 사용하는 병렬 작업자 수를 지정한다.
  • TFDMemTable은 RecsSkip과 RecsMax를 지원한다.RecsSkip과 RecsMax 설정은 Filter 속성이 True로 설정된 경우에 반영된다.
  • PostgreSQL 배열 타입에 대해 텍스트 데이터를 반환할 때, FireDAC에 유연성이 더해졌다. 읽을 수 있는 텍스트로 relacl 필드를 표시하는 두 가지 방법은 다음과 같다.
    • 필드를 형변환(cast) 하려면 - relacl::TEXT
    • ResourceOptions.DirectExecute를 True로 설정하면, FireDAC은 내부적으로 PostgreSQL의 텍스트 형식을 결과 집합에 사용한다.
  • TFDCustomConnection 및 TFDCustomTransaction 클래스의 일부 트랜잭션 관련 메서드들이 가상 메서드로 변환되었다. 그래서 파생 클래스의 동작을 사용자 지정하는데 도움이 된다.
  • TFDMemTable은 표준 JSON(FireDAC에서 데이터를 저장해 만들어 진 것이 아닌 것)을 로드할 수 있도록 한다.  새 TFDStorageFormat.sfFreeFormJSON을 사용하면 된다.
    예:
FDMemTable1.LoadFromFile('test.json', sfFreeFormJSON);
FDMemTable1.SaveToFile('test2.json', sfFreeFormJSON).
  • Oracle 연결의 경우, RAD Studio Florence 13.0은 Delphi의 FireDAC TFDConnection 컴포넌트 안에서 OAuth 2.0 인증에 대한 지원이 추가되었다.
    • 새 연결 정의 파라미터들 :
      • OAuth_Token - OAuth2 또는 IAM 토큰을 명시한다. Oracle 19.13이 필요하다.
      • OAuth_PrivKey - IAM PoP 개인 키(private key)를 명시한다. 이 값을 지정하면 IAM 토큰 기반 인증이 사용되고, 지정하지 않으면 Azure OAuth2 인증이 사용된다. Oracle 19.13이 필요하다.
    • TOAuth2Authenticator 컴포넌트를 사용하면 OAuth2 토큰을 받을 수 있다. FireDAC 자동 연결 복구를 사용하면, 새 토큰을 갱신하고 제출할 수 있다.
       

10.3    DataSnap(데이터스냅)

이 릴리스에서는, 인증서 검증 이벤트들이 TFDConnection과 TDSClientCallbackChannelManager에 추가되었다. 이것들은 HTTPS를 전송 수단으로 사용할 수 있다.

11    웹 클라이언트 라이브러리 업데이트

RAD Studio Florence 13.0 릴리스에는, 다음과 같은 업데이트가 포함되어 있다.

12    WebBroker(웹브로커) 업데이트

RAD Studio 13.0 Florence 릴리스에서는 WebBroker(웹브로커) 에 대한 여러 가지 확장 기능들이 제공된다. 여기에는 현대적이고 일원화된 HTTP 세션 관리, 향상된 Apache 통합, Nginx 웹 서버 지원, 향상된 로깅, 간편한 WebStencils 통합 등이 해당된다. 이를 통해 웹 애플리케이션 개발이 더 단순해지고 더 강력해진다.
 

12.1    세션 관리 및 인증

이번 릴리스에서 TWebSessionManager라는 새 클래스가 도입되었다. 이것은 TWebSession 오브젝트들의 목록을 관리한다. 비-시각적 컴포넌트로써, 디자인 타임에 사용할 수 있는 프로퍼티들의 세트를 제공한다.

TWebRequest.Session 프로퍼티는 해당 요청의 세션을 반환한다. TWebSession.DataVars에 저장된 사용자 지정 오브젝트를 이제는 WebStencils 스크립트 안에서 바로 사용할 수 있다.

세션 인증(authentication)은 세션 관리와 통합될 수 있으며 다양한 논리를 기반으로 할 수 있다.

"sentinel(센티넬)" 알고리즘이 TCustomWebDispatcher.DispatchAction 안에 구축되어 있다. 그리고 IWebSessionManager 또는 IWebAuthenticator에게 처리를 위임한다 .

라이브러리 지원에 대한 추가 변경 사항들:

  • 세션 관리 :
    • TWebSessionManager를 추가했다. 이것은 TWebSession 오브젝트들의 컬렉션을 관리한다. 비-시각적 컴포넌트로써, 디자인 타임에 사용할 수 있는 프로퍼티들의 세트를 제공한다. 다음과 같은 구성들을 지정할 수 있다. IdLocation, IdName, Scope(ssUnlimited, ssUser, ssUserAndIP), Timeout, SharedSecret.
    • 개별 세션을 나타내는 TWebSession을 추가했습니다.
  • 인증(Authentication) :
    • TWebBasicAutenticator를 추가했다. 이것은 HTTP 기본 인증을 구현한다.
    • TWebFormsAuthenticator를 추가했습니다. 이것은 HTML 폼(Form) 기반 인증을 구현한다.
  • 권한부여(Authorization):
    • TWebAuthorizer는 역할-기반 접근 통제(access control)를 제공한다. 이 때, authorization zone(권한 부여 영역)을 활용한다.
    • "권한 부여"는 사용자 역할이 zone(영역)의 요구 사항에 부합하는지 확인한다. OnAuthorize 이벤트를 사용하면, 사용자 지정 권한 부여 로직를 넣을 수 있다. 권한 부여에 실패하면 UnauthorizedURL로 리디렉션되거나 403 상태를 반환한다.
  • WebStencils 통합 :
    • 세션은 다음 WebStencils 템플릿과 통합된다.
      • @session.xxx: 세션 오브젝트의 프로퍼티에 접근한다.
      • @session.DataVars: 세션 안의 사용자 정의 변수에 접근한다.
      • @session.UserHasRole(<string>): 사용자에게 특정 역할이 있는지 확인한다.
      • @<n>: DataVars 안에 저장된 오브젝트에 직접 액세스한다 <n> 키를 사용하면 된다 .
  • Request(요청)의 새 프로퍼티 :
    • TWebRequest.AuthUserName: 인증된 사용자 이름.
    • TWebRequest.AuthMethod: 사용된 인증 방법.
    • TWebRequest.Session: 현재 요청의 세션 오브젝트.

이 컴포넌트들을 사용하려면, 웹 모듈에 추가하면 된다(모듈당 TWebSessionManager와 Authenticator 하나만 추가). 그러면 디스패처 센티널이 자동으로 컴포넌트를 감지한다. 처리 순서는 세션 관리 > 인증 > 권한 부여 > 액션 디스패치 순이다 .

TWebSessionManager가 있으면 세션들은 자동으로 생성된다. Authenticator 컴포넌트가 추가되었을 때는 인증이 필수다(TWebAuthorizer를 사용해 제어한다). 이 컴포넌트들은 모두 인터페이스(IWebSessionManager, IWebAuthenticator, IWebAuthorizer)를 통해 함께 작동한다.

12.2    로그 출력

새 TWebApplication.Log 메서드가 생겼다. 이것은 severity(심각도), message(메시지), params(파라미터)를 갖추고 있으며, 모든 플랫폼에서 지원된다. 호스팅하고 있는 웹 서버의 알맞은 로그 시스템을 사용한다.

  • Apache : Apache 서버 로그 파일, 기본적으로 logs\error.log
  • ISAPI : Windows 이벤트 로그(eventvwr.msc): Windows Logs
  • CGI : TCGIApplication.LogFileName에 지정된 이름을 가진 파일
  • FastCGI : HTTP(Apache, nginx) 서버 로그 파일, 기본적으로 logs\error.log
     

12.3    TWebRequest 확장

이 릴리스에서는 TWebRequest가 확장되어 이제 다음을 제공한다.

  • ExtractAllHeaders 메서드, AllHeaders 프로퍼티
  • SessionID
  • AuthUserName, AuthMethod
     

12.4    Apache(아파치) 설정

이번 릴리스에서는, Apache Config가 도입되었다. 이것은 텍스트 방식이고 확장 가능한 구성 시스템이다. 구성 예시:

예 :

MyEnabled On
MyFolder "c:/temp"
MyMimeTypes image/bmp text/html
<Location /qwe/asd>
  MyEnabled On
  MyFolder "c:/temp/asd"
</Location>
<Location /qwe/asd/zxc>
  MyMimeTypes image/png image/jpeg text/html
  MyRole admin
</Location>


Delphi 레코드를 Apache 지시문에 매핑하는 데 사용할 수 있다 (string[n] 등 관리되지 않는 필드 타입들만 가능함):

  • WebHTTPMethod 애트리뷰트를 사용해 매핑을 사용자 정의할 수 있다.
  • Web.ApacheApp.InitConfig를 사용해 해당 레코드 타입을 등록할 수 있다. InitApplication 바로 다음에 호출하면 된다.
  • Web.ApacheHTTP.TApacheRequest.GetConfig를 사용해 요청 URL에 대한 값을 갖는 레코드 인스턴스를 얻을 수 있다.
  • Web.HTTPDMethods.IHTTPDConfigAdaptor, THTTPDCustomConfigAdaptor<T>를 사용해 레코드 초기화 및 재정의를 커스터마이징할 수 있다.

WebBroker Wizard(웹브로커 마법사)에는 Apache 구성 샘플을 포함하는 옵션이 있다.

주의:
이 기능은 C++ Builder에서는 지원되지 않는다.

 

12.5    FastGCI 및 NGINX 지원

이번 릴리스에서는, nginx용으로 FastCGI 지원이 추가되었다. 이 인터페이스는 별도의 애플리케이션으로 실행되는 웹 모듈에 대한 접근을 할 수 있도록 한다.

더 자세히 설명하면:

  • 새 유닛인 Web.FastCGIApp.pas, Web.FastCGIHTTP.pas, Web.FCGI_Protocol.pas가 추가되었다.
  • FastCGI는 nginx와 Apache에서 지원된다.
  • 새 클래스들이 추가되었다: TFastCGIApplication, TFastCGIRequest, TFastCGIResponse.
  • WebBroker Wizard에 FastCGI에 대한 지원이 추가되었다.

nginx에 애플리케이션을 등록하려면 다음 줄을 conf\nginx.conf에 추가하면 된다.

# 1) "location" mask, fastcgi_param directives are environment dependent
# 2) Update the fastcgi_pass directive when the host or port is different
# 3) This will redirect the request "GET http://localhost:8000/fcgi/" 
#    to the FastCGI server.

        location ~ ^/fcgi(.*)$ {
            include fastcgi_params;

            fastcgi_param SCRIPT_NAME /fcgi;
            fastcgi_param PATH_INFO   $1;
            fastcgi_param SCRIPT_FILENAME dummy;
            fastcgi_param PATH_TRANSLATED $document_root$1;
            fastcgi_keep_conn on;

            fastcgi_pass 127.0.0.1:9000;
        }

 

13    WebStencils(웹스텐실즈) 향상

WebStencils(웹스텐실즈)는 RAD Studio의 기존 웹 기술을 크게 확장한다. 서버-측 스크립트 생성을 제공하기 때문이다. 그래서 RAD Server를 웹 서비스 엔진에서 웹 사이트 및 웹 서비스 도구로 바꿔준다.

RAD Studio Florence 13.0에 도입된 WebStencils 업데이트들:

  • 허용 목록(whitelist) 메커니즘 프로퍼티를 구현했다. 그래서 데이터베이스 연결 문자열 등 민감한 정보의 노출을 방지할 수 있다. 허용 목록을 사용자 지정하는 방법은 whitelist를 참조.
  • 오브젝트 및 데이터셋 모델 바깥에서 추가 변수를 스크립트 엔진에 추가하는 기능이 새로 생겼다 .
  • 데이터세트에 대한 WebStencils @표기법은 이제 데이터셋의 필드 뿐만 아니라 프로퍼티에도 접근할 수 있다. show 필드에 대한 접근 수준은 특정 프로퍼티( TWebStencilsProcessor.Whitelist)를 사용해 제어할 수 있다. 그래서 내부 정보에 대한 무단 접근을 방지할 수 있다. 자세한 내용은 여기를 참조.
  • 이제 WebStencils는 (사용 가능한 경우) 웹 세션들을 자동으로 담는다. 자세한 내용은 여기를 참조.
  • WebStencils는 @ExtraHeader 콘텐츠 전파를 지원한다. 그래서 중첩된 레이아웃 계층을 통해 전파할 수 있다. 자세한 내용은 여기를 참조.
  • WebStencils 키워드들이 향상되었다. @page 에 두 개의 추가 값이 제공된다(예: @page.request_path, @page.request_segment).
     

14    RAD Server (RAD 서버) 향상

RAD Studio 13.0에서는, Swagger 기반 API 문서를 보다 유연하게 사용할 수 있다. 그리고 RAD Server 멀티 테넌시 지원에는 테넌트별 구성을 담는 옵션이 추가되었다. 또한 API 버전 관리를 구현하는 간단하고 직접적인 방법이 도입되었다.

RAD Studio Florence 13.0 릴리스에서 RAD Server의 향상들에 대한 설명:

  • RAD Server Swagger API 문서; Swagger 및 OpenAPI 정의에 대한 스키마 및 참조 파라미터는 이제 선택 사항이다.
  • Swagger 응답 문서(response doc) 안에서 사용자 정의 헤더를 반환하는 옵션이 추가되었다. EndPointResponseHeaderAttribute 애트리뷰트를 사용하면 된다.
  • 새 SetBaseUrl 및 GetBaseUrl 메서드.
  • 이번 릴리스에서는, RAD Server 멀티 테넌시 지원에 테넌트별-고유한 구성(예: 데이터베이스 연결 등)을 담는 기능이 추가되었다. 이것은 비즈니스 로직이 수행되기 전에 설정된다. 구체적으로, 다음과 같은 기능이 추가되었다.
    • 테넌트 접두사가 붙은 서버 변수: 테넌트 접두사가 붙은 변수를 지정하면, 해당 값이 사용되도록 보장된다. 그렇지 않은 경우에는, 테넌트 접두사가 붙지 않은 변수가 사용된다.
    • BeforeRequest와 AfterRequest 메서드를 가지고 있는 IEMSResourceInterceptor 인터페이스.
  • RAD Server는 이제 동일한 API 함수의 여러 버전을 내보내는 기능을 지원한다. 따라서 클라이언트는 REST API를 호출할 때, 최신 버전 또는 (새로 추가된 새로운 ResourceVersion 애트리뷰트를 사용해) 보다 더 오래된 버전을 사용할 수 있다. 새 TEMSVersionStatus 값들로는 다음과 같은 것들이 있다.  
    • Experimental(실험적) - ver/myapi/…를 Base URL로 사용한다. 또한 "Experimental"이라고 Swagger 설명에 추가한다.
    • Active(활성) - ver/myapi/…를 Base URL로 사용한다.
    • Default(기본) - ver/myapi/… 그리고 myapi/…를 Base URL로 사용한다.
    • Deprecated(지원 중단) - ver/myapi/…를 Base URL로 사용한다. 그리고 "Deprecated"이라고 Swagger 설명에 추가한다.

15    기타 참고 (See Also)

15.1    참고자료

1 애니메이션 렌더링 간격을 제거한 이유는 이제 디스플레이의 화면 주사율과 일관되게 일치하기 때문이다. 애플리케이션은 60Hz, 90Hz 또는 120Hz 디스플레이가 장착된 기기에서 실행될 수 있다. 그리고 스크롤이 자동으로 더 부드러워진다. 으며, 수동으로 간격을 조정할 필요가 없다. 실행 중인 애니메이션은 화면의 새 프레임마다 지속적으로 업데이트(재계산)된다.

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

 


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...

중요한 정보

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