RAD Studio “Olympus” Beta Build 6259, July 29th, 2021 New Features Documentation

1 What’s new in this Beta 6 1.1 Known Issues In This Beta Build 7 2 Beta Installation and General Information 7 2.1 Supported Target Platforms 8 2.2 Third Party Beta components 8 2.3 How to log Beta bugs 9 2.4 LSP bugs 9 2.5 Exception stack trace reporting in the IDE 10 3 What’s New in RAD Studio “Olympus” 11 4 IDE Changes 12 4.1 Package Cache Disabled 12 4.2 Welcome Page 12 4.3 High DPI IDE 15 4.3.1 High DPI for the VCL Form Designer 17 4.3.1.1 Scaling 19 4.3.1.2 FAQ and Notes: 20 4.3.1.3 Questions for beta testers 20 4.3.1.4 Other notes 22 4.3.2 High DPI for the FMX Form Designer 23 4.3.3 Reporting High DPI Issues 23

Copyright © 2021 , Inc. | Embarcadero Confidential/NDA

4.3.4 New Icons 23 4.4 Open Tools API Changes 24 4.5 VCL Styles in the Designer 24 4.6 Form Designing and Code Editing 25 4.7 Options Dialog Performance 26 4.8 FireMonkey Design Guidelines and Margins 26 4.9 DelphiLSP for Visual Studio Code 27 4.9.1 Using DelphiLSP with a Delphi project in VSCode 28 4.9.1.1 Filing Bug Reports 31 4.9.2 Using DelphiLSP with Other Editors 31 4.9.2.1 Initialization 31 4.9.2.2 Configuration 35 4.10 Code Insight (DelphiLSP) Improvements 35 4.10.1 Classic Code Completion Removed 35 4.10.2 DelphiLSP 35 4.11 Warning for Build Events 37 4.12 Custom Port for Win64 Debugger 38 4.13 General IDE Changes 38 5 Delphi Improvements and New Platforms 40 5.1 New macOS ARM 64-bit Target Platform 40 5.1.1 Universal binaries 41 5.1.2 M1 Debugging Requirements 41 5.1.2.1 LLDB Python Requirement 41 5.1.3 MacOS Deprecations 42 5.1.4 Predefined Compiler Symbols for Apple Platforms 43

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

5.2 Binary Literals and Digit Separator 44 5.3 Inline assembler support for AVX instructions (AVX-512) 44 6 C++ ToolChain Improvements 45 6.1 New C++ Code Formatter 45 6.1.1 Manually 46 6.1.2 Format On Newline 46 6.1.3 Formatting Style 46 6.1.3.1 Preventing formatting 47 6.2 C++ / Delphi Compatibility 47 6.2.1 C++-compatible RTTI for Delphi types 47 6.2.2 Using smart pointers with Delphi classes 47 6.2.3 Other 48 6.2.4 Type conversions 48 6.2.4.1 Type conversions to and from strings 48 6.2.4.2 Assign a C++ string to a Delphi string 49 6.2.4.3 Assign a Delphi string to a C++ string, or get a string_view of a Delphi string 50 6.3 Exception handling 50 6.4 Other 50 7 VCL and FireMonkey Changes 50 7.1 TRichEdit Component updated to RichEdit 4.1 (MSFTEDIT.dll) 51 7.1.1 RichEdit URL detection 51 7.1.2 RichEdit Text Attributes Changes 52 7.1.3 RichEdit EM_FORMATRANGE 53 7.2 VCL Modernization Work 54 7.2.1 New Default Font 54

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

7.2.2 Memo and RichEdit Margins 54 7.2.3 Radiogroup without frame 55 7.2.4 DropDownWidth for TComboBox 55 7.2.5 TTreeView support for CheckBoxes 56 7.2.6 TWICImage multi frame support 58 7.2.7 New TLabelDBEdit component 58 7.2.8 Error Messages improvements 59 7.2.9 Coolbar Chevron support 59 7.2.10 NumberBox 60 7.2.11 Threading safety improvement 60 7.2.12 VCL StyleUtils.inc converted to a regular unit 61 7.2.13 Smaller Changes 61 7.3 FireMonkey 63 7.3.1 Better FMX Windows and desktop integration 63 7.3.2 FireMonkey Windows High-DPI improvements 63 7.3.3 Google Play Billing Library Version 4 64 7.3.4 Android 30 API support 64 7.3.5 Additional Improvements 65 8 RTL and Data 65 8.1 Platform Identifiers 65 8.2 RTL: TZipFile 66 8.3 RTL large data structures improvements 66 8.4 Record Helper for TDateTime 66 8.5 Record Helper for TCurrency 68 8.6 Bluetooth and BLE Improvements 68

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

8.7 Additional RTL Enhancements 68 8.7.1 Generic Collections Improvements 68 8.7.2 RTTI 69 8.7.3 PPL 69 8.7.4 Streams 70 8.7.5 Dates to String Conversion 70 8.7.6 Create a Interface Instance 70 8.7.7 TNoRefCountObject 70 8.7.8 Optimizations and Other 70 8.7.9 JSON 71 8.7.10 UTF8ToString Changes 71 8.8 FireDAC 73 8.9 Internet, HTTP and REST Client Libraries 73 8.10 Internet Server Technologies 75 9 Installer Changes 75 10 List of Publicly Reported Bugs Fixed 78 10.1 List of Bugs Fixed in previous Beta 81 10.2 List of Bugs Fixed in previous Beta 86 10.3 List of Bugs Fixed in previous Beta 90 10.4 List of Bugs Fixed in previous Beta 95 10.5 List of Bugs Fixed in previous Beta 102

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

1 What’s new in this Beta

● Welcome Page preview (incomplete) In this beta build ● Debugging macOS ARM apps requires Python from XCode (6259) ● Changes to Android support ● Other minor improvements and quality fixes

In previous beta ● Language selection in the minimal installed builds ● Support for Google Play Billing Library Version 3 ● High DPI IDE ○ and High DPI in the VCL Designer ● C++: ○ C++-compatible RTTI for Delphi types ○ Using C++ smart pointers with Delphi types ○ New C++ Code Formatter ● VCL TRichEdit Component updated to RichEdit 4.1 ● DelphiLSP: ○ DelphiLSP for Visual Studio Code ○ Delphi Classic Code Insight Removed ● Delphi macOS ARM 64-bit support ● Initial work for FMX Designer guidelines (partial) ● Delphi LSP improvements ● New IDE icons ● Preliminary implementation of VCL styles at design time ● Delphi language Binary Literals and Digit Separator support ● A large number of RTL, VCL, FMX, Data and Internet libraries improvements

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

1.1 Known Issues In This Beta Build

● The new Welcome Page is present, but not fully complete:

○ Information loaded from GetIt will not display, and it will show a spinning wheel only.

○ Similarly the buttons at the top do not work.

○ The fonts or general look and feel used in the lists are not final

○ The custom layout are not persistent if you restart RAD Studio

● New IDE icons are not final. Some have errors in the dark theme, and some others will be redesigned or replaced.

● Debugging macOS ARM apps may require some Python configuration. See the documentation below how to do this.

● Warning: Android applications use a new set of Java libraries. When you are creating a new project, it will have the correct references. When you are upgrading an Android project created with a previous version of RAD Studio, you need to update the Java libraries references manually, with these steps. See the section Android 30 API Support.

2 Beta Installation and General Information

The “Olympus” Beta can coexist with any previous version installation (like 10.4.x or 10.3.x) on the same machine or VM, but we recommend installing Beta versions on a separate machine or VM rather than on your primary development machine.

Hardware and requirements for installing and running “Olympus” are the same as 10.4 Sydney, listed here.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

2.1 Supported Target Platforms

RAD Studio “Olympus” is expected to support the following target platforms:

Supported Supported UI Languages Frameworks OS Supported Versions Target Platform Delphi C++ FireMonkey VCL

Windows 32-bit ✔ ✔ ✔ ✔ , Windows (SP1+), Windows Server 2019 and 2016 Windows 64-bit ✔ ✔ ✔ ✔

macOS Intel 64-bit ✔ ✔ macOS 11 Big Sur, 10.15 Catalina macOS ARM 64-bit ✔ ✔

iOS iOS14 iOS Device 64-bit ✔ ✔ ✔

Android 32-bit ✔ ✔ ✔ Android 11, 10, 9, 8.1 Android 64-bit ✔ ✔

Ubuntu 20.04 LTS and 18.04 LTS, RedHat Enterprise Linux Linux Intel 64-bit ✔ ✔1 Linux v8, WSL2 (Windows Subsystem for Linux)

2.2 Third Party Beta components

Third party components for previous versions of RAD Studio are generally not compatible with the “Olympus” Beta. You can use the Quality Portal RSB issue for sharing binaries or download links with other beta testers.

1 Via FMX Linux, now available from Embarcadero as part of RAD Studio.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

2.3 How to log Beta bugs

To log bugs found in the Beta, login to Embarcadero’s Quality Portal using your Embarcadero Developer Network (EDN) credentials.

Attention: Use your username to log in to EDN. Email address is not supported. If you are having trouble logging in, please contact [email protected]. Same if RAD Studio Beta is not in the Project dropdown list.

Click Create issue on the top bar and select RAD Studio Beta from the Project list:

Before logging a bug, please verify that the bug does not already exist in the system. Duplicate bug reports waste time for both the person logging the bug and the evaluator, who has to reproduce it to determine if it is similar to other bugs.

For any additional information on how to log bugs on Quality Portal, please review the RAD Studio Quality Portal user guide.

2.4 Delphi LSP bugs

If you find bugs in code completion or other Code Insight features, please include LSP log files. You can find full info about turning on logs for DelphiLSP here.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Note that log files include source code when a unit is modified in the IDE. Logs also grow fast, so please turn it on only for the time it takes to reproduce the issue (i.e. turn logging on, start the IDE, reproduce the issue, close the IDE, turn logging off.)

2.5 Exception stack trace reporting in the IDE

The IDE exception dialog no longer attempts to automatically send crash reports to our bug reporting system. Instead, it allows you to save the crash diagnostic to a file and provides links to our reporting system. When an exception occurs, you will see the following exception dialog:

Click Save to collect information on the error and save it to a file. You will see a progress bar showing the information collection status.

Then, the Save Report dialog opens and allows you to review and edit the information that was gathered, and save it to a file.

Click Save Report to save the crash report. Follow the steps in “How to log Beta bugs” above, describing the steps that led to the error, and then attach the crash report file that you previously saved.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

3 What’s New in RAD Studio “Olympus”

All new features provided in the “Olympus” Beta are not committed until completed and GA released. The remaining sections of the document describe features available in the current beta version and the issues that have been addressed so far, but there is no guarantee that any or each of these features and fixes will be part of the final shipping product (GA release).

As the product beta itself shows in terms of product name, we are currently planning to release the new version of RAD Studio as version 11.0, to match Microsoft’s version number change in the next version of Windows. For more information about the version number change please refer to this blog post.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

4 IDE Changes

4.1 Package Cache Disabled

The IDE has a ‘package cache’. Its purpose is to delay loading of packages until they are required. Most cached packages are component packages, and some packages can’t be cached (such as if they register a property editor for a type that affects other packages, like TStrings.) Normally a package would be loaded into memory, but the cache stores the component name, category and images, and the cached values are used in the Palette. The package for a component is then loaded when you drop that component on the form.

It’s been the cause of a number of bugs especially around component icons not refreshing (it stores icons in the registry), and in some cases can be a cause of slowdown loading projects.

The package cache is now disabled by default. In future, it may be removed completely. If you have experienced slowdowns opening projects, please test in this beta to see if those slowdowns are resolved.

4.2 Welcome Page

The old Welcome Page has been removed, and a new VCL-based Welcome Page has been added to the IDE.

Warning: In this version, the Welcome Page is incomplete and some parts are not fully functional. This includes the GetIt-based frames not displaying content, and the buttons at the top not doing anything when clicked. Please see the Known Issues section.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

The Welcome Page, with some customizations

The new Welcome page is designed to:

● Have multiple frames, which can be added, removed, or their position and size rearranged as you wish ● Scale well with high DPI ● Use our own technology (the previous Welcome Page used HTML and an embedded browser) ● Solve bugs in the old implementation, such as opening links in the default browser ● Have an open architecture. In this release, we are not publishing the interfaces (to allow for ‘bake time’, to ensure the interfaces provide everything they need) but we plan in future to publish the interfaces in the ToolsAPI allowing anyone to create a Welcome Page frame

The new Welcome Page will display when you start the IDE. The main things to test this release are:

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● The Create frame, which should display the same contents as File > New, and be able to be toggled between Delphi and C++ ● The Open Recent frame. As well as listing recent projects, it lists recent files. You can favorite any item in it which will display at the top. ● Editing the layout. Click the Edit Layout button on the bottom left of the Welcome Page. This opens a layout editor (see image below) ○ You can add and remove frames ○ Frames are placed in a grid. This is intended to allow a very flexible layout ■ You can add or remove rows and columns to this grid ■ Select a frame in the grid to move it, or to expand it vertically or horizontally

The Welcome Page Layout editor dialog box

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

4.3 High DPI IDE

The Delphi, C++Builder and RAD Studio IDE is now high-DPI enabled. By default, the IDE runs as DPI-unaware, as in previous versions. Running with high DPI enabled is currently a runtime option.

To run the IDE with high DPI support, run bds.exe on the command line or through a shortcut with the following flag:

>bds /highdpi:permonitorv2

Warning: In a future beta, and the final release, we plan to make high DPI enabled by default so that this command-line parameter will be unnecessary. Your feedback if this is the right decision is much appreciated.

Note: to force the IDE to run DPI-unaware, use:

>bds /highdpi:unaware

(or in the current beta, don’t use a command-line parameter at all.)

All windows in the IDE should now support high DPI. This includes behavior such as changing scale when being dragged from one monitor to another. IDE functionality includes:

● The IDE main window ● All dockable windows: Object Inspector, Projects, Structure, Messages, Breakpoint, Watch, Local Variable, Data Explorer, and so forth ○ All Object Inspector property editors ● All dialogs: New Items, IDE Options and Project Options (and all pages in those dialogs), Compile, About, and so forth

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● All content windows: the editor, form designers (more on these below), History, type library editor, and so forth.

Note: The code editor currently still uses Courier New 10pt as its default font. We’re considering setting the default to Consolas 10pt, and shipping other common coding fonts with the IDE. Your feedback on what fonts will be appreciated. The editor does not support ligatures in this version.

Attention: The HTML-based Welcome Page does not support high DPI. It will be replaced with a VCL-based implementation in a future beta.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

The FMX and VCL form designer support for high DPI is noted below. Please read it. The VCL designer support is complex and we seek beta feedback.

The IDE styles (Light, Dark and Mountain Mist) have been updated to support high DPI.

IDE images, including toolbar icons, the screenshots in the First Start dialog, and elsewhere have been increased in resolution.

The IDE internally uses a TImageCollection and multiple TVirtualImageList components, the same components we recommend for customer applications. All ToolsAPI that refer to images have been updated to pass multiple resolutions of an image (details in the ToolsAPI section below.)

Note: Some icons are beta quality (see note below) or not yet replaced, and in some areas, we have chosen not to update the icons or images to high-res in this version. That decision has been made only for rarely used areas of the IDE. If there is an area without high-res icons which you believe we should address, please file a bug report. Even without updated icons, all areas of the IDE should still scale correctly.

4.3.1 High DPI for the VCL Form Designer The most complex part of high DPI in the IDE is the form designer. By and large the rest of the IDE is the same as any other VCL app (with some exceptions) but the VCL designer is unique. There are significant technical challenges to having a window, such as a designed form, at a different DPI than the IDE it is hosted in. However, there are downsides to always scaling a form, such as having different values streamed to DFM due to the monitor it was opened and designed on, as well as loss of positioning precision if a form is repeatedly rescaled. We’ve done considerable research and prototyping to ensure we have a solution that addresses the multiple different needs that different development teams may have. We strongly seek your feedback on this solution and the best default behavior for the IDE.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

In RAD Studio 11.0, the VCL form designer can handle scaling three different ways.

High DPI settings in IDE Options > VCL Form Designer

Note: When changing the ‘VCL Designer High DPI mode’ setting, you need to close and reopen the designer for it to have effect. (We expect to change this in a future beta.)

First, the VCL designer can simply not scale the form at all (‘Low DPI (96 PPI)’). This leaves the designer running at 96PPI, the same pixel size as if the IDE were running DPI unaware. If the IDE itself is running high DPI then the designed form will appear smaller than you’d expect, because its pixel-size - its scaling - is 100% no matter the scaling of the IDE around it.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Note: ‘Low DPI’ is the default in this beta. You need to change this setting in order to test the VCL designer’s high DPI support. We expect to change the default in a future beta.

4.3.1.1 Scaling The other options both scale the form using the VCL’s perMonitorv2 scaling support, the same way a form is scaled at runtime, the support for which is now extended to designtime.

1. The easiest of the two options is to scale the designer with the monitor it is on (‘Automatic’). If the IDE is running at 200%, so is the designer: specifically, the form designer will scale the form to the same PPI as the display that the designer is placed on.

2. The other option is to lock a form to be designed at a specific PPI (‘User Editable’). For example, you can specify a form is always designed at 192PPI: this means that no matter the scaling of the screen your form designer is on, the designer will display and design that form at 200%. (If the monitor and this setting have different PPIs, the displayed form will appear relatively smaller or larger than other controls in the IDE.) The scale to use is a per-form setting and is currently controlled via the PixelsPerInch property in the Object Inspector.

These two settings scale the form at designtime just as it is scaled at runtime. This means that the pixel values of control size and location change in the DFM based on the PPI at which the form was designed. That is, when a form that was last designed at 96PPI (or unknown PPI, as for forms from previous version) is designed and saved at another PPI, Left, Height, Padding, etc. will all be saved in the DFM with a different value.

At runtime, the form is scaled from whatever its design PPI was to the display PPI. This uses the same system as before v11.0, except that in prior versions the design PPI was always assumed to be 96PPI.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Note: Frames are not scaled in this beta. They will only be scaled if they are placed on a form. We plan to address this in a future beta.

4.3.1.2 FAQ and Notes: ● TForm.Scaled must be set to True for scaling to take effect in the designer.

● If multiple team members design a form, the PPI at which they design it can be different each time the form is designed (based on their personal computer configuration.) This means that the form will rescale when it is opened for design, and saved and checked into source control with different pixel values. This may also mean loss of precision - controls’ position or size changing - if a form is repeatedly scaled up and down.

○ To mitigate this, we’ve added the ‘User Editable’ option: a team can use this option and set the PixelsPerInch property to ensure a form is always designed and saved at a specific PPI.

● The designtime PPI is stored in the PixelsPerInch property. If your IDE’s VCL design scaling is set to User Editable, this is a writable property. Enter a PPI value to scale the form to that PPI in the designer. If the IDE’s VCL design scaling is set to ‘Low DPI’ or ‘Automatic’, this property is IDE-managed and is read-only.

○ PixelsPerInch is an existing property. Its meaning is now overloaded. In the past, before 10.3 (where it stopped having meaning) it had meaning at runtime only, for a short time (it was used to initialize the CurrentPPI property for a control.)

4.3.1.3 Questions for beta testers Please test the following areas and consider the following questions.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

We have spent considerable time researching this before implementing, as well as testing, but this is an important and complex area. We suggest testing the following areas:

● A form originally designed on Windows 7’s ‘Large Fonts’ scaling (120PPI.) You may well have trouble designing such a form already because until v11 the form designer assumed 96PPI; what is the situation with this new behavior? What if you edit the DFM to set PixelsPerInch to 120? For your forms, is it already set to 120? ● A form designed in Delphi up to 10.2, where the PixelsPerInch property is set. Please also look at old versions - Delphi 7, for example. ● What happens if you move the designer between two monitors of different scales often? The VCL uses integer coordinates and so at runtime it is possible to lose positioning correctly - the same will happen at designtime. How should we handle this? ● Forms designed before v11.0. Do they display and design correctly with each of the designer settings? ● Forms designed at each of the three settings. Do they display and design correctly if you change the designer setting and reopen the form? ● If you have multiple team members with machines with different scaling, please test using the Automatic setting and then each editing the same form. Does this work well or does it cause problems for you, either in control positioning or in source control changes? ● If you design at high DPI, e.g. 200% or 250%, does your app behave and scale correctly when you run it at 100%?

There are some smaller areas that are not around the fundamental design but around UX or workflow which we’d also like feedback on:

● Which of the three designer scaling settings (Low DPI, User Editable, and Automatic) is the best default in the final release? Automatic is the easiest and makes the designer look ‘right’ when you first open it -- but given it can be a

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

different scale per developer, would that cause too many problems for teams or source control? ● Locking a form to a specific PPI is currently done on a per-form basis. Should this be an IDE-level setting? (Or project-level, but a form may be in multiple projects; we often avoid project-level settings for this reason and so we’d likely go IDE-level for this setting.) ● Should we change the User Editable behavior so that instead of editing a property in the Object Inspector, the designer scaling and form PPI are set elsewhere? (E.g., the FMX designer has a toolbar: some equivalent for the VCL designer, or controls near the form placement control in the bottom right.)

4.3.1.4 Other notes

The ‘Scale grid size / snap tolerance to design PPI’ setting affects the behavior of the visual grid on a form. (By default, this draws a dot every 8x8 pixels, though this is configurable.) When this checkbox is checked, the value (e.g. 8x8) is scaled the same as the form.

Note: Do you find this setting useful? If scaling, should the grid and snap always scale with the form scale?

The form positioner (in the bottom right of the form designer) supports high DPI.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

4.3.2 High DPI for the FMX Form Designer The FireMonkey designer scales a form the same way a FMX form does at runtime. Coordinates remain the same (that is, a button placed at (20, 20) will be at (20, 20) no matter the high DPI scaling of the monitor the FMX designer is on.) It is a visual scaling only.

4.3.3 Reporting High DPI Issues When filing bugs about high DPI issues, please include the following information:

● Windows version or build ● Both your scaling and resolution settings ○ Is it a multi-monitor system? Please include the specific scaling and resolution for each monitor ○ Depending on the issue, a screenshot of the display arrangement may be important as well:

● What graphics card is it? ● Are you running on a virtual machine, and if so which one (e.g. VMWare Fusion, Parallels, etc.)? ● Are you running over a remote desktop? ● Are there any other Windows settings that might affect the issue?

4.3.4 New Icons All new set of IDE icons (with multiple resolutions.) The IDE uses the virtual image list throughout. Note that some of these icons will be further replaced in a future beta, and that some icons have glitches (e.g. white backgrounds) in the dark style.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

4.4 Open Tools API Changes

All APIs that pass images, such as the splash screen services, about box, IDE Insight, and other areas have been updated to support high DPI images. Each interface has a new overload of relevant methods that take a TGraphicArray (defined as an array of TGraphic.) This allows you to pass in multiple resolutions of the same icon, which are added to the internal image collection and used with a virtual image list.

For example, IOTASplashScreenServices280 is the new splash screen interface for v11 and adds overloads for AddPluginBitmap and AddProductBitmap, where instead of passing a single HBITMAP you pass an array of images:

procedure AddPluginBitmap(const Caption: string; AImageArray: TGraphicArray; AIsUnRegistered: Boolean; const ALicenseStatus, ASKUName: string); overload;

Although the methods take an array of any TGraphic, we recommend PNG images.

Component vendors should update packages to use these new interfaces, so that logos and icons will draw crisply at high DPI. In addition, the enum type TOTACompileMode was incomplete (did not have all values it should have had) and has been fixed.

4.5 VCL Styles in the Designer

VCL controls can be optionally rendered using styles in the designer.

Warning: This feature is not enabled by default in the current beta and can be turned on in the Tools Options dialog, User Interface > Form designer section. The option name is “Enable VCL Styles”.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

The StyleName property editor reflects the available styles in the project, and renders a preview (how a button looks). Remember that if you select “Windows” it means platform styling and if you leave the property empty, it is going to use the parent control (or parent form) style.

Rather than using the classic Windows frame, the VCL form designer now has a custom Windows 10-style title bar and frame. This uses a Windows 10 style if no form style is set, or the frame reflects the selected style of the form if the form is set to use a VCL style, as you can see in the image above.

4.6 Form Designing and Code Editing

In 10.4.2, we introduced having the form designer and the code editor open in two edit windows. There were some bugs which have been resolved. In addition, we have made some behavior changes. Previously, the Design tab was disabled when a form was being designed in another window. Now, the tab is always enabled, but if it is being designed in another window a message is displayed; you can click a button to bring the designer to the current window.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

4.7 Options Dialog Performance

The Options dialogs (both IDE and Project Options) should load in a fraction of the time of previous releases.

This is implemented by lazy-loading the options panes. In the past, all pages were loaded when the dialog opened; now, a page is loaded (and controls created) only when it needs to be shown. All pages should be independent, but beta testing would be appreciated to ensure there are no unexpected interactions that this causes an issue with.

Third party vendors should be aware of this change for impact on their settings frames.

4.8 FireMonkey Design Guidelines and Margins

The FireMonkey designer in Olympus is introducing guidelines and other features found in the VCL designer, with a different implementation. Here are some of the new features:

1. Components hints are displayed for components and when you are moving or resizing them.

2. Controls offer guidelines for alignment on the sides (there is no plan to have a base text alignment, due to the complexity of text positioning for styled controls):

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

3. Controls display standard margins distance with a line across and distance indication when this matches margin or padding distance:

4. The form and component resize controls (grab handles when a control is selected, and the form or frame design edge to resize) have been changed to use the same look and feel as the VCL form designer.

4.9 DelphiLSP for Visual Studio Code

In RAD Studio 11 DelphiLSP can be used with other editors. As part of this, we have created a Visual Studio Code extension using DelphiLSP.

When we release Delphi 11 this extension will be placed on the Visual Studio Marketplace. For beta testing, it is available as a separate download at: altd.embarcadero.com/releases/studio/Beta/Olympus/delphilsp-vscode-1.0.0.zip

To install, locate the delphilsp-v1.0.0.vsix file, then follow these Stack Overflow instructions.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Visual Studio Code using the DelphiLSP extension, here providing code completion. Other features, such as navigation, hover, and so forth are also available.

4.9.1 Using DelphiLSP with a Delphi project in VSCode DelphiLSP needs to understand your Delphi project within a VSCode workspace. It does so by reading a JSON file containing key project settings. To generate this JSON file, turn on ‘Generate LSP Config’ in the Delphi Code Insight settings, and then open a project. The file will be created alongside the .dproj, with the same filename but a ‘delphilsp.json’ extension (e.g., the config file for myproject.dproj will be myproject.delphilsp.json.)

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Check this checkbox to generate the DelphiLSP JSON config files when a project is opened.

In Visual Studio Code, a workspace is a different concept to a project. When you open a workspace - say, open a folder which contains Delphi source - and open either a .pas or .dpr file, DelphiLSP will look for a project config file. (The extension is activated only when you open a Delphi source file, not when you open the folder or workspace.)

Notification shown when a project configuration file is found and loaded.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

If no config files are found, or if multiple are found, you will see a small prompt to choose one. Clicking this will take you to the plugin settings, which you can also open manually. Ensure you set the settings file path on the Workspace tab:

DelphiLSP settings in VSCode. The Workspace > Settings File setting must point at the .delphilsp.json configuration for your project.

The path to the Delphi LSP executable (See the User settings, not Workspace) should be automatically set, but if it is not then point it at the bin\delphilsp.exe file in your installation.

For more information on User vs Workspace settings, please see this VSCode documentation. Workspace settings override User settings, which is why the path the delphilsp.exe should be set in the User settings, but your current project configuration should be set in the Workspace settings.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Once configured, you should be able to use LSP features with your Delphi code in Visual Studio Code.

4.9.1.1 Filing Bug Reports To debug issues and file bug reports:

● Turn on logging: in the DelphiLSP settings, set Log Modes to 255 (a bitmask for all info). Logs are not written to file, but shown in VSCode. Thereafter, follow the same steps to file a DelphiLSP bug report as you would from within Delphi. Make sure you attach the .delphilsp.json file you are using. ● To see more of the communication within VSCode itself, you can also open the Output view: ○ Open the command palette and type "Focus Output View" ○ Select DelphiLSP in the drop-down menu ○ You should see log messages sent from the server to the client in real time

4.9.2 Using DelphiLSP with Other Editors Only the VSCode extension is supported. However, the following documentation may be useful if you want to test DelphiLSP with other editors.

DelphiLSP only communicates over standard (console) I/O.

4.9.2.1 Initialization

LSP allows custom initializationOptions within the initialize request. This is an example of a valid initialization request:

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

{

"jsonrpc": "2.0", "id" : 1, "method": "initialize", "params": { "processId": 4711, "rootUri": "file:///test/VSCode/Playgrounds", "initializationOptions": { "serverType": "controller", "agentCount": 2, "returnDccFlags": true, "returnHoverModel": true, "storeProjectSettings": false } } }

The fields are as follows: serverType

Defines the operation mode of DelphiLSP:

● "controller": The server will spawn agentCount DelphiLSP sub- processes (agents) that work with the controller in order to answer requests. The controller acts as a proxy between the IDE and the agents. When an agent terminates or stops responding to requests, the controller will replace it with a new fresh agent. Requests can be processed by multiple agents in parallel. (Note: We only support, and have only tested, configurations with up to two agent processes. One is used for Error Insight, and the other to handle all other LSP requests, such as code completion. This is one agent and one linter.)

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● "agent": The server runs in single process mode. The server can only handle one request at a time. It is not possible to get error insight (diagnostics) in this mode. ● "linter": The server runs in single process mode. The server cannot process any language feature requests such as code completion. It is dedicated to error insight. Errors, warnings and hints will be provided through the textDocument/publishDiagnostics notification

The default value is "agent". Use “controller” paired with an agentCount of 2 to get the same behavior as the Delphi IDE and the default behavior of the VSCode extension. agentCount

Defines the number of sub-processes to be spawned when serverType = "controller".

● agentCount <= 0: agentCount will be set to 1 ● agentCount = 1: One sub process with serverType = "agent" will be spawned ● agentCount > 1: [agentCount - 1] sub-processes with serverType = "agent" will be spawned. One sub process with serverType = "linter" will be spawned.

The default value is 2. returnDccFlags

If true then code completion items will carry some additional information from the compiler. The IDE uses this data to display types of code completion that are not defined in the LSP specification, such as procedure or type.

The default value is false. returnHoverModel

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

If true then textDocument/hover will return a JSON object instead of text/Markdown.

The default value is false. storeProjectSettings

If true then the settings sent through workspace/didChangeConfiguration will be generated and saved to %currentDelphiProject%.delphilsp.json. When DelphiLSP is used with a third-party editor then it can use this file to get project settings. See the configuration.settingsFile property.

This flag will only be evaluated when used by RAD Studio, and is how Delphi causes the .delphilsp.json file to be created.

The default value is false. enableFileWatcher

If true then DelphiLSP watches directories for changes in order to detect file modifications. If changes are detected, it refreshes based on the new contents of the file. This only has an effect for files that are not open in the editor: for files that are open in the editor, the editor is responsible for ensuring the LSP server has the current file contents.

The default value is true.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

4.9.2.2 Configuration

LSP allows custom settings within the workspace/didChangeConfiguration notification. This is an example of a valid notification:

{ "jsonrpc": "2.0", "method": "workspace/didChangeConfiguration", "params": { "settings": { "settingsFile": "file:///C%3A/Test/SampleProject.delphilsp.json" } } } settingsFile

URI of a .delphilsp.json settings file that has previously been created with storeProjectSettings enabled; that is, when the Delphi IDE ‘Generate LSP Config’ setting is checked in the Code Insight options.

The ability to load settings from a configuration file is only active when DelphiLSP is used by third party editors. When used from Delphi, the IDE communicates directly.

4.10 Code Insight (DelphiLSP) Improvements

4.10.1 Classic Code Completion Removed Delphi classic code completion has been removed from the IDE. Only the LSP option is available for Delphi Code Insight.

4.10.2 DelphiLSP We are aiming at improving Delphi LSP quality and adding some extensions to the features available in 10.4.2.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● DelphiLSP can locate include files. Failing to handle files included in Delphi units was the main known cause of projects that did work with classic code completion not working with DelphiLSP. We still do not support code completion inside a .inc file, but using a .inc file in a .pas file is now understood by DelphiLSP. ● DelphiLSP agent processes will terminate themselves when there is an AV in the compiler DLL. The controller process will create a new replacement agent. This means that if the server encounters an error, instead of staying unstable or not producing results, it will restart. ● Ctrl+Shift+Up/Down works when the method signatures are slightly different (such as when you have edited the parameters for a method, and want to go to the declaration in order to edit it to match) ● Code completion handles forwarded procedures ● Code completion now suggests arrays, when array items are compatible for assignment ● Fixed an issue where a didChangeNotification was not set to the server when a file was removed from a project ● Fixed an issue where ctrl-click navigation did not work when only DCP files were referenced ● Delphi code completion should now display reserved words and templates again (if enabled in the Options) ● Code Completion can complete on Tab key ● Error insight now working for include statements with relative paths ● Improvements to when a server is restarted, if the server crashes or stops responding ● Ctrl+Click now works when only a DCP is referenced ● An issue with the completion results for dereferenced pointers is resolved ● Completion works for identifiers starting with “Is”, and after “is” ● Better completion for type helpers, including the name shown in UI ● Issues around forward-declared methods resolved ● An issue where changes in a unit were not visible when completing is resolved ● Find Declaration works with type helpers with overloaded methods

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

4.11 Warning for Build Events

Build events can execute arbitrary commands on your system. It is common to get projects, which include build events, from third parties online.

RAD Studio now warns when a project contains a build event in any configuration (including one you are not currently building.)

Prompt notifying you this project contains build events. Click Yes to continue building; No to stop.

Check ‘Always trust this project’ to trust this project in the future as well, and you will never be prompted when you build this project again.

Trusted projects are stored by path in the registry, so if you move the project the IDE will prompt again. Projects are not stored by version, hash, or other data, so it is possible to mark a project as trusted, get a newer modified version (eg by pulling from remote source control), and not be warned even if a project has a build event it did not before. Therefore, this is a security mitigation intended to assist you, but must not be taken as fully preventative in all situations.

Note: Feedback on this feature is much appreciated. It is intended to improve security when using projects from potentially untrusted or potentially compromised sources.

Feedback on this feature is much appreciated. It is intended to improve security when using projects from potentially untrusted or potentially compromised sources.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

4.12 Custom Port for Win64 Debugger

The IDE and the Win64 debugger communicate via a socket, if that’s in use you’ll see an error as you start debugging.

In particular when WSL2 is installed (that is, Windows Subsystem for Linux), the Win64 debugger can fail saying ‘unable to create process’, or with a message that a port is in use.

To resolve this and similar issues, you can now define the DBK_DEBUG_PORT environment variable to override the default port number.

4.13 General IDE Changes

Most IDE work has been focused on high DPI, as covered above. Additional IDE improvements include:

In build 6121:

● The DesignIDEResources package is now available ● The default editor font is now Consolas, with a fallback of Fira Code. The First Use dialog also has an editor font setting on the first page. Note that the editor does not support ligatures, so advanced settings of fonts like Fira Code are not available. (Ligature or other advanced rendering support is not planned in this release.) ● The SVN UI packages are now marked runtime. These were originally designtime, so that they could be extended. ● The Code Insight progress bar is hidden once work is completed ● An issue where the IDE consumed very high numbers of GDI handles was resolved ● A bug where the scrollbar for the code completion window could remain on screen has been resolved ● An issue where the action list editor would not open if images were not assigned to the component has been resolved

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● A large number of high DPI issues have been resolved, in areas including the Object Inspector and property editors; dataset field list, assign dataset dialog, edit dataset dialog; data bindings; the breakpoint list; the virtual image list and image collection editors; and the Add Reference dialog.

In previous builds:

● Fixed a performance issue with the View Units dialog ● Fixed some localization issues ● Some crashes when running the IDE unthemed have been resolved ● VCL styles in the form designer are supported for non-visual components ● Mouse wheel scrolling is supported in Object Inspector dropdown lists ● Some stability issues around startup (caused by background loading of component images) have been resolved ● The "cursor position" status bar panel can be clicked to show the "go to line number" dialog ● The image collection editor now supports Ctrl+C to copy the selected image to the clipboard ● A bug where the mouse area that would close a tab did not fully correspond to the area the close button was drawn (it was offset by a pixel) has been resolved. ● ‘FireMonkey Metropolis Application’ is no longer listed in the New Items dialog. ● Fixed an issue where the IDE might look for the (old, and removed) Documentation page. ● An issue where the IDE flickered immediately after startup is now resolved, as is flicker when choosing ‘View Source’. ● An issue where opening the Load Process dialog twice in a row would cause a crash is resolved. ● Some German localization text truncation issues have been fixed, especially in the virtual image list editor. ● The Guided Tour package has been removed. ● The fonts in the navigation toolbar at the top of the code editor have been resized to follow the IDE font sizes.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● ‘View Messages’ has been restored to the code editor context menu ● The Library Path dialog now works well when resizing. ● Issues where some dialogs had the wrong control focused have now been resolved. ● Some more instances of TListView, which cannot be fully styled, have been replaced with the virtual treeview. ● The Select Platform, Build Tools, Go To Line Number, Open From Version Control, Select Remote Profile, Attach To Process, various list editor dialogs, Watch Editor, Evaluate, Breakpoint, Creation Order, Directory Select, Use Unit, Use Form, various wizards, Search and Search Progress dialogs now use the IDE-styled title bar. ● Fixed a number of styling issues, AVs, and miscellaneous bugs.

5 Delphi Compiler Improvements and New Platforms

In general terms, we are not expecting major Delphi language improvements in this cycle, given the focus on supporting a new platform (macOS 64 ARM) and compiler performance, also for the LSP backend.

5.1 New macOS ARM 64-bit Target Platform

Olympus supports a new Delphi target platform, macOS ARM 64-bit, to natively target the new M1 Apple Silicon CPUs with macOS 11. You can use this platform to build native M1 applications (of course this requires M1 hardware to run). We’ll keep our Intel 64-bit target support and the creation of Universal Binary applications including both ARM and Intel binaries in a single package.

By now, you should be able to create all types of supported applications: console applications, basic FireMonkey applications, FMX applications using features, and leverage the universal version of embedded InterBase, IBLite.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

5.1.1 Universal binaries You can create a universal binary containing both Intel and ARM code. To do so, ensure the target platform is macOS ARM 64-bit. In the Project Options (ensuring macOS ARM 64-bit is the current target) navigate to Building > Delphi Compiler > Compiling > Other, and check ‘Generate macOS universal binary file (x86_64 + arm64)’.

Notice that to obtain a universal binary you need to deploy the application. The deployment manager combines two binaries into one single “Universal” binary before transferring the application to the target macOS. You can find the universal binary file under the OSXARM64\Debug folder.

5.1.2 M1 Debugging Requirements

Attention: A different debugger is used for M1 ARM debugging than Intel debugging. This debugger’s evaluator does not support Delphi syntax. Evaluation, such as in the Evaluate/Modify dialog, Watches, and so forth need to be in C++ syntax. This means use of double-quotes for strings, and writing expressions as case-sensitive.

PAServer works on M1 Mac hardware. However, there are issues when debugging for the iOS/64 target on a M1 device.

5.1.2.1 LLDB Python Requirement PAServer uses LLDB on macOS ARM, which requires Python 3.9. The upcoming macOS Monterey will include Python, so we believe the following steps will only be required on Big Sur.

If you get the following error:

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

then you will need to configure Python on your machine.

Warning: In the past we recommended installing Python via HomeBrew. This is no longer required. If you no longer use it and want to remove it, you can type: brew uninstall python3

XCode includes Python 3.8.9. You can use XCode’s version by running the following commands in your terminal.

is normally /Applications/Xcode.app.

Open Terminal and run:

● cd /Application/PAServer-22.0/Contents/MacOS/lldb/lib/python3.9 ● sudo rm Python ● sudo ln -s /Contents/Developer/Library/Frameworks/Python3.framework/Versio ns//Python Python

If the is not /Applications/Xcode.app, you need to set PYTHONHOME to where the Xcode copy of Python is located before you launch PAServer. In your terminal:

● export PYTHONHOME="/Applications/Xcode 12.2.app/Contents/Developer/Library/Frameworks/Python3.framework/Version s/3.8" ● open /Applications/PAServer-22.0.app

5.1.3 MacOS Deprecations ● In the Olympus release, Macapi.QTKit unit is deprecated on macOS/X64, and it’s removed from macOS/Arm64 library, given Apple removed QTKit from macOS/Arm64.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● We removed the "Macapi.Quicktime" unit from the product for both the macOS/X64 and the Arm64 libraries.

5.1.4 Predefined Compiler Symbols for Apple Platforms The following symbols are major differences among three . Other predefined symbols are covered here.

Compilers Symbol dccosx64 dccosxarm64 dcciosarm64

CPU64BITS ✔ ✔ ✔

CPUARM ✔ ✔

CPUARM64 ✔ ✔

CPUX64 ✔

OSX ✔ ✔

OSX64 ✔ ✔

IOS ✔

IOS64 ✔

POSIX ✔ ✔ ✔

POSIX64 ✔ ✔ ✔

PIC ✔ ✔ ✔

EXTERNALLINKER ✔ ✔ ✔

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Historically, MACOS means “it is a Darwin platform”: all of Apple operating systems are Darwin variants. So, all macOS and iOS targeted Delphi compilers define MACOS (even if this sounds a bit confusing today, given that the current name of the operating system originally known as OS X is macOS -- our compiler level symbols will keep reflecting the original name).

5.2 Binary Literals and Digit Separator

The Delphi language in Olympus adds support for binary literals, in addition to decimal and hexadecimal ones. A binary literal uses the % symbol as a prefix (the same syntax used by other Pascal compilers): const Four = %100; var x: Integer; begin x := %1001001;

The language also introduces a digit separator that can be used to improve the readability of literal values with many digits. The separator is the underscore “_” and it is basically ignored when parsing and compiling the code. This is very similar to the feature introduced in C# 7.0. const AMillion = 1_000_000;

Of course, you can use the digit separators for binary literals.

5.3 Inline assembler support for AVX instructions (AVX-512)

We have introduced support for asm code for newer sets of instructions, including AVX2 (ymm) and AVX512 (zmm).

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Attention: You’d need an AVX-512 compatible CPU (like one of the recent INTEL CPUs) to test this feature. You can find more information at: https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX-512

6 C++ ToolChain Improvements

6.1 New C++ Code Formatter

The code formatter technology used for C++ has been completely replaced. Code formatting now uses clang-format.

The new formatter options are not found in IDE Options > Language > Formatter; that section now contains only Delphi formatting. To configure C++ formatting, go to Language > C++ > Formatting.

You can always format code manually, but you can also have the IDE automatically format your code when you save, or even as you type. These last two are controlled by the ‘Auto formatting’ setting. Set it to format on save, or format on newline.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

6.1.1 Manually To format code, press Ctrl+D. You will be prompted for confirmation. You can format either the whole file, or a selection.

6.1.2 Format On Newline A powerful feature in other editors is the ability to format code as you type. In C++Builder 11, the code editor can optionally format your C++ code each time you press Enter to add a new line.

Clang-format is not fast. The settings offer a max line limit for your code, after which auto-formatting will not occur. By default, this is set to one thousand (1000) lines.

6.1.3 Formatting Style Clang-format comes with several predefined formatting styles. Select which one you want to use.

In a future beta, we will have an Embarcadero style that formats following Embarcadero conventions.

The previous formatter had formatting settings inside the IDE Options, but for clang- format you can edit the configuration file or create a new one. Formatting settings are found in the *.clang-format files. The current configurations are inbuilt, but you can create a new configuration file in the \bin or your versioned RAD Studio AppData user folder (recommended), e.g.

C:\Users\YOU\AppData\Roaming\Embarcadero\BDS\22.0\

Information on how to write a clang-format file can be found here. You can base a file on a pre-existing configuration, including an inbuilt configuration, so making a format config that changes only one or two things is fast.

Files will be found by the IDE when next started and displayed as an option in the ‘Formatting style’ combo box. Edits to a config file will be applied every time formatting is invoked without needing to restart the IDE.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

6.1.3.1 Preventing formatting Surround code you do not want formatted with comments as follows:

// clang-format off Code here will not be formatted // clang-format on

A comment can be in single-line format (//) or multi-line (/* */). Turning it off via a comment pauses formatting until an ‘on’ comment is found. These comments themselves will be formatted.

6.2 C++ / Delphi Compatibility

This release has seen a focus on smoothing the integration between Delphi and C++. We now have C++-compatible RTTI available for Delphi types; you can use make_shared on a Delphi type, and there are type conversions to assist in using Delphi types in C++.

6.2.1 C++-compatible RTTI for Delphi types In the past, C++ type information was not available for Delphi types; that is, accessing the result of typeid(delphi-type) where delphi-type is a type that comes from Pascal code, or is a Delphi-style class in C++, would result in an AV. Note that typeid returns a std::typeinfo for a type simply, or if it’s a polymorphic type for the most- derived type of that instance. typeid() now returns a std::typeinfo, and C++-compatible RTTI is generated for Delphi types.

6.2.2 Using smart pointers with Delphi classes

You can now use both std::make_unique and std::make_shared on a Delphi-style class (one defined in Delphi, or in C++ but inherited from one defined in Delphi.) This avoids having to write code like:

auto a = std::shared_ptr(new TObject());

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

where ‘new’ is bad C++ style, and you would normally want to use the make_shared method.

You can now write,

auto a = make_shared();

6.2.3 Other The Clang compiler now emits a warning when an interface does not derive from IUnknown.

6.2.4 Type conversions The RTL now includes helper methods for type conversions between Delphi types and C++ (and Delphi) strings. This includes conversions from TDateTime to string types, as well as being able to easily convert (assign) from a C++ string to a Delphi string, and use std::string_view on a Delphi string.

We’re very interested in your feedback on these changes.

6.2.4.1 Type conversions to and from strings The classic compiler performed some conversions from some Delphi types to string implicitly. This was incorrect by the C++ standard, and we have not mimicked that incorrect behavior in the Clang computer -- but it is very useful to be able to convert easily and so we have added methods to convert types in a C++ish way, following the example set by std::to_string.

There are now to_string() and from_string() methods for many types to convert to and from strings (UnicodeString, WideString and AnsiString, including templated by codepage), which you can use as follows, here for a Currency value:

String str; Currency curr; TFormatSettings fs;

to_string(str, curr, fs);

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

from_string(curr, str, fs);

These methods exist for the following types:

● Currency ● TDateTime ● 32 and 64-bit signed and unsigned integer types ● Floating point types (as Extended) ● Variants

6.2.4.2 Assign a C++ string to a Delphi string Direct C++ string to Delphi string assignment works through the string_view constructor:

String str;

std::string std_str("Hello World!"); str = std_str;

std::wstring std_wstr(L"abcdefghijklmnopqrstuvwxyz"); str = std_wstr;

std::u16string std_u16str(u"große Straße"); str = std_u16str;

std::u32string std_u32str(U"sehr kleine Straße"); str = std_u32str;

Or constructing an AnsiString:

AnsiString str;

std::u16string std_str(u"Hello World!"); str = std_str;

std::u32string std_str(U"Hello World!"); str = std_str;

std::wstring std_str(L"abcdefghijklmnopqrstuvwxyz"); str = std_str;

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

This means you no longer need to assign from the various string types by constructing using c_str().

6.2.4.3 Assign a Delphi string to a C++ string, or get a string_view of a Delphi string You should also be able to assign a C++ string from a Delphi string the same way, since you can get a string_view for a Delphi string:

ShortString str("Hello World!"); std::string_view view(str);

AnsiString str("Hello World!"); std::basic_string_view view(str);

UnicodeString str(L"СЛАДКОЕ"); std::basic_string_view view(str);

6.3 Exception handling

A large number of exception handling issues have been resolved. Please refer to the fix list at the end of this document.

6.4 Other

● You can now attach to a process using the C++ Win64 debugger ● An issue where batch compilation for a project ignored .c files has been resolved

7 VCL and FireMonkey Changes

In Olympus we have done (and are still doing) a large collection of small improvements to the VCL library, focused on removing some remaining XP legacy and inconsistencies with Windows 10 and improving core library features.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

7.1 TRichEdit Component updated to RichEdit 4.1 (MSFTEDIT.dll)

In this release we updated the implementation of the VCL TRichEdit component to support a more recent version of the platform control. By doing so we have made a available directly in the VCL component many new platform features, including:

● Transparent richedit controls: When the new property Transparent is set to True the richedit becomes transparent -- its background is replaced by whatever is beneath it. When it is set to False, it behaves as normal, with its background filled with Color. ● URL detection, tooltips and link clicking (see below for more information) ● Spell checking: There is a new property SpellChecking; when set to True the richedit automatically offers native spell checking abilities (on or later) ● Subscript and superscript text attributes ● Background color ● Scroll position tracking (new property ScrollPosition: TPoint) ● Changing margins ● Other missing attributes (see below) ● EM_FormatRange support (see below)

Additionally, TDBRichEdit.Lines is now a public property

7.1.1 RichEdit URL detection RichEdit URL detection is made available with the following new features:

● EnableURLs turns on automatic URL detection in the richedit control. It recognises URLs with known protocols (e.g. http://google.com) or that start with www. (e.g. www.google.com). ● ShowURLHint, when set to True, causes tooltips to be automatically displayed when the mouse is over a URL. ● SetSelTextToFriendlyURL replaces the selected text (starting at position SelStart and running for SelLength characters) with a friendly hyperlink - any text you like (Text) that is a hyperlink to a specified URL (URL)

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● When a URL in the richedit is clicked with the left or right mouse button the OnLinkClick event fires, passing the URL and an indication of which button was pressed.

7.1.2 RichEdit Text Attributes Changes TTextAttributes now has additional properties, and some properties have slightly different definitions (only in terms of their property indices so will not affect usage). Here are the full set of properties:

property BackColor: TColor read GetBackColor write SetBackColor; property Bold: Boolean index CFE_BOLD read GetStyleElement write SetStyleElement; property Charset: TFontCharset read GetCharset write SetCharset; property Color: TColor read GetColor write SetColor; property ConsistentAttributes: TConsistentAttributes read GetConsistentAttributes; property Disabled: Boolean index CFE_DISABLED read GetStyleElement write SetStyleElement; property Height: Integer read GetHeight write SetHeight; property Hidden: Boolean index CFE_HIDDEN read GetStyleElement write SetStyleElement; property Italic: Boolean index CFE_ITALIC read GetStyleElement write SetStyleElement; property Link: Boolean index CFE_LINK read GetStyleElement write SetStyleElement; property Name: TFontName read GetName write SetName; property Offset: Integer read GetOffset write SetOffset; property Pitch: TFontPitch read GetPitch write SetPitch; property Protected: Boolean index CFE_PROTECTED read GetStyleElement write SetStyleElement; property RevAuthor: Byte read GetRevAuthor write SetRevAuthor; property Size: Integer read GetSize write SetSize; property Strikeout: Boolean index CFE_STRIKEOUT read GetStyleElement write SetStyleElement; property Style: TFontStyles read GetStyle write SetStyle; property Subscript: TSubscriptType read GetSubscript write SetSubscript;

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

property Underline: Boolean index CFE_UNDERLINE read GetStyleElement write SetStyleElement;

The new ones are BackColor, Disabled, Hidden, Link, Offset, RevAuthor and Subscript.

TConsistentAttribute in Vcl.ComCtrls.pas now has a new member: caCharSet. This relates to the TTextAttributes.CharSet property.

There are also new types used by TParaAttributes: cpaAlignment, cpaNumbering, cpaFirstIndent, cpaLeftIndent, cpaRightIndent, cpaTabStops.

TParaAttributes has a new property, ConsistentAttributes

This operates similarly to TTextAttributes.ConsistentAttributes in that it returns consistent paragraph attributes from the current selection. The values are described as follows:

● cpaAlignment: Alignment is consistent in the selection ● cpaNumbering: Numbering is consistent in the selection ● cpaFirstIndent: FirstIndent is consistent in the selection ● cpaLeftIndent: LeftIndent is consistent in the selection ● cpaRightIndent: RightIndent is consistent in the selection ● cpaTabStops: Tab settings are consistent in the selection

Additionally, Vcl.ComCtrls.TTextAttributes now has 4 extra Boolean properties to complement Vcl.ComCtrls.TTextAttributes.Style, which allow the individual style attributes of bold, italic, strikeout and underline to be read or written independently:

● property Bold: Boolean ● property Italic: Boolean ● property Strikeout: Boolean ● property Underline: Boolean

7.1.3 RichEdit EM_FORMATRANGE TCustomRichEdit now has a new public method:

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

function RenderRange(RenderTarget: TCanvas; FormatTarget: TCanvas = nil; RangeStart: Integer = 0; RangeEnd: Integer = -1; MeasureOnly: Boolean = False): Integer;

This provides an alternative to the general purpose Print method allowing custom ranges of the rich edit content to be rendered to any specified TCanvas. The parameters are as follows:

● RenderTarget: a canvas representing the device to render to, if RenderRange is being used to send output to a device, so Printer.Canvas is typically used here, but might be something else if building a print preview window. ● FormatTarget: a canvas representing the target device to format for, so typically Printer.Canvas. If this parameter is nil (the default value) then it defaults to the same as RenderTarget. ● RangeStart: the character position index immediately preceding the first character in the range to be rendered by this call. The default value of 0 indicated the beginning of the richedit control's content. ● RangeEnd: the character position immediately following the last character in the range to be rendered by this call. The default value of -1 indicates the last character in the richedit control's content. ● MeasureOnly: if False (the default) then the text is rendered, if True the text is just measured.

7.2 VCL Modernization Work

7.2.1 New Default Font For VCL applications, the default font is now Segoe UI 9. The title font of the VCL styles is getting adapted to the same default font.

7.2.2 Memo and RichEdit Margins New property in TCustomMemo, published in TMemo, TDBMemo, TRichEdit, TDBRichEdit:

property EditMargins: TEditMargins read FEditMargins write SetEditMargins; where TEditMargins is a type whose public interface is:

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

TEditMargins = class(TPersistent) public procedure Assign(Source: TPersistent); override; property OnChange: TNotifyEvent read FOnChange write FOnChange; published property Left: TMarginSize read FLeft write SetLeftMargin default 0; property Right: TMarginSize read FRight write SetRightMargin default 0; property Auto: Boolean read FAuto write SetAutoMargin default False; end;

EditMargins.Left and EditMargins.Right allow you to set a specific left and/or right margin on a multiline edit control. EditMargins.Auto sets EditMargins.Left and EditMargins.Right to 0 and allows the control to set its own narrow margins based on its font.

However it should be noted that richedit controls do not respond effectively to EditMargins.Auto, simply setting their left margin to 0. It is currently unclear why this happens.

7.2.3 Radiogroup without frame In TCustomGroupBox we have this public property published in TGroupBox:

● ShowFrame controls whether the groupbox frame is drawn or not

● HeaderFont is the font used to render the group caption, as drawn in the top of the group frame. By default, it is the same as Font and any changes to Font are reflected by the same changes happening to HeaderFont

● DefaultHeaderFont defines the relationship between HeaderFont and Font. When HeaderFont is edited, DefaultHeaderFont becomes False and further changes to Font are not made to HeaderFont. Setting HeaderFont to True makes HeaderFont revert to mirroring Font

7.2.4 DropDownWidth for TComboBox There are two new properties in TCustomComboBox and descendants (public in the TCustomComboBox class, published in the TComboBox class):

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

property AutoDropDownWidth: Boolean read FAutoDropDownWidth write FAutoDropDownWidth default False; property DropDownWidth: Integer read GetDropDownWidth write SetDropDownWidth stored IsDropDownWidthStored;

● DropDownWidth allows you to customize the minimum width of the combobox's dropdown list. If anything less than the combobox width, then you will see no difference. Larger sizes allow the list to be wider than the combobox for wider strings. If the wider list might spill off the edge of the screen then the list is shifted so that the right list edge is below the combobox right edge and the extra width extends out to the left past the left edge of the combobox.

● AutoDropDownWidth when set to True causes the dropdown list width to be automatically set to as wide as the widest string in the combobox items.

7.2.5 TTreeView support for CheckBoxes TTreeNode defines these new properties: property Checked: Boolean read GetChecked write SetChecked; property CheckState: TNodeCheckState read GetCheckState write SetCheckState; where TNodeCheckState is:

TNodeCheckState = (ncsNone, ncsUnchecked, ncsChecked, ncsPartial, ncsDimmed, ncsExclusion);

Assuming checkboxes are enabled (see TCustomTreeView.CheckBoxes) the check state of a given node can be queried or set with CheckState. Checked is a shortcut property to either find if the check state is ncsChecked or not, or to set the check state to either ncsChecked or ncsUnchecked.

Note that if you try to set a check state that is not appropriate based on the current value of TCustomTreeView.CheckStyles, or is invalid thanks to TCustomTreeView.CheckableItems being False then an exception is raised.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

TCustomTreeView defines these protected members: procedure DoCheckStateChanged(Node: TTreeNode; CheckState: TNodeCheckState); virtual; function DoCheckStateChanging(Node: TTreeNode; NewCheckState, OldCheckState: TNodeCheckState): Boolean; virtual; property CheckableItems: Boolean read FCheckableItems write SetCheckableItems default False; property CheckStyles: TCheckStyles read FCheckStyles write SetCheckStyles default []; property OnCheckStateChanged: TTVCheckStateChangedEvent read FOnCheckStateChanged write FOnCheckStateChanged; property OnCheckStateChanging: TTVCheckStateChangingEvent read FOnCheckStateChanging write FOnCheckStateChanging;

These of the above are published by TTreeView: property CheckableItems; property CheckStyles; property OnCheckStateChanged; property OnCheckStateChanging;

The above relies on these types:

TCheckStyle = (csPartial, csDimmed, csExclusion); TCheckStyles = set of TCheckStyle; TTVCheckStateChangedEvent = procedure(Sender: TCustomTreeView; Node: TTreeNode; CheckState: TNodeCheckState) of object; TTVCheckStateChangingEvent = procedure(Sender: TCustomTreeView; Node: TTreeNode; NewCheckState, OldCheckState: TNodeCheckState; var AllowChange: Boolean) of object;

When the CheckableItems property is set to True the treeview gets checkboxes against each node, where the checkbox state is available as a value of type TNodeCheckState given by TTreeNode.CheckState and defaults to ncsUnchecked. By default these are simple 2-state checkboxes, with states of ncsChecked and ncsUnchecked.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

However, there are three optional extra states that can be introduced using the treeview's set property CheckStyles:

● csPartial (a small square in the checkbox) ● csDimmed (a dimmed checkmark) ● csExclusion (a cross)

You can select any combination that makes sense for your application and when a node checkbox is clicked sufficiently to yield one of these states they are represented by the TNodeCheckState values ncsPartial, ncsDimmed, and ncsExclusion.

When a checkbox is clicked and its state changes the component first fires the OnCheckStateChanging event, which is passed the old (current) and new check state and gives the opportunity to stop the check state change occurring through its AllowChange var parameter. Assuming the change is allowed then the OnCheckStateChanged event fires passing the new check state.

7.2.6 TWICImage multi frame support TWICImage multi frame support, there are 2 new properties in type TWICImage defined as FrameCount and FrameIndex.

You set FrameIndex to indicate the desired frame from a multi-frame image (such as a multi-frame TIFF file). When loading from the image file that frame is loaded if it exists or an EInvalidOperation exception is raised; FrameIndex defaults to 0, which is valid on images without multiple frames.

When a TWICImage loads a file (or, technically, loads a frame from a file), FrameCount will tell you how many frames are in the file.

These two properties together allow you to read all valid frames in a multi-frame image file.

7.2.7 New TLabelDBEdit component There is now a data-aware version of the TLabeldEdit VCL control. To implement it, the hierarchy of the related controls has changed:

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● TCustomLabeledEdit ○ inherits from TCustomMaskEdit ○ new properties: Align, EditMask, etc. inherited from TCustomMaskEdit ● TDBEdit ○ inherits from TCustomLabeledEdit ● TDBLabeledEdit ○ new control that inherits from TDBEdit

Additionally, Olympus adds support for the TLabeledEdit control in the TFlowPanel and TGridPanel containers.

7.2.8 Error Messages improvements ● In case of an error creating a form from a stream, the error message now includes the form file name. ● The Exception Dialog has an extra “Copy” button to copy the error message to the clipboard (the copy operation was already working after selecting the text of the label, but it wasn’t intuitive)

7.2.9 Coolbar Chevron support Coolbar has Chevron support via a new Boolean property ShowChevron.

● When set to True this property helps ensure the user can access hidden buttons. In the case where a TCoolBand in a TCoolBar contains a TToolBar with Wrapable set to False, then if the band is shrunk so that 1 or more tools buttons on the TToolBar are either not visible or not completely visible a

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

chevron is drawn on the band. Clicking the chevron pops up a popup menu containing items representing all tool buttons that are partly visible or not.

7.2.10 NumberBox The TNumberBox class introduced in 10.4.2 has a few additional features:

● CurrencyFormat type is changed from Byte to TNumberBoxCurrencyFormat. ● There is a new ValueCurrency property. ● The DisplayFormat property is now published.

7.2.11 Threading safety improvement

In general, UI controls should be created in the main UI thread. If you create a VCL control in a background thread, the behavior is undefined and can lead to fairly obscure access violations.

For this reason, there is a new class property:

TControl.RaiseOnNonMainThreadUsage

When this property is True, the VCL will raise an exception in case a TWinControl window handle is created in a thread that’s not the main thread. This prevents issues when this is done by accident. In COM scenarios and other cases, the creation of a handle in a secondary thread might be legitimate and so it remains allowed.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

7.2.12 VCL StyleUtils.inc converted to a regular unit The include file StyleUtils.inc has been converted to a regular unit, allowing developers (and component vendors) to better integrate their code with VCL styles support. The previous include file, in fact, defined private types generally impossible to modify and extend, unlike the new unit.

Warning: While we agreed to move the code to a unit, making some data types public and accessible, we reserve the right to make changes to this style API and cannot guarantee the same level of compatibility with external code that the VCL and RTL libraries generally provide.

Attention: While the new DCU files are being delivered, the source code is not part of the installation. We’ll address this issue.

7.2.13 Smaller Changes

● Common dialogs how expose the properties EncodingIndex and ShowEncodingList (which controls whether the dropdown encoding list is enabled and therefore available for use)

● OnTracking event for TTrackbar (triggered when the thumb position on a trackbar is changing).

● Options to skip disabled in TPageControl.FindNextPage with an additional CheckTabEnabled parameter.

● TButtonCategory has a VisibleGutter property.

● TDateTimePicker and TRichEdit display properly when not enabled.

● TScrollBox, in this release, automatically supports the mouse wheel -- notice this change might affect the behavior of existing applications in unwanted ways, as the new default is to activate mouse wheel scrolling for controls without the focus.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● VCL function ScaleImage supports Alpha Channel.

● TVirtualImageList.Images has a proper property setter.

● TTreeNode offers support for nsDropHilited state.

● Default form size is now bigger.

● SetSelText and SetSelTextBuf offer the option not to reset the Undo buffer.

○ This is managed by a new property CanUndoSelText. It is False by default, which maintains backwards compatibility. If set to True it allows Undo to be called (or an Undo operation to be invoked with the UI) to undo a change made with calls to SetSelText or SetSelTextBuf or by assignments to the SelText property.

● Some small TEdgeBrowser improvements.

● TCustomTitleBarPanel now has TitleButtonClose, TitleButtonRestore, TitleButtonMin properties, and a OnUpdateTitlebarButtons event.

● TDateTimePicker allows changing both date and time together in UI

● A TPngImage object handles Assign to and from a TWICImage object

● TWinControl now supports LockDrawing and UnlockDrawing, triggering the execution of the WM_SETREDRAW Windows message:

○ Method TWinControl.LockDrawing disables control updating

○ Method TWinControl.UnlockDrawing enables control updating

○ property TWinControl.IsDrawingLocked returns True if LockDrawing was called (and UnlockDrawing was not called)

○ property TWinControl.RedrawDisabled returns True when the Win32 control drawing is disabled

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

7.3 FireMonkey

For FireMonkey we have focused on some core refactoring, with particular focus on desktop and Windows in particular.

7.3.1 Better FMX Windows and desktop integration ● Platform services for macOS and Windows refactored into separate units ○ IFMXMultiDisplayService, IFMXScreenService, IFMXDeviceMetricsService, IFMXFullScreenWindowService ● Refactoring of: ○ IFMXSaveStateService ○ IFMXDeviceService ○ IFMXVirtualKeyboardService ○ IFMXTimerService ○ IFMXLoggingService ○ IFMXMenuService ● Extended IFMXMultiDisplayService and TDisplay. ● Extracted all metrics related services into FMX.Platform.Metrics.* units. ● Constraints size for forms.

7.3.2 FireMonkey Windows High-DPI improvements Screen service in FMX used to work in DP on all platforms except Windows. This means TForm.Left, Top, Width and Height works in DP on all platforms except Windows. TForm.Top, TForm.Left in a PX on Windows at the same time TForm.Width and TForm.Height works in DP. So, some properties like Bounds returned a really wrong and strange result (position in px, size in dp in one entity).

The same is about Screen entity, it worked in DP on all platforms except Windows. As a result, the logic that is tied to the positioning of forms completely does not work correctly on Windows: This is all related to the popup form display also, styled border and etc. (there were a set of reports about issues of working popups, forms, form styled border on HiDPI screens).

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

So for fixing these issues, we standardized the work of the screen service and form positioning. Starting with 10.4.2 it works the same as for other platforms. So these changes were intentional. Now we have further extended this change.

Specific changes for this area:

● Switch from pixels to device independent units (PX to DP), extend IFMXMultiDisplayService ● Fixes to many related issues with features, dragging, positioning… ● Refactoring of TWindowBorderWin ● TControl has new methods for coordinate conversions: ○ ScreenToLocal/LocalToScreen ○ ConvertLocalPointFrom/ConvertLocalPointTo

7.3.3 Google Play Billing Library Version 4 The Olympus beta offers support for the latest version of Google’s Billing API, an update that’s becoming mandatory later this year for Play Store apps (the final deadline is November ‘21).

The new API is integrated seamlessly with the FMX library and your code should adapt easily to the new API.

7.3.4 Android 30 API support Android API 30 support includes the following changes

● Support to target Android API 30 (a Google Play Store requirement for 2021) ● We also migrated from the old “Support Library” libraries to the new “AndroidX” libraries

Also, for Android, RAD Studio now supports the “multidex” feature (which allows your app to generate multiple “classes.dex” files) and uses the newer “D8” DEX compiler instead of the old “DX” one to compile Java bytecode into DEX one.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

The new releases include a different set of Java libraries and this makes old projects incompatible. When you open an Android project build with an older version of RAD Studio you need to:

● Navigate to the Projects dockable window. ● Select Android 32-bit or Android 64-bit as the active target platform. ● Right-click on the Libraries node. ● Click on the Revert System Files to Default menu item.

7.3.5 Additional Improvements ● Firemonkey Accessibility Pack is now integrated in the core product (rather than being a separate download) ● Improved Z-Order management for combinations of styles and platform controls ● Removed old deprecated non-scoped enumerated values (that is the FMX Helper classes added to support deprecated enumerations in 2014) ● Support for file upload in TWebBrowser on the Android platform

8 RTL and Data

There are many improvements in the core RAD Studio libraries. Here we are providing a summary of the key changes across RTL, FireDAC, HTTP and REST client libraries and more.

8.1 Platform Identifiers

RTL adds a new platform identifier, pidOSXArm64 for the macOS/Arm64 platform.

Also, the existing pidAndroid32Arm and pidAndroid64Arm identifiers are now obsolete. These are replaced by the new pidAndroidArm32 and pidAndroidArm64, as we have normalized all platform names:

All platform related identifiers use the same format and order of the compilers:

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

8.2 RTL: TZipFile

We have focused on ZIP files (that is, the TZipFile class of the RTL) quality, improvements, and optimizations. Among others we addressed the following requests:

● TZipHeader has a GetFileName method ● Added support for Zip64 ● Added a method to remove a file in TZipFile ● TZipFile.IsValid() now accepts a stream parameter ● System.Zip improved to work with files larger in size than 4 GB

8.3 RTL large data structures improvements

We have made a few improvements in the use of proper data types for larger memory structures under 64-bit compilers. For example, TMemoryStream in 64-bit supports data structures larger than 2 GB.

Related to this, we added the new method TThread.GetTickCount64 (while the existing TThread.GetTickCount, returning a 32-bit value, remains in the RTL for compatibility).

8.4 Record Helper for TDateTime

There is a new record helper for TDateTime, which includes a “UTC Now” function (not available in the original Date RTL), actually called NowUTC.

The helper is in the System.DateUtils unit and includes the following (mostly self- explanatory) long list of methods:

● Now, NowUTC, Today, Yesterday, Tomorrow ● GetDate, GetTime, ● IsInLeapYear, IsPM, IsAM, IsToday, IsSameDay

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● WeeksInYear, DaysInYear, DaysInMonth ● GetYear, GetMonth, GetWeek, GetDay, GetHour, GetMinute, GetSecond, GetMilliSecond ● StartOfTheYear, EndOfTheYear, StartOfTheMonth, EndOfTheMonth, StartOfTheWeek, EndOfTheWeek, StartOfTheDay, EndOfTheDay ● WeekOfTheYear, DayOfTheYear, HourOfTheYear, MinuteOfTheYear, SecondOfTheYear, MilliSecondOfTheYear, WeekOfTheMonth, DayOfTheMonth, HourOfTheMonth, MinuteOfTheMonth, SecondOfTheMonth, MilliSecondOfTheMonth, DayOfTheWeek, HourOfTheWeek, MinuteOfTheWeek, SecondOfTheWeek, MilliSecondOfTheWeek, MinuteOfTheDay, SecondOfTheDay, MilliSecondOfTheDay, SecondOfTheHour, MilliSecondOfTheHour, MilliSecondOfTheMinute ● WithinPastYears, WithinPastMonths, WithinPastWeeks, WithinPastDays, WithinPastHours, WithinPastMinutes, WithinPastSeconds, WithinPastMilliSeconds ● YearsBetween, MonthsBetween, WeeksBetween, DaysBetween, HoursBetween, MinutesBetween, SecondsBetween, MilliSecondsBetween ● DateTimeInRange, DateInRange, TimeInRange ● YearSpan, MonthSpan, WeekSpan, DaySpan, HourSpan, MinuteSpan, SecondSpan, MilliSecondSpan ● IncYear, IncMonth, IncWeek, IncDay, IncHour, IncMinute, IncSecond, IncMilliSecond, AddYear, AddMonth, AddWeek, AddDay, AddHour, AddMinute, AddSecond, AddMilliSecond ● Encode, Decode, EncodeWeek, DecodeWeek, EncodeDay, DecodeDay, EncodeMonthWeek, DecodeMonthWeek, TryEncode, TryEncodeWeek, TryEncodeDay, TryEncodeMonthWeek ● SetYear, SetMonth, SetDay, SetHour, SetMinute, SetSecond, SetMilliSecond, SetDate, SetTime, SetDateTime ● CompareDateTime, SameDateTime, CompareDate, SameDate, CompareTime, SameTime

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● NthDayOfWeek, DecodeDayOfWeekInMonth, EncodeDayOfWeekInMonth, TryEncodeDayOfWeekInMonth ● ToJulianDate, SetJulianDate, TrySetJulianDate, ToModifiedJulianDate, SetModifiedJulianDate, TrySetModifiedJulianDate ● ToUnix, SetUnix ● ToMilliseconds, TimeToMilliseconds ● SetISO8601, TrySetISO8601, ToISO8601, SetHttpDate ● ToString, Format

The helper also introduces the following properties for TDateTime: Day, Month, Year, Hour, Minute, Second.

8.5 Record Helper for TCurrency

This release also introduces a helper for the TCurrency data type in Delphi, TCurrencyHelper, similar to the TDoubleHelper. The helper has the methods ToString, Frac, Ceil, Floor and Trunc. It also defined class functions Size, ToString, Parse, and TryParse.

8.6 Bluetooth and BLE Improvements

We have focused on improving quality in this area for all platforms making sure all the core demos work as expected after fixing several open issues. Improvements include both classic Bluetooth and Bluetooth LE and most platforms, with particular focus on Windows 10 and Android (but also iOS and macOS). Improvements also include Beacons support.

The specific list of Bluetooth issues addressed is in the bug list fix below.

8.7 Additional RTL Enhancements

8.7.1 Generic Collections Improvements When using multiple generic types, some generic collections used to have TKey and TValue as symbolic names for the generic types. Now this is confusing as TValue is a

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

specific type in the RTL. To avoid any confusion the symbolic names have been changed. There is no effect to existing code, as the symbolic names are replaced with concrete types when the generic types are instantiated.

Additionally, there are few additional constructors for collection classes, that take as parameters an array of values, including:

procedure DoCheckStateChanged(Node: TTreeNode; CheckState: TNodeCheckState);

virtual;

constructor TList.Create(const Values: array of T); constructor TDictionary.Create(const AItems: array of TPair);

The implementation of TDictionary Capacity, GrowThreshold and hashing has been improved, with a better balance of performance / memory usage / minimal collisions.

The internal implementation class TListHelper has been removed in favor of using a strongly typed field TArray, updating all related streaming and data mapping code.

8.7.2 RTTI Open array support to RTTI: allows invoking methods with an open array parameter via RTTI and also supports open array arguments in TVirtualMethodInterceptor.

TValue adds specific support for TDateTime. Also, TValue and Variant type interchange has been improved.

8.7.3 PPL Made the PPL Thread pool statistics easier to access, that is, TThreadPoolStats.Get method is now public

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

8.7.4 Streams New TPointerStream class, allows reading and writing in-memory data using the TStream interface, by indicating a pointer location and a size.

TStream.CopyFrom doesn’t require the size, which might be unknown. The method has also been optimized when Count is large (up to 400% improvement).

8.7.5 Dates to String Conversion Dates to strings and reverse conversions have been improved (including a few long- standing issues). Worth to note, that now StrToDate:

● strictly follows to date format string ● supports date formats with month and day names ● supports date formats with arbitrary text inside

Also improves TFormatSettings date/time related properties initialization and unifies the representation on all platforms.

8.7.6 Create a Interface Instance There is a new System.Generics.Defaults._MakeInterfaceInstance that allows creating an interface instance, where all interface methods are represented by anonymous methods.

8.7.7 TNoRefCountObject The new class System.TNoRefCountObject is a non-reference-counted IInterface implementation (replacing the old and oddly named TSingletonObject)

8.7.8 Optimizations and Other ● Optimized _FinalizeRecord and _FinalizeArray ● The legacy TDatamodule.OldCreateOrder property has been removed and always default to true. In case the property is present in a form description file, it is ignored (but won’t generate an error). The legacy property was used for

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

compatibility with an older creation order logic, in the early versions of Delphi a long time ago. ● Improved Pascal System.Pos ● TArray.BinarySearch optimization ● Added overloads of TList.Sort( ..., Index, Count ) ● Added System.IOUtils.TFile.Size ● TObject performance fixes for ClassParent and InitInstance ● Some improvements to System.IOUtils.TPath ● RTL support for a system path longer than 260 chars, if supported by the operating system (like on recent versions of Windows) ● Added class property TThread.OnSynchronize ● The EInOutError and EInOutArgumentException messages now include the path and have a Path field.

Improved performance of:

● _UInt32ToHexString and _UInt64ToHexString ● Parse and TryParse for TSingleHelper and TDoubleHelper

The TGUID data structure is now defined only in System.pas (there was a duplicate definition in WinAPI.Ole2.pas)

8.7.9 JSON ● Moved ParseJSONValue() from TJSONObject to TJSONValue ● Added an overloaded TJSONObject.AddPair for an Integer

8.7.10 UTF8ToString Changes The UTF8ToString overload that accepts an array of AnsiChar has been removed and UTF8ToString(array of Byte) deprecated. The removed function is:

UTF8ToString(const S: _PAnsiChr)

The old implementation of that API ignored the length of the array and instead relied on a NULL terminator. Simply changing the implementation would have been

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

dangerous, as we discovered that there was quite a bit of code that relied on the existing behavior.

STATIC ARRAY

If you have code that invokes UTF8ToString with a static array of AnsiChar, like the following, that code will work as it worked in previous versions:

var Buffer: array[0..MAXPHAT] of AnsiChar; begin ... UTF8ToString(Buffer);

DYNAMIC ARRAY

If you have code that invokes UTF8ToString with a dynamic array of AnsiChar, like this, that code will no longer compile:

var Buffer: array of AnsiChar; // Or TArray begin ... UTF8ToString(Buffer);

To remedy you must switch to one of the following:

1. Cast the array to PAnsiChar This keeps the older behavior where the API relies on a NULL terminator and ignores the length of the array.

var

Buffer: array of AnsiChar; // Or TArray

begin

...

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

UTF8ToString(PAnsiChar(Buffer));

2. Use UTF8ArrayToString This uses the new UTF8ArrayToString API that ignores NULL terminators and converts all characters in the dynamic array.

var

Buffer: array of AnsiChar; // Or TArray

begin

...

UTF8ArrayToString(Buffer);

8.8 FireDAC

● PostgreSQL driver supports PostgreSQL up to v 13, including support PostgreSQL Stored Procedures ● Official support for Oracle 19c and for 128-character parameter names for Oracle Stored Procedures. ● Extended TFDSortOption with soDigitsAsNumbers, matching the similar TCompareOption in System.SysUtils. ● Firedac Monitor UI improvements. ● Improved Firebird driver to look for the driver in VendorHome and not in the /bin subfolder (which was correct for older versions of Firebird)

8.9 Internet, HTTP and REST Client Libraries

● Timeout mechanism for Backend and EMS client components:

○ The TEMSProvider, TKinveyProvider, TParseProvider classes have 2 new properties: ConnectTimeout and ReadTimeout

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

○ TEMSApi.TConnectionInfo, TParseApi.TConnectionInfo, TKinveyApi.TConnectionInfo: have variables ConnectTimeout and ReadTimeout

○ TDSRestConnection also surfaces ConnectionTimeOut

● Added Windows support for HTTP / 2

○ New property THttpClient.ProtocolVersion

○ New property TNetHttpClient.ProtocolVersion

● New TBase64URLEncoding encoding and TNetEncoding.Base64URL property

● Switched from gethostbyname to getaddrinfo in the entire RTL, for all platforms.

● New TCertificate.PublicKey, which contains public key modulus

● ContentType now is of string type, not enum. This allows you to use any one content type string. Also, new CustomContentType in RestRequest

● Support for TLS 1.3 in TNetHTTPClient for Windows

● Multiple improvements to TSocket

● A new component TRESTRequestDataSetAdapter simplifies uploading TDataSet (eg, TFDMemTable) data to a server via JSON. It is a companion for the TRESTResponseDataSetAdapter REST component on the server side.

● The TRestClient component surfaces the SecureFailureReasons property of the underlying HTTPClient component

● In the Vcl.Styles unit, the TCustomStyle class FCustomElements and FSource are now declared in the protected section.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

8.10 Internet Server Technologies

WebBroker

ISAPI DLL threads have a configurable StackSize, using the variable Web.Win.ISAPIThreadPool.StackSize.

Significantly improved WebBroker performance when sending/streaming files larger than 2 GB (MaxInt).

RAD Server

Multipart/form-data support for RAD Server

DataSnap

DataSnap: The REST URI is now configurable using a new mechanism, based on a TDSMethodMapEvent event

9 Installer Changes

The Olympus installer has several changes worth noticing.

● The minimal installer has been updated to display properly on High DPI screens. The radio buttons and checkboxes should be properly visible. ● The minimal installer offers a language selection option, rather than relying on the OS detection like in the past.

This gives a smoother experience to anyone on a German, French, or Japanese version of Windows who wishes to install the English version of RAD Studio.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Additionally, the platform selection will require the selected language: a discrepancy among the two options could lead to a mixed language IDE, something we’d want to avoid.

● A new Catalog Repository folder selection for installation files allows you to keep the fairly large installation files in a custom location, other than under the public documents folder:

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

● The installation is now faster. The download of complex features happens by downloading multiple files in parallel rather than in sequence. There is parallelism also between download and extraction of compressed files, while the installation of the features happens in sequence. The information displayed during the installation has been modified accordingly, and the odd “feature names” visible in 10.4.x have been removed and replaced by the number of the download file for each feature.

Attention: The progress bar during the feature installation is not working properly in this build. Let us know any other installation anomaly you notice or any scenario in which installation doesn’t complete.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

10 List of Publicly Reported Bugs Fixed

This is a partial list of bugs fixed up to July 29th, 2021. The list includes publicly reported bugs and does not include duplicate reports. The entries are grouped and sorted by component.

Summary Component/s ExternalID latest Orpheus components package fails to Compiler, RSP-34210 compile Compiler\C++ force c++ compile not equal to a c++ compile Compiler, RSP-32684 [C++11 not C++17] Compiler\C++

[C++|CLANG] Using typeid of delphi-style classes Compiler, RSP-12474 causes AV Compiler\C++, Compiler\C++\CLANG, Compiler\C++\CLANG\ Front End std::make_shared causes AV Compiler, RSP-27633 Compiler\C++, RTL\C++

Spring4d does not compile Compiler, RSB-5094 Compiler\Delphi

VSCode - vsix - DelphiLSP - licence problem Compiler, RSB-5054 Compiler\Delphi

Code generation produces wrong offset Compiler, RSP-33807 Compiler\Delphi

Access violation caused by boolean local variable Compiler, RSP-32513 declaration Compiler\Delphi

Update SQLite libs and DLLs for Delphi Service Data RSP-30752 Packs

Shipped SQLite DLLs very old Data RSP-30749

FDSchemaAdapter raise errors after its DataSet do Data, Data\FireDAC RSP-34409 LoadFromFile

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

TFDDatSManager don't Merge Tables Data, Data\FireDAC RSP-34174

TIBextract not read procedure source in utf8 Data, Data\IBX RSP-31472 database

IBX TIBBackupService - Cannot attach to services Data, Data\IBX RSP-31418

IBConfigService can does not work to get Journal Data, Data\IBX RSP-29303 information in some EUA situations

TControlList fire an IMHO unwanted ItemOnClick Data, RSP-33656 event when current record change Data\LiveBindings, VCL, VCL\Additional

Local variables window switched to C++ mode Debugger RSP-28910

Enabled Codeguard fopen a file lock Debugger RSP-27343

Debug symbols search path doesn't support Debugger, IDE RSP-28810 $(envvar)

Chart Editor not showing Series in FMX FireMonkey RSB-5119

Order of execution for ShowModal causes FireMonkey RSP-30287 undesired behaviour on Windows and macOS

GestureManager in Windows layout raises FireMonkey RSP-29420 exception

MacOS: Changing programatically text on TMemo FireMonkey RSP-27754 doesn't trigger Spell Cheking

TGestureStreamData - Access violation FireMonkey RSP-27401

Add a configuration do allow Delphi to use d8.bat FireMonkey RSP-24155 instead of dx.bat

TCanvasTextureMaterial GLSL is not efficient FireMonkey RSP-22952

Setting a Touch->Gestures->Standard->property FireMonkey, IDE RSP-26487 throws Exception at DesignTime

[Libraries/Sydney/en] Feedback about Help and Doc RSP-34237 "System.Tether.Manager.TTetheringManager.Discov erManagers"

The LegacyIFEND directive page is missing Help and Doc RSP-34097 information about the default (OFF)

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

[RADStudio/Sydney/en] Feedback about "Release Help and Doc, Install RSP-29169 Notes"

[L10N/FR] Button misplaced IDE RSP-34414

TVirtualImageList is not scaled when dropped on a IDE RSB-5124 form

RAD Studio IDE switches screens IDE RSP-34395

REGRESSION - DelphiLSP is constantly collapsing IDE RSB-5092

New open/close progress dialog significantly slows IDE RSP-32545 down opening and closing

Support for multidex on Android platform IDE RSP-27600

Missing DUnitXRuntime.dcp in IDE, Install RSP-31695 Embarcadero\Studio\21.0\lib\win64\release\

GDI Objects limit of 10,000 exceeded and IDE crash IDE, VCL RSB-5090

Start Menu Entry still says Delphi 10.5 instead of Install RSB-5058 Delphi 11

FireUI LivePreview installed to unsuitable path Install RSP-31491

Modified jar libraries are not updated Linker RSP-26263

The _utime set of functions should be in RTL, RTL\C++ RSP-27990 sys/utime.h and not in utime.h

The quick_exit function not found in the global RTL, RTL\C++, RSP-27915 namespace RTL\C++\Other

Better _FinalizeArray RTL, RTL\Delphi RSB-5149

Better _FinalizeRecord RTL, RTL\Delphi RSB-5148

Better UTF8IdentToString RTL, RTL\Delphi RSB-5131

Better _UStrLAsg RTL, RTL\Delphi RSB-5106

A call to drawInRect() crashes in ARM RTL, RTL\Delphi RSB-5070

Bindings are broken in ARM RTL, RTL\Delphi RSB-5069

Calling some macAPI functions from ARM code RTL, RTL\Delphi RSB-5043 crashes the app

Delphi Linux Memory Leak ?? RTL, RTL\Delphi RSP-34319

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

TValue.AsVarRec does not handle ShortString RTL, RTL\Delphi RSP-34305 properly

Parameters in TStrings.AddStrings should be RTL, RTL\Delphi RSP-34286 changed to open array

TJsonCustomCreationConverter readjson circular RTL, RTL\Delphi RSP-34235 reference

Inlining not happening because TypInfo missing RTL, RTL\Delphi RSB-4997

Rebuild RTL fails: RTL, RTL\Delphi RSB-4992 sys\System.Internal.GenericsHlpr.pas not found

System._UStrLAsg should not call _UStrAddRef RTL, RTL\Delphi RSP-33447

Make TJson use RTL, RTL\Delphi RSP-27862 TJSONConverters.GetJSONMarshaler and GetJSONUnMarshaler

System.IOUtils.TFile.ReadAllLines - ERangeError for RTL, RTL\Delphi RSP-23692 very large files

Regresseion: Code change in VCL RSB-5125 TToolButton.CMVisibleChanged scrambles Toolbar

SpeedButtons white rectangle around the text VCL RSB-5112

FCurrentPPI value of runtime create TForm instance VCL RSP-18697 always show 96 in screen configure to 150% text size

Bug in class destructor for TCustomPanel VCL, RSB-5135 VCL\Styles/Themes

10.1 List of Bugs Fixed in previous Beta

This is a partial list of bugs fixed.

Summary Component/s ExternalID

[bcc32c/bcc64] Unresolved move copy constructor Compiler, RSP-29259 Compiler\C++

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

static library project ignores .c files [batch Compiler, RSP-24609 compilation] Compiler\C++ attach to C++ 64bit process and debugging it does Compiler, RSP-33839 not work at all, 32 bit works more or less Compiler\C++, Debugger, IDE

Android: Google Play requires new App signing! Compiler, RSP-31332 Compiler\Delphi

FinalizeArray breaks finalisation order of local Compiler, RSP-30487 variables containing managed types. Compiler\Delphi, RTL\Delphi

TFDQuery (Master/Detail) with CachedUpdates Too Data RSP-34302 Slow on Delphi 10.4.2

TIBextract not read procedure source in utf8 Data, Data\IBX RSP-31472 database

IBX TIBBackupService - Cannot attach to services Data, Data\IBX RSP-31418

IBConfigService can does not work to get Journal Data, Data\IBX RSP-29303 information in some EUA situations

TControlList fire an IMHO unwanted ItemOnClick Data, RSP-33656 event when current record change Data\LiveBindings, VCL, VCL\Additional

Unable to see items added to TList while debugging Debugger, RTL, RSP-33067 RTL\Delphi

Can't edit TChart in FMX projects FireMonkey RSB-5031

Please update Play Services to the latest version FireMonkey RSP-33959

TTexture.style must contain by default volatile (to FireMonkey RSP-33388 avoid 2x memory usage on texture)

Closing form causes access violation when FireMonkey RSP-32631 keyboard is open in grid (ios64)

Wrong texture coordonnates on DAE model FireMonkey RSP-32340

[macOS / iOS] With GlobalUseMetal, the colors of FireMonkey RSP-31856 the emoji are reversed

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Invalid pointer operation when popup open doing FireMonkey RSP-31838 ALT-F4

TEdit (and possibly other components) do not FireMonkey RSP-30165 respect leading spaces

Trackbar does not work on Android with FireMonkey RSP-29842 controltype set to platform

Delphi 10.4 FMX MediaPlayerControl issue in High FireMonkey RSP-29283 DPI, the video does not zoom in.

FMX TControl.Touch property assignment issue FireMonkey RSP-26405

Rectangle on native TPanel does not change Fill FireMonkey RSP-22959 Color

Colour listed twice FireMonkey, RSP-10038 FireMonkey\Compone nts

Incorrectly Creating Dylb on Mac FireMonkey, IDE, RSP-26860 IDE\Deployment

Reference to Microsoft HTML Help Workshop does Help and Doc RSP-33723 not work anymore

Help Insight not showing type (at least for IDE RSB-5104 properties)

Changes to Conditional Defines in Project Options IDE RSB-5098 do not reflect in LSP until Project Reopened

Add a New SDK doesn't actually add one IDE RSB-5091

Virtual Image List Editor uses too big images [High IDE RSB-5071 DPI]

LSP code navigation fails when method calls its IDE RSB-5038 overload

Editor leaves dangling vertical scrollbar behind IDE RSP-34111

Data Explorer/Multi-Device Preview tool windows IDE RSP-33653 don't repaint on IDE theme change

Code insight floating scroll bar on top and how IDE RSP-32685

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

invoke bug

Scrolling wheel mouse after selecting listbox scrolls IDE RSP-32696 something else

[CodeInsight progress bar] hide code audit progress IDE RSP-32748 bar when work id finished in project manager

Code Completion [complete on Tab key] IDE RSP-31660

IDE Floating windows become unresponsive IDE RSP-31276

Stepping through code causes font to be drawn IDE RSP-30712 sharp for a short time

Cannot see breakpoint glyph and execution glyph at IDE RSP-30595 same time

Structure window behave strange with new edit IDE RSP-30059 window

Some colors are duplicated in IDE RSP-29269 System.UITypes.TAlphaColorRec

Delphi closed without message IDE RSP-26399

Enable Overflow and Range checking in Debug IDE RSP-16751 configuration by default

Code Insight window scroll bar on top of code IDE, IDE\Code Insight RSP-30129 editor

Use configured resource output directory for IDE, Linker RSP-29756 default resource file

VCL designer does not scale correctly when IDE, VCL RSB-5052 changing Form.PixelsPerInch

Improve install process (2): Download in parallel to Install RSP-32725 unzip

Better _UStrLAsg RTL, RTL\Delphi RSB-5106

RSP-27269 erroneously marked as fixed in RTL, RTL\Delphi RSB-5100 Olympus_doc_Build_5990.pdf

[RADStudio/Sydney/en] Feedback about "Colors in RTL, RTL\Delphi RSP-34372 FireMonkey"

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Wrong declaration in Macapi.QuartzCore causes RTL, RTL\Delphi RSB-5060 unexpected behavior in ARM64

E2202 Required package 'DesignIDEResources' not RTL, RTL\Delphi RSB-5048 found

Update to most recent Indy for Olympus RTL, RTL\Delphi RSP-28212

Parameters in TStrings.AddStrings should be RTL, RTL\Delphi RSP-34286 changed to open array

Inlining not happening because TypInfo missing RTL, RTL\Delphi RSB-4997

Androidx support needed RTL, RTL\Delphi RSP-33864

System._UStrLAsg should not call _UStrAddRef RTL, RTL\Delphi RSP-33447

[macOS 64] Wrong declaration in RTL, RTL\Delphi RSP-27269 Macapi.QuartzCore

System.IOUtils - TPath.Combine - No longer RTL, RTL\Delphi, RSB-5065 accepting wildcards RTL\Delphi\I/O

Deadlock on call TEvent.ResetEvent RTL, RTL\Delphi, RSB-5029 RTL\Delphi\Threads

Right Click extremely slow when no context menu is VCL RSP-34339 available

Obviously wrong code in StyleAPI.inc VCL RSP-32467

TBalloonHint not scaling correctly VCL RSP-31570

VCL Styles: TPanel flicker when ParentBackground = VCL RSP-31158 False

TCalendarPicker is not fully DPI aware VCL RSP-30025

TPngImage should handle Assign to and from VCL RSP-29020 TWICImage

TDateTimePicker OnChange fired twice VCL RSP-21606

TDateTimePicker cant change date and time VCL RSP-18215 together on UI

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

10.2 List of Bugs Fixed in previous Beta

This is a partial list of bugs fixed.

Summary Component/s ExternalID

"#pragma option -aX", used in ActiveX, is ignored by ActiveX RSP-18471 clang compiler [Fix tlibimp, not compiler] comment is not finished in the math.h file Compiler, RSP-32567 Compiler\C++

[bcc32c/bcc64] Unresolved move copy constructor Compiler, RSP-29259 Compiler\C++ ifstream constructor no longer accepts FILE* as a Compiler, RSP-24132 parameter Compiler\C++

TFDQuery (Master/Detail) with CachedUpdates Too Data RSP-34302 Slow on Delphi 10.4.2

FireDAC error on call ApplyUpdates of ClientDataSet Data, Data\FireDAC RSP-34114

Unable to debug the win64 program, it prompts Debugger RSP-33706 that the creation process failed.

Unable to create process Debugger RSP-33497 debug kernel timeout Debugger RSP-32652

Memory leak in sample Demos, RSP-33795 HttpAsyncDownloadDemo.dpr RTL\Delphi\Net

Can't edit TChart in FMX projects FireMonkey RSB-5031

FMX DragDrop Events Not Triggering FireMonkey RSP-34062

DragOver isn't correctly triggered when mouse FireMonkey RSP-33537 enter in target

Wrong texture coordonnates on DAE model FireMonkey RSP-32340

In-App Purchasing on Android requires use of FireMonkey RSP-32139 Billing API from later this year

GDIpAlloc Memory Leak due to FireMonkey RSP-31718 TCanvasGDIPlus.SetSize

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

TEdit (and possibly other components) do not FireMonkey RSP-30165 respect leading spaces

FireMonkey Label truncated and then vanishes FireMonkey RSP-30128 when rotated

Showmessage in comboboxchange accessviolation FireMonkey RSP-29841

Calls Canvas.SaveState/Canvas.RestoreState FireMonkey RSP-29490 damage the canvas state when rendering in High Performance for the Form.Quality (FMX) mode

FMX TControl.Touch property assignment issue FireMonkey RSP-26405

Incorrectly Creating Dylb on Mac FireMonkey, IDE, RSP-26860 IDE\Deployment

[iOS] UILabel is missing attributedText property FireMonkey, RTL, RSP-33885 RTL\Delphi

Localized German Strings are cut IDE RSB-5035

Code completion requires Enter key IDE RSB-4977

Stack overflow with LSP IDE RSP-33091

[CodeInsight progress bar] hide code audit progress IDE RSP-32748 bar when work id finished in project manager

IDE Floating windows become unresponsive IDE RSP-31276

Dialog "Tools - Options - Language - Delphi - Library IDE RSP-31099 - Library Path" far too slow

Add editor font selector to first startup wizard and IDE RSP-30750 default to Consolas

IDE crash after setting VCL panel Align property IDE RSP-28504

Cleaning a project doesn't remove the RSM IDE RSP-28183 generated from the compile

Missing title buttons when different than IDE RSP-28335 recommended

Options/Debugger options/visualization checkboxes IDE RSP-28660 overlap with frame

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

IDE is not high DPI aware - wrong manifest IDE RSP-17361

A bug in Code Completion [pressing ; should accept IDE, IDE\Code Insight RSP-33118 the code completion entry]

DPI issue in Delphi XE 10.2.3 IDE, IDE\VCL Designer, RSP-20269 VCL

TDatamodule.OldCreateOrder always resets to true IDE, VCL RSP-20016 on descendants

LockBox 3.7 problems in C++ Builder CE Install RSP-34153

Language of IDE predefined? Install RSP-31312

Wrong default browsing path for all platform except Install RSP-23929 Windows

Installer does not respect my language preferences Install RSP-17381

IDE installed in German language, altough no Install RSP-17424 additional language was selected in setup

Download and extract in parallel Install, Install\GetIt RSP-16615

[style inc files] Publicly expose API for creating and RTL, RTL\C++, VCL RSP-13517 modifying VCL styles

Wrong IFDEF in GetHashCode_Pointer RTL, RTL\Delphi RSB-5056

E2202 Required package 'DesignIDEResources' not RTL, RTL\Delphi RSB-5048 found

Missing inlining because of implementation order RTL, RTL\Delphi RSB-5044

Unnecessary nil checks in RTL, RTL\Delphi RSP-34316 TWinBluetoothAdapter.DoStartDiscovery

TValue.AsVarRec does not handle ShortString RTL, RTL\Delphi RSP-34305 properly

System.Zip.TZipFile can't be used in a dynamically RTL, RTL\Delphi RSP-33735 loaded dll

SNotificationCenterCannotPerformOperation RTL, RTL\Delphi RSP-33205 constant should actually refer to notifications

Webbroker Apps still raising exception with ANSI RTL, RTL\Delphi RSP-33204

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

encoded URL (see RSP-28104)

TMultiWaitEvent.WaitForAny & WaitForAll raises RTL, RTL\Delphi RSP-29673 EAbstractError for Events >= 2, Timeout <> INFINITE. Timeout will also fail when GetTickCount overflows and wraps to 0.

Android/SysSocketTypes.inc -Incorrect constant RTL, RTL\Delphi RSP-29421 value

AV on line 4793 of Vcl.Styles RTL, RTL\Delphi RSP-28506

TGUID redundantly defined RTL, RTL\Delphi RSP-28299

[macOS 64] Wrong declaration in RTL, RTL\Delphi RSP-27269 Macapi.QuartzCore

System.TypInfo.TIntfFlag enum is missing flags RTL, RTL\Delphi RSP-24631

TBluetoothLE is not useable since the Windows- RTL, RTL\Delphi RSP-21711 October-Update

Wrong definition value for NSNotFound in RTL, RTL\Delphi RSP-21626 Macapi.Foundation

System._IntfWeakCopy should have its Source RTL, RTL\Delphi RSP-20406 parameter const

New DLLShutdown routine uses wrong finalization RTL, RTL\Delphi RSP-19587 keyword

(iOS) const RTL, RTL\Delphi RSP-18669 UIApplicationBackgroundFetchIntervalMinimum / UIApplicationBackgroundFetchIntervalNever are missing

(iOS) missing setMinimumBackgroundFetchInterval RTL, RTL\Delphi RSP-18656 / endBackgroundTask / beginBackgroundTaskWithExpirationHandler are missing from UIApplication missing declaration of RTL, RTL\Delphi RSP-18013 UIApplicationOpenURLOptionsAnnotationKey / UIApplicationOpenURLOptionsSourceApplicationKe

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

y

System.IOUtils - TPath.Combine - No longer RTL, RTL\Delphi, RSB-5065 accepting wildcards RTL\Delphi\I/O

Debug message erroneously left in standard library RTL\C++ RSP-34317 charconv header file

Right Click extremely slow when no context menu is VCL RSP-34339 available

Close second form with cafree close all application VCL RSP-33140 in vcl styles

Default size of a new form ad 4K monitors is too VCL RSP-32665 large

TBalloonHint not scaling correctly VCL RSP-31570

TButtonedEdit wrong color for button backgrounds VCL RSP-31442 with custom style

Standard Actions Miss ImageName Property VCL RSP-31195

InputQuery still badly broken VCL RSP-31022

10.3 List of Bugs Fixed in previous Beta

This is a partial list of bugs fixed.

Summary Component/s ExternalID Memory corruption after exception when using Compiler, RSP-29944 clang compiler with optimizations (-O1,-O2,-O3) Compiler\C++ [ICE] __finally still broken in 10.4 Compiler, RSP-29161 Compiler\C++ Exception rethrow not working on clang 64bit Compiler, RSP-23469 Compiler\C++ TBlueToothLE Throws Invalid Pointer Operation Compiler, RSP-21548 Error Upon Close Compiler\C++ [Regression] "Minimum macOS version Compiler, RSB-5009

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

supported" setting ignored Compiler\Delphi

URW1302 when compiling Spring Compiler, RSB-4998 Compiler\Delphi generics: record constraint no longer allows Compiler, RSB-4928 records with string fields Compiler\Delphi [REGRESSION] class constructor/destructor are Compiler, RSP-30485 not called Compiler\Delphi Can't compile a package with DosCommand Compiler, RSP-28905 dependency Compiler\Delphi [REGRESSION] Compiling from IDE is extremely Compiler, IDE RSB-4927 slow Unit FireDAC.Stan.Consts does not contain the Data, Data\FireDAC RSP-27548 newer DBMS Releases as version Consts ExplorerDevicesLECpp sample is not working on Demos RSP-20102 Windows Memory leak in sample Demos, RSP-33795 HttpAsyncDownloadDemo.dpr RTL\Delphi\Net FMXLinux Log.d function fails for specific FireMonkey RSP-32303 message strings Mousemove with LeftButtonDown is false if FireMonkey RSP-31942 control is under TLayout TGlyph is missing a DisableInterpolation property FireMonkey RSP-31889

On android platform, trectangle color tone gets FireMonkey RSP-31597 distorted when opacity changes if fiil color have alpha. MessageDialog buttons and titles cannot be FireMonkey RSP-31514 translated Set FMX Form Transparency as true not work FireMonkey RSP-31382

TFlowLayout - child order completely random? FireMonkey RSP-30857

Press and hold with fmx spinedit button FireMonkey RSP-30511

FMX Android Bluetooth Le Implementation FireMonkey RSP-29936

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

When you open popup window, the FMX form FireMonkey RSP-29491 loses activity for a second (blinks, window title bar becomes gray for a second). Align fit for a layout placed in a TGridPanelLayout FireMonkey RSP-28593 missbehaves PopupMenu isn't entirely visible in High DPI - FireMonkey RSP-27728 aware app IDE Crashes after building custom packages that FireMonkey RSP-27656 contain styled controls Beacon does not fire any events on android 9 FireMonkey RSP-27652

Clearing TText.Text should update Effect FireMonkey RSP-26648

OSX 32&64 constants like FireMonkey RSP-26729 kCGImageSourceCreateThumbnailFromImageAl ways OSX 32&64 FireMonkey RSP-26855 TPlatformCocoa.CreateChildMenuItems Firemonkey 4K support for Windows FireMonkey RSP-26453

In MacOsx (32/64 bit) error in FireMonkey RSP-26281 Bitmap.LoadThumbnailFromFile TCanvasGdiPlus Memory Leak FireMonkey RSP-26158 isLocationEnabled is missing from FireMonkey RSP-21365 JLocationManager A huge memory leak in FMX TComboBox FireMonkey RSP-19686

WebBrowser.CaptureBitmap in macOS result is FireMonkey RSP-19448 empty. add setDefaultTextAttributes and FireMonkey RSP-16971 setAttributedPlaceholder to UITextField BLE writecharacteristic is very slow on Android FireMonkey RSP-16891

Access Violation is raised if assigned a value FireMonkey RSP-16873 minor to crSizeAll(-22) to a Cursor field TGridPanelLayout - Margins from controls are FireMonkey RSP-14136 ignored

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

TGridPanelLayout rendering problem FireMonkey, RSP-17976 FireMonkey\Styles CocoaPointerConst must work in background FireMonkey, RTL, RSP-23241 thread RTL\Delphi Infinite loop in DoGetClassicAdapter in FireMonkey, RTL, RSP-20845 Android.Bluetooth RTL\Delphi [REGRESSION] VCL Form Designer scroll bars IDE RSB-4930 are not working The Embarcadero GetIt server could not be IDE RSP-33077 reached. Another example where code navigation IDE RSP-32556 (Ctrl+Click) doesn't work Dialog "Tools - Options - Language - Delphi - IDE RSP-31099 Library - Library Path" far too slow read address 0 IDE RSP-30217

IDE titlebar measurements incorrect when IDE RSP-22197 maximised Include file breaks LSP code completion IDE, IDE\Code RSP-33305 Insight Error Insight doesn't work with big project IDE, IDE\Code RSP-32758 Insight "platforms" topic appears in GetIt catalog but is IDE, Install RSP-34089 empty LockBox 3.7 problems in C++ Builder CE Install RSP-34153

Cannot install patches Install RSP-33866

Wrong default browsing path for all platform Install RSP-23929 except Windows [PowerShell] GetItCmd.exe doesn't appear to Install, Install\GetIt RSP-31350 install packages Bluetooth LE not working properly Libraries and RSP-20296 Frameworks, RTL, RTL\Delphi\Bluetooth

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

problem using shared memory RTL, RTL\C++ RSP-19312

AcquireExceptionObject doesn't work for Clang- RTL, RTL\C++ RSP-18031 thrown exceptions TValue.Cast from string to RawByteString is RTL, RTL\Delphi RSB-5012 broken A better IntToHex RTL, RTL\Delphi RSB-4996

More compact Parse and TryParse for RTL, RTL\Delphi RSB-4995 TSingleHelper and TDoubleHelper A better GUIDToString RTL, RTL\Delphi RSP-34169

A better StringToGUID RTL, RTL\Delphi RSP-34168

Range check error in System.Zip RTL, RTL\Delphi RSB-4941

Android/SysSocketTypes.inc -Incorrect constant RTL, RTL\Delphi RSP-29421 value TGUID redundantly defined RTL, RTL\Delphi RSP-28299

Please change using in RTL, RTL\Delphi RSP-28267 generics.collections and alike TBluetoothLE is not useable since the Windows- RTL, RTL\Delphi RSP-21711 October-Update Add overload TList.Sort( ..., Index, Count ) RTL, RTL\Delphi RSP-13756

Missing wrapper for Android Environment class RTL, RTL\Delphi RSP-12690

CLONE - 10.2 Tokyo BLE Framework fails to RTL, RTL\Delphi, RSP-20358 discover devices on Android RTL\Delphi\Bluetooth Get rid of TListHelper and use strongly typed field RTL, RTL\Delphi, RSB-4943 (TArray RTL\Delphi\List/Colle ctions TThread.BeforeDestruction should not call RTL, RTL\Delphi, RSB-4976 WaitFor RTL\Delphi\Threads [LiveBindings] TBindExpression is not evaluated RTL, RTL\Delphi, RSP-34260 on TPrototypeBindSource.ApplyUpdates VCL Application is leaking refcounts on interfaced RTL, RSP-20716 object after using BLE framework RTL\Delphi\Bluetooth

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

BLEScanner sample does not find BLE devices RTL, RSP-15489 when running on desktop pc windows 10 RTL\Delphi\Bluetooth Vcl.Graphics DefFontData is outdated VCL RSP-33856

TRichEdit.SelText unable to assign RTF content. VCL RSP-29654 This worked before uni-code update. radiogroup without frame VCL RSP-29318

Make private variables in TCustomStyle protected VCL RSP-27581

TTreeView overrides its TCanvas Font.OnChange VCL RSP-25914 which breaks OnCustomDraw Support transparent rich edit controls VCL RSP-13455

Add general-purpose support to VCL RSP-13454 EM_FORMATRANGE to TRichEdit Add support for getting/setting TRichEdit scroll VCL RSP-13453 position using EM_SETSCROLLPOS / EM_GETSCROLLPOS Add support for changing margins to TRichEdit / VCL RSP-13452 TEdit / TMemo Add properties to TTextAttributes used by VCL RSP-13451 TRichEdit to set/unset ONLY SOME font styles - not all styles TRichEdit: Add a VCL RSP-13443 TParaAttributes.ConsistentAttributes that mirrors behavior of TTextAttributes.ConsistentAttributes Make the TDBRichEdit.Lines property accessible VCL RSP-13439

Update TRichEdit to support MSFTEDIT.DLL VCL RSP-13383

TRichEdit missing attributes VCL, VCL\Win32 RSP-13482

10.4 List of Bugs Fixed in previous Beta

This is a partial list of bugs fixed.

Summary Component/s ExternalID

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Clang32 crash: [bcc32c Error] ...: ICE: Internal Compiler, RSP-24315 compiler error: 0 @ 00000000 Compiler\C++ TBlueToothLE Throws Invalid Pointer Operation Compiler, RSP-21548 Error Upon Close Compiler\C++ No Upload ID returned when trying to initiate Data, Data\Cloud RSP-33551 mulipart upload to Amazon S3 Memory Leak in TFMTBcdData Variant Type. Data, Data\DBRtl RSP-34065 FireBird library no longer resides in \bin Data, Data\FireDAC RSP-34136 Debug does not work on new Apple M1 CPU Debugger RSP-32362 ExplorerDevicesLECpp sample is not working Demos RSP-20102 on Windows Changes to FMX.Memo.Style FireMonkey RSB-4949 TListview missing published property Heigh FireMonkey RSP-33738 Firemonkey: Screen.Displays[].Bounds returns FireMonkey RSP-33412 no longer values in pixels for displays with Scale <> 1. Access Violation editing TListBox items FireMonkey RSP-33179 Access violation at shutdown if imagelist is in FireMonkey RSP-33084 datamodule Latest Dark Style has a missing an arrow in its FireMonkey RSP-33046 TSpinBox Crash when show keyboard and form is freed FireMonkey RSP-32425 FMX Edit button alignment is incorrect when FireMonkey RSP-32307 scaled FMXLinux Log.d function fails for specific FireMonkey RSP-32303 message strings Unicode text containing 'U+200C' is rendered FireMonkey RSP-32194 incorrectly in iOS and Android.

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

TBaseImageList.BeforeDestruction may raise FireMonkey RSP-31343 AV styled controls that use FireMonkey RSP-31208 TBitmapLinks BluetoothLE requestMTU Not implemented FireMonkey RSP-29937 Mixing on fmx application, controltype platform FireMonkey RSP-26141 and style objects. WebBrowser, Geolocation - geolocation FireMonkey RSP-24039 permission request does not work Add User Designer Guidelines FireMonkey RSP-19477 BLE writecharacteristic is very slow on Android FireMonkey RSP-16891 Colour listed twice FireMonkey, RSP-10038 FireMonkey\Compo nents Add support for file upload in TWebBrowser FireMonkey, RSP-29515 FireMonkey\Runtim e Add designer guides / rules to FMX designer, FireMonkey, IDE RSP-14143 just like VCL designer Embarcadero Toaster - Notification Window FireMonkey, VCL RSP-32375 "Embarcadero.Desktop.Toasts.CF4ADDBE" French and German DocWiki Main Page show Help and Doc RSP-32117 Platform Status instead "Search for Unit" dialog: edit box doesn't have IDE RSB-4932 focus [REGRESSION] VCL Form Designer scroll bars IDE RSB-4930 are not working LSP don't see a new added unit symbols IDE RSP-33501

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Code completion does not offer identifiers that IDE RSP-33316 don't match expected type [class helpers?] Strg+Left Mouseclick don't work in some cases IDE RSP-33065 (Ctrl+Left Mouse Click) LSP Ctrl+Click navigation fails when only DCP's IDE RSP-32666 referenced The find declaration work only on first attempt IDE RSP-32681 mouse wheel don't works in StyleLookup IDE RSP-32615 property list [DelphiLSP] Using inline var type inference IDE RSP-30588 prohibits code completion from providing suggestions Cannot Scroll using mouse scroll on IDE RSP-30620 StyleLookup Property Editor Missing hints in FMX style designer IDE RSP-14577 [Regression] [Code Completion] Changes are IDE, IDE\Code RSP-33549 not taken into account Insight [Regression] [Code Completion] No completion IDE, IDE\Code RSP-33398 for identifiers starting with "Is" and completion Insight after "Is" code completion show helper IDE, IDE\Code RSP-33393 Insight [Regression] [Code Completion] Result for IDE, IDE\Code RSP-33363 dereferenced pointers does not contain Insight expected fields LSP doesnt show errors IDE, IDE\Code RSP-33060 Insight New LSP does not recognize newly build IDE, IDE\Code RSP-31922 classes. Insight

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Error insight not working caused by INCLUDE IDE, IDE\Code RSP-31321 statements with relative paths Insight CodeInsight LSP often fails [Help Insight] IDE, IDE\Code RSP-31211 Insight LSP Code Insight not working for templates and IDE, IDE\Code RSP-30990 reserved words Insight Search path ending with + breaks LSP IDE, IDE\Code RSP-30113 Insight Form flickering when group policy is updated IDE, VCL RSP-24026 Installer doesn't respect language asked Install RSB-4929 When receiving a beacon on Windows 10, RSSI IoT, RTL RSP-20214 will always be 0. Bluetooth LE not working properly Libraries and RSP-20296 Frameworks, RTL, RTL\Delphi\Bluetoot h NotificationCenter in Windows RTL RSP-16750 EnableSound:=False not working - Fix suggested A better GUIDToString RTL, RTL\Delphi RSP-34169 A better StringToGUID RTL, RTL\Delphi RSP-34168 Better Pos RTL, RTL\Delphi RSB-4957 Regression: Declaring a record helper for RTL, RTL\Delphi RSB-4942 TValue causes errors in how the Implicit class operator handles TDate values Range check error in System.Zip RTL, RTL\Delphi RSB-4941 Implement IntToStr branchless RTL, RTL\Delphi RSB-4940 SameText should not do those additional RTL, RTL\Delphi RSB-4939

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

checks Usage of System.Rtti in System.TypInfo RTL, RTL\Delphi RSB-4937 implementation uses avoids inlining References to TGraphicArray parameters RTL, RTL\Delphi RSB-4925 should be made const The use of TValue.AsType within the non RTL, RTL\Delphi RSB-4920 generic TValue.AsXXX method causes severe overhead Non optimal code in System.Rtti.Conv2Variant RTL, RTL\Delphi RSB-4919 System.Rtti.TValueHelper makes no sense and RTL, RTL\Delphi RSB-4918 actually breaks compilation IWMIndexer2 is incorrectly defined RTL, RTL\Delphi RSP-34054 Regression: TStreamAdapter.Seek support Size RTL, RTL\Delphi RSP-34049 > 2Gb is broken on Windows - typo in defines {$IFDEF Sizeof( -> {$IF Sizeof( invalid definition of the IKsPropertySet RTL, RTL\Delphi RSP-34043 interface (Winapi.DirectShow9) [RADStudio/Sydney/en] Feedback about RTL, RTL\Delphi RSP-33322 "OpenSSL" Optimize TMarshal.Copy's Dest parameter so RTL, RTL\Delphi RSP-29167 as to reduce unnecessary DynArrayAddRef and DynArrayClear calls Android fails to start BLE service discovery after RTL, RTL\Delphi RSP-19824 a cache clear TStreamWriter.Flush throws away some IO RTL, RTL\Delphi RSP-16548 errors Improve purepascal System.Pos() RTL, RTL\Delphi RSP-13687 Changes in System.Generics.Defaults cause RTL, RTL\Delphi, RSB-4931 crash. RTL\Delphi\List/Coll

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

ections

System.SysUtils.ByteLength behaves poorly for RTL, RTL\Delphi, RSP-9703 non UTF-16 strings RTL\Delphi\Strings TThread.BeforeDestruction should not call RTL, RTL\Delphi, RSB-4976 WaitFor RTL\Delphi\Threads TBluetoothLEManager (?) memory leak. RTL, RSP-31984 RTL\Delphi\Bluetoot h Application is leaking refcounts on interfaced RTL, RSP-20716 object after using BLE framework RTL\Delphi\Bluetoot h Handling of BLE Manufacturer Specific Data in RTL, RSP-17763 Android is flawed RTL\Delphi\Bluetoot h BLEScanner sample does not find BLE devices RTL, RSP-15489 when running on desktop pc windows 10 RTL\Delphi\Bluetoot h Non optimal for some TObject methods RTL\Delphi RSB-4922 Non optimal codegen for TObject.ClassParent RTL\Delphi RSB-4921 TEdgeBrowser.Navigate and NavigateToString VCL RSP-33189 always return False for a success navigation TBitBtn DoubleClick - Y coordinate is always VCL RSP-32493 zero Add TCustomCheckListBox as intermediate VCL RSP-31453 class without published properties Vcl.Themes - function StyleServices is inline VCL RSP-30705 (does that makes sense?) radiogroup without frame VCL RSP-29318

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Bluetooth component causes an exception if VCL RSP-28211 you repeated enable and disable it. Please move VCL RSP-28174 TScrollingWinControl.ScaleScrollBars from private to protected Make setter and Step() methods of VCL RSP-27369 TProgressControl virtual TTreeView overrides its TCanvas VCL RSP-25914 Font.OnChange which breaks OnCustomDraw Parented controls with free notifications aren't VCL RSP-19012 scaled Make TCustomRadioGroup.ArrangeButtons VCL RSP-11765 virtual protected

10.5 List of Bugs Fixed in previous Beta

This is a partial list of bugs fixed.

Summary Component/s ExternalID

Regression from 10.3.0 - The help file is missing 3rd Party RSP-23759 in the GetIt Package of CodeSite Express. reference to HCATADMIN is ambiguous Compiler, RSP-33705 Compiler\C++ bcc32c: cannot compile this 'this' captured by Compiler, RSP-23383 SEH yet Compiler\C++

GetIt Eigen library does not work with all Compiler, RSP-20274 platforms Compiler\C++

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

c++ program does not catch exceptions Compiler, RSP-20067 Compiler\C++

Missing files with ld-linux.exe: start_linux64.o, Compiler, RSP-17492 SysInit.o, end_linux64.o Compiler\C++, Compiler\C++\CLAN G

[bcc64] Using a typedef-name when naming a Compiler, RSP-9431 destructor fails Compiler\C++, Compiler\C++\CLAN G wrong code generation win32 optimization ON Compiler, RSP-33836 Compiler\Delphi

Interface is not released after an exception on Compiler, RSP-33378 Linux Compiler\Delphi

F2084 Internal Error: IRBB360 Compiler, RSP-32405 Compiler\Delphi

Compiler generate bad code for x64 and correct Compiler, RSP-32643 for x32 Compiler\Delphi

The compiler does not generate rex prefix in Compiler, RSP-26051 some instructions when the optimizations are Compiler\Delphi enabled.

Invalid compiler hints Compiler, RSP-20965 Compiler\Delphi

Please consider adding support for YMM and Compiler, RSP-18074 ZMM registers in the built-in assembly Compiler\Delphi

Digit separator support Compiler, RSP-17863 Compiler\Delphi

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

inline assembly does not support AVX Compiler, RSP-16836 instructions Compiler\Delphi

Binary literal support Compiler, RSP-15539 Compiler\Delphi

IOS: distributed dynamic library must be signed Compiler, RSP-22899 before to be deployed Compiler\Delphi, FireMonkey

Add open array support to RTTI Compiler, RSP-16317 Compiler\Delphi, RTL\Delphi

Lookup fields generate error when new record Data, Data\ADO RSP-33088 is created ADO SQLSERVER vs MSACCESS

Invalid ADO Parameters Type Mapping Data, Data\ADO RSP-29343

No Upload ID returned when trying to initiate Data, Data\Cloud RSP-33551 mulipart upload to Amazon S3

Make DataSnap REST URI Configurable Data, RSP-17884 Data\DataSnap dbgrid EInvalidGridOperation Grid index out of Data, Data\DBCtrls RSP-33059 range

Grid index out of range in TDBGrid Data, Data\DBCtrls RSP-31920

Bug in loading time values from JSON to DataSet Data, Data\DBRtl, RSP-32438 Data\REST

Simple JSON deserialization of records incorrect Data, Data\DBX RSP-32285 (Delphi Sydney [10.4.1])

Erro in TFDBatchMove on Execute Data, Data\FireDAC RSP-33966

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

TFDQuery error after exception : Data, Data\FireDAC RSP-33575 [FireDAC][DApt]-402. Operation cannot performed without assigned SelectCommand

FireDAC: query ShortInt parameter -1 cause Data, Data\FireDAC RSP-33528 range check error in Access ODBC driver

TFDBatchmove Error: [FireDAC][Comp][DS]-206. Data, Data\FireDAC RSP-33430 Öffnen der Datenmenge [TFDTable($03521150)]

FireDAC: in MetaInfoQuery for Postgres invalid Data, Data\FireDAC RSP-33383 ForeignKeyFields records

FDBatchMove.Execute error when last line in Data, Data\FireDAC RSP-32465 double-quote CSV file does not contain linefeed

Bug in Firedac FDconnection.ExecSQL.... if Data, Data\FireDAC RSP-32608 execute two SQL query with different number parameters and FDConnection is all time connected mysql with delphi and utf8 Data, Data\FireDAC RSP-32162

Firedac (via ODBC) to Excel file is not working Data, Data\FireDAC RSP-32591 fully as expected.

FireDAC: In some cases, with a bad connection, Data, Data\FireDAC RSP-31537 the BLOB field is not loaded

Firedac Monitor : Help should be connected to Data, Data\FireDAC RSP-30744 the WEB

Extend TFDSortOption with Data, Data\FireDAC RSP-30056 SORT_DIGITSASNUMBERS

Optimize QueryInfo method in TIBInfo class in Data, Data\FireDAC RSP-24510 FireDAC.Phys.IBWrapper unit

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Add A REST Component To Auto Upload an Data, Data\FireDAC, RSP-17923 TFDMemTable Via JSON Data\REST

TSQLiteConnection on android local service Data, Data\FireDAC, RSP-33394 FireMonkey, IDE

DBX Error "At end of table" on Delete Record Data, Data\Midas RSP-33144

ClientDataset Refresh has strange results when Data, Data\Midas RSP-31767 done on XML dataset with XMLTransformProvider

RESTClient freeze when used in a console Data, Data\REST RSP-33605 application

TRESTRequest no longer correctly sets the Data, Data\REST RSP-33288 Content-Type correctly. restdebugger ignores mime type Data, Data\REST RSP-33192

A-sync rest request or JSON paring not thread Data, Data\REST RSP-32199 safe

A RESTRequest ContentType is limited to Data, Data\REST RSP-31997 predefined values

Make StackSize configurable for ISAPI DLL Data, RTL, RSP-32094 threads RTL\Delphi

Somebody knows how to get the clients ip Data\MEAP RSP-33323 address from within a radserver resource method?

Enable RAD Server to process multipart/form- Data\MEAP RSP-27389 data on the server side

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

C++64: Debugger fatal error: debug kernel not Debugger RSP-29696 responding. The debug process willl be terminated.

64-bit debugger disassembles certain Debugger RSP-28139 instructions incorrectly

[PAClient Error] Error: E0004 File does not exist: Debugger RSP-17589 C:\qqq\Project2._@emb_.tmp

When double click control, IDE does not create Demos, IDE RSP-27617 correct code [corrupts code]

Integration Api 30 Android FireMonkey RSP-33978

In TLabel may appear leading spaces in new FireMonkey RSP-33914 lines.

Using visual component TBackendEndpoint with FireMonkey RSP-33909 Provider and Authenticator on a Datamodul leads to RTL270.bpl error

Combobox: Adding ListItems programatically FireMonkey RSP-33857 fails when DropDownKind=Native

TListbox TStyleObject not freed FireMonkey RSP-33630

TForm.ScreenToClient is incorrect on hi- FireMonkey RSP-33565 resolution displays

DragDrop with Screen Scaling FireMonkey RSP-33450

Firemonkey Mainform Starting Position not on FireMonkey RSP-33382 Screen when using DefaultPosOnly

Various FireMonkey Windows high-DPI bugs FireMonkey RSP-33254

PopupMenu behavior is incorrect FireMonkey RSP-33045

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

MacOS-Entitlements: Music-Read-Write is FireMonkey RSP-32436 translated to Movie-Read-Write

Wrong rendering of strings containing emoji in FireMonkey RSP-32190 Android.

Form.Left is wrong of FireMonkey RSP-32676 Form.Position=poDefaultPosOnly

Menu icons appearing black when disabled in FireMonkey RSP-31813 FMX (with screens set to different scales)

Bitmap is not updated in ListBoxItem FireMonkey RSP-30221

MainformCenter and ScreeenCenter does not FireMonkey RSP-30718 work on HIGH-DPI-Monitors

TButton and TSpeedButton flashing when using FireMonkey RSP-27562 StayPressed and IsPressed trigger

Form Position=MainFormCenter, ScreenCenter FireMonkey RSP-27511 or DesktopCenter are incorrect in Windows 10 and Scale > 100%

Trectangle.fill.kind doesn't change the value FireMonkey RSP-27407 when created in runtime

When you create and destroy any frame that has FireMonkey RSP-26713 TwebBrowser it caused refresh problem. does not work even if /min option is added to FireMonkey RSP-24644 start command

A form can not be resized by its top corners If FireMonkey RSP-23057 custom style applied

Incorrect drawing of combobox-like controls on FireMonkey RSP-21793 non-standard Windows DPI scaling

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

FireMonkey does not honor style window FireMonkey RSP-22048 border settings

Styled Firemonkey Windows are too Big FireMonkey RSP-22030

Per monitor DPI scaling broken in Firemonkey FireMonkey RSP-21008

Column and Grid width problem. FireMonkey RSP-20877

Program compiled with the "Enable High-DPI" FireMonkey RSP-17999 compilation directive does not work properly

Issue with main form in FMX app using Berlin FireMonkey RSP-16184 Update 1

Size Constraints of Firemonkey window FireMonkey RSP-15785

FMX Windows app which have two form and FireMonkey RSP-14692 both has TWebBrowser crashes when it closed.

Miss constraints size for firmonkey form FireMonkey RSP-13673

TMapView IOS crash when UserLocation FireMonkey, RSP-30471 FireMonkey\Compo nents

Opening a TPopup causes application child form FireMonkey, RSP-14752 to move to back, then to front again creating an FireMonkey\Compo undesirable visual effect nents

Form loses focus when modal childform uses FireMonkey, RSP-14747 Activecontrol FireMonkey\Compo nents

FMX TForm.ActiveControl Never Updates At FireMonkey, RSP-10496 Runtime FireMonkey\Runtim e

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

MacOS: BluetoothLE not useable with Delphi FireMonkey, RTL, RSP-33267 10.4.2 RTL\Delphi\Bluetoot h

Error opening PAS unit Encoded by UCS-2 LE IDE RSP-33852 BOM

Background Build dialog is partially hidden IDE RSP-33750

Line end Combobox too short in German IDE RSP-33633 language

Documentation.htm not found IDE RSP-33590

Blue dots and breakpoints on dark theme look IDE RSP-33522 bad

Unable to view designer in New Edit Window IDE RSP-33435

SDK Manager is missing buttons with HighDPI IDE RSP-33417

IDE Application Title Bar is cut off on Hi-Def IDE RSP-33154 screen

Exception or hang when opening certain files IDE RSP-33114

High DPI Fonts not working in ActionList editor! IDE RSP-32790

Catastrophic Error when using multiple edit and IDE RSP-32501 form designer windows

IDE: Dialog "Load process" IDE RSP-32389 cleaning non-existent projects and units from IDE RSP-32634 "reopen" in options after saving options causes invalid pointer

Duplicates listed in dropdown list of Debug IDE RSP-32693 Modules Add Modules dialog

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

German text in combobox truncated IDE RSP-32612

Code editor top bar fonts are too big IDE RSP-32313

Directory Edit Dialog loses selection when IDE RSP-32650 changing list order

Structure panel icon for interface no longer IDE RSP-32671 apropriate

IDE Form designer display Windows 7 forms IDE RSP-32710 format

Screen position and size are not stored IDE RSP-32678

CLANG Libpath missing IDE RSP-31990 $(BDSLIB)\win32\release

Numbers are not fully visible in GetIt if Windows IDE RSP-31947 scaling is applied

Tree control in GetIt has wrong vertical IDE RSP-31946 alignment for expand buttons and radio buttons if Windows scaling is applied

Font size is not changed when Windows scaling IDE RSP-31945 is applied

Project Options window caption area has wrong IDE RSP-31941 height if Windows scaling is applied

During popup docked tool windows have wrong IDE RSP-31939 sized headers when expanded while Windows scaling is applied

Toolbars in Project Manager and Structure lack IDE RSP-31937 auto sizing

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Macro buttons are not properly resized and IDE RSP-31935 aligned if Windows scaling is applied

Help Insight search edit box and desktop layout IDE RSP-31934 combo are not properly aligned vertically

Docked window headers and IDE editor tabs are IDE RSP-31933 not aligned in height and font size

IDE AV when switching WIn32<>Win64 platform IDE RSP-32592 with speedbutton

Code Completion [complete on Tab key] IDE RSP-31660

XML Data Binding cannot be added new data IDE RSP-31225 type

Windows Theme not rendering all controls IDE RSP-31216 correctly editor font size error. IDE RSP-31026

Change Exception Dialog Display Exception IDE RSP-30856 Message in Selectable Edit

IDE window shrinks when opening project with IDE RSP-30797 only dpr and dproj files

4k display, DPI scaling "System (Enhanced) = IDE RSP-30785 Object Inspector problem

Cannot navigate to methods in record helper IDE RSP-30644

Search Box Showing White background when IDE RSP-30641 click

Tools/Options dialog opens slowly IDE RSP-30323

OI broken on High DPI IDE RSP-30636

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Code insight show "end: erroneous type;" inside IDE RSP-29357 inherited form and few other code insight problems in example project

Enum type TOTACompileMode is not complete IDE RSP-28392

Creating FireMonkey Metrolpolis App for IDE RSP-28145 windows lead to invalid pointer

IDE combobox corrupted IDE RSP-25650

IDE missing a strip on the right after restore to IDE RSP-25564 full 4k screen from minimize lost scroll bar after restore IDE IDE RSP-25704

Single Project takes longer to load IN RIO and IDE RSP-25788 user feedback is worst

Poor UI experience in Delphi compile dialog IDE RSP-25874

Search box in Options windows does not open IDE RSP-24625 Formatter section pages

HiDpi 120% scalling - IDE Main Window titlebar - IDE RSP-23961 text partially not visible in desktop speedsettings

IDE on Laptop with 4K 200% high dpi monitor - IDE RSP-23795 blurry fonts and small font size global search edit field IDE RSP-23084

Scalling IDE GUI issues IDE RSP-23049

IDE interface issues IDE RSP-21665

10.3 IDE is totally unusable with high dpi IDE RSP-22034

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

RAD Studio 10.2 Tokyo Release 2 - When I set IDE RSP-20081 "Disable display scaling on high DPI settings", RAD Studio got many errors and crashed.

Quick edit can not been displayed in full [High IDE RSP-19965 DPI]

Find in Files dialog is jumbled IDE RSP-18874

IDE : Find in Files form IDE RSP-18383

Checkboxes in IDE Object Inspector are too large IDE RSP-18192 w. system text size 125%

HiDPI IDE issue IDE RSP-17118

Find panel button missing in high dpi resolution IDE RSP-17096

Option to control Font size in the IDE IDE RSP-12576

Code completion fails to list ancestor methods IDE RSP-10520 in generic classes

Delphi IDE is not dpi aware IDE RSP-9678

Delphi crash with CodeInsight LSP IDE, IDE\Code Insight RSP-33664

Error Insight not updated after switching units IDE, IDE\Code Insight RSP-32645

Error in IDE code complete (Class Completion) IDE, IDE\Code Insight RSP-31354

LSP Code Completion fails to find all units IDE, IDE\Code Insight RSP-30707

Change versionCode type filed for Android IDE, IDE\General RSP-25667 applications

XMLDOC not showing up for generic class IDE, IDE\General RSP-10406 instance

Error message (error creating form) needs IDE, IDE\General, RSP-14100 improvement (should say which form) VCL

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Welcome dialog don't display actual choice for IDE, Install RSP-32520 the checkbox "swap the theme to match the windows theme"

IOS Deployment to store - BigSur 11.1 and IOS IDE, PAServer RSP-32150 14.3 [SOLVED]

$(BDS)\source\Visualizers\BytesVisualizer.pas Install RSP-33392

...\bin\RSVARS.BAT might contain false path Install RSP-32624

Installer asks for User and Password - for what?! Install RSP-25787

Installer starts Rad Studio when not desired Install RSP-14600

WebBroker problem with sending/streaming Internet RSP-23507 files greater 2 GB (MaxInt)

CLONE - Lockup on IFuture.Value RTL RSP-26603

Inefficient code in TRttiType.GetMethods RTL, RTL\Delphi RSP-33404

[REGRESSION] Extremely slow destruction of RTL, RTL\Delphi RSP-32432 TVirtualInterface since 10.4

TValue.TryCast and implicit casting fails for RTL, RTL\Delphi RSP-32083 TDate, TDateTime and TTime

Exception message should be more detailed RTL, RTL\Delphi RSP-31884

AnsiStrings.AnsiStrLComp segfault on Linux RTL, RTL\Delphi RSP-31595

Missing Power GUID RTL, RTL\Delphi RSP-32723

SQL_OPT_TRACE_FILE_DEFAULT in System.Odbc RTL, RTL\Delphi RSP-31391 wrong

TList.IndexOf/LastIndex of implementation RTL, RTL\Delphi RSP-31381 not optimal

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Method body of TObject.ClassInfo should be RTL, RTL\Delphi RSP-30757 moved up

TNetHTTPClient / TCertificate too limited. RTL, RTL\Delphi RSP-30552

Add missing IUIViewSettingsInterop interface RTL, RTL\Delphi RSP-29682

Optimize TMarshal.Copy's Src parameter so as RTL, RTL\Delphi RSP-29166 to reduce unnecessary DynArrayAddRef and DynArrayClear calls

TStringStream load utf8 file bug RTL, RTL\Delphi RSP-28228

An overloaded TJSONObject.AddPair for an RTL, RTL\Delphi RSP-27928 Integer

Optimize class procedure RTL, RTL\Delphi RSP-29002 RegisterCompressionHandler(Compression: TZipCompression; CompressStream, DecompressStream: TStreamConstructor); in System.Zip

Missing Windows API GetConsoleWindow RTL, RTL\Delphi RSP-29042

TGuid operator overloads should be marked as RTL, RTL\Delphi RSP-27706 inline

TStreamReader - can result in many 'moves' on RTL, RTL\Delphi RSP-27394 the buffered data which looks inappropriate.

TVirtualInterface access violation with array of RTL, RTL\Delphi RSP-27339 const parameter

Stream version of the TZipFile.IsValid() RTL, RTL\Delphi RSP-27232

EAccessViolation on Format() call inside of the RTL, RTL\Delphi RSP-26383 SignalConverter() handler from System.Internal.ExcUtils.pas

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Datasnap communication very slow compared RTL, RTL\Delphi RSP-24619 to using TWebRequest directly

Add an Implict in TValue addressing TDateTime RTL, RTL\Delphi RSP-24602

Incorrect Rows type declaration in RTL, RTL\Delphi RSP-23768 WinAPI.OleDb.pas

TValue.FromVarRec cannot cast to a WideString RTL, RTL\Delphi RSP-23128

TFormatSettings.ShortDateFormat is always RTL, RTL\Delphi RSP-21900 initialized by a pattern without century (using ICU library)

FormatBcd adds decimal separator to the end of RTL, RTL\Delphi RSP-21552 the string, although the number has no decimal part.

Move ParseJSONValue() from TJSONObject to RTL, RTL\Delphi RSP-21536 TJSONValue

Header parameter in OnProgress event always RTL, RTL\Delphi RSP-21370 empty in TZipFile.Read method

Create new standard TStream class: RTL, RTL\Delphi RSP-21307 TPointerStream

System.NetEncoding wasting memory during RTL, RTL\Delphi RSP-21298 encoding/decoding process

Add UTCNow function RTL, RTL\Delphi RSP-22362

Base64url encoding RTL, RTL\Delphi RSP-20316

TZipHeader need a GetFileName method RTL, RTL\Delphi RSP-20275

Thread-object gets destroyed twice on RTL, RTL\Delphi RSP-20175 exception in create

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

TFormatSettings.Create should not recreate RTL, RTL\Delphi RSP-20159 ShortTimeFormat and LongTimeFormat

Add a "CustomContentType" to TRestRequest RTL, RTL\Delphi RSP-19793

TMemoryStream Realloc not support Int64 For RTL, RTL\Delphi RSP-19321 greater than 2G

System.IOUtils.TPath.HasValidPathChars() RTL, RTL\Delphi RSP-18696 ignores UseWildCards argument

TStream.CopyFrom is slow for TMemoryStream RTL, RTL\Delphi RSP-18560 if Count is big

StrToDateTime fails if ShortDateFormat = RTL, RTL\Delphi RSP-17058 LongDateFormat

TZipFile Creates new files that are too big if RTL, RTL\Delphi RSP-16963 previous zip file has been opened

SysErrorMessage returns wrong string RTL, RTL\Delphi RSP-17489

StrToDate does not work with Windows 10 (8) RTL, RTL\Delphi RSP-16577 and non US locale

TZipFile Open with existing FileStream does not RTL, RTL\Delphi RSP-16299 update the end of file marker

Exception Error seen using RTL, RTL\Delphi RSP-16141 System.ZLib.TDecompressionStream with TJSONTextReader

TMemoryStream does not support large (> 2 Gb) RTL, RTL\Delphi RSP-16137 memory allocations

System.Zip doesn't work properly with files RTL, RTL\Delphi RSP-15587 larger in size than 4 GB

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Missing method to remove file from a zip-file in RTL, RTL\Delphi RSP-15234 TZipFile

TZipFile , Zip64 support needed RTL, RTL\Delphi RSP-14774

Add System.IOUtils.TFile.Size - with example RTL, RTL\Delphi RSP-14122 implementation

TStream.CopyFrom could be more generic RTL, RTL\Delphi RSP-12995

DateSeparator is default '/' instead of locale RTL, RTL\Delphi RSP-12860 separator

UTF8ToString(const S: array of _AnsiChr): String; RTL, RTL\Delphi RSP-10581 overload; Completely wrong

System.IOUtils.TPath.GetDownloadsPath RTL, RTL\Delphi RSP-10375 returns wrong folder name

TBluetoothLEManager.DoDiscoveryEnd uses RTL, RTL\Delphi, RSP-31131 wrong variable RTL\Delphi\Bluetoot h

StrToDate treat yyyy-MM-dd same as yyyy-dd- RTL, RTL\Delphi, RSP-16700 MM RTL\Delphi\Date/Ti me

StrToDateTime doesn't recognise mmm / RTL, RTL\Delphi, RSP-14161 mmmm formats - undocumented RTL\Delphi\Date/Ti me

Implementation of TEnumerable.ToArray is RTL, RTL\Delphi, RSP-30870 causing severe and unnecessary code bloat RTL\Delphi\List/Coll ections

System.Net.Socket FState should not be private RTL, RTL\Delphi, RSP-19016 RTL\Delphi\Net

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Pos (ansiString) is 3x more slower than Pos RTL, RTL\Delphi, RSP-33454 (UnicodeString) RTL\Delphi\Strings

Make TThreadPoolStats.GetThreadPoolStats RTL, RTL\Delphi, RSP-31273 public RTL\Delphi\Threads

TEvent doesn't work as expected on iOS and RTL, RTL\Delphi, RSP-16033 macOS targets RTL\Delphi\Threads

Paramers of TFNOleUIHook and OleDialogHook RTL, RTL\Delphi, VCL RSP-30491 are declared wrong.

Invalid date on validate certificate THTTPClient RTL\Delphi\Net RSP-33660

THTTPClient does not send data to server when RTL\Delphi\Net RSP-33177 using the method Patch

System.Net.Socket.TSocket.EndReceiveString RTL\Delphi\Net RSP-32473 exception

Support TLS 1.3 in TNetHTTPClient for Windows RTL\Delphi\Net RSP-23445

Soap Android - Server certificate invalid or not RTL\Delphi\Net, RSP-33609 present SOAP

In HTTPSoapDispatcher.DispatchRequest an SOAP RSP-15891 exception is nearly hidden

Access violation in TTabSheet.SetTabVisible VCL RSP-33557 when PageControl.MultiLie=True

TNumberBox Format VCL RSP-33545

CM_STYLEDCHANGE is broadcast twice VCL RSP-33221

The custom titlebar raises an stack overflow VCL RSP-32424

TPageControl.RemovePage should not switch VCL RSP-32327 pages if the removed page was not active

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

Redundant code in some VCL classes VCL RSP-32281 constructors/destructors

TDBGrid Title Font is Scaled Twice VCL RSP-31967

TVirtualImageList.Images property setter. VCL RSP-31544

TEdgeBrowser fails if placed on non-active tab of VCL RSP-31163 a page control

Redundant checks for nil before freeing object VCL RSP-30587 instance

Redundant assignment to timer Enabled VCL RSP-30574 property before destroying timer

SetSelText and SetSelTextBuf reset Undo buffer VCL RSP-30405

TSearchBox must implement VCL RSP-30203 CM_WANTSPECIALKEY

TEdgeBrowser only work on Application VCL RSP-29593 MainForm

Some improvements that I propose to you [VCL] VCL RSP-29355 can add TLabelDBEdit component? VCL RSP-27868

Changing from WindowState = wsMaximized to VCL RSP-27847 wsNormal: form is size 320x240

Add skip disabled overload to VCL RSP-27438 TPageControl.FindNextPage

Add DropDownWidth property to the VCL RSP-26519 TComboBox

Provide Ontracking event for TTrackbar VCL RSP-25957

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA

TToolButton width is not scaled if the button is VCL RSP-20496 invisible

CheckListBox doesn't invalidate text when VCL RSP-18340 ItemEnabled changed

TCustomListView reintroduces property VCL RSP-16886 MultiSelect

E2033 on TrackMouseEvent() VCL RSP-16181 vcl treeview add checkbox VCL RSP-15270

TRadioGroup.TabStop doesn't control whether VCL RSP-14201 radio buttons receive focus

VCL TScrollBox does not automatically support VCL RSP-13425 mouse wheel

XE8: VCL: TToolbar: Chevron button is missing VCL RSP-11394

Themed popup menu do not respect image size VCL RSP-10412

Bug in Vcl.Menus with TMenuItem.Shortcut and VCL, VCL\Other RSP-33296 Numpad numeric keys

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA