General
Declaration of Inline Variables
The declaration of local variables in the Delphi language in version 10.3 has been significantly changed, offering much greater flexibility. According to Pascal language rules, all variable and constant declarations had to be placed in a "var" or "const" block before the start of a function, procedure, or method code.
With the new syntax for inline variable declarations, you can declare a variable or constant directly in the code and assign a value to it within the same statement. It is also possible to declare variables within a nested code block with limited scope and lifetime restricted to that block.
Type Inference
Inline declared variables can also utilize type inference. For an inline variable with a direct assignment, no type specification is required because the type can be derived from the assigned value.
Traditional Memory Reference Counting in the Linux Compiler
The 64-bit compiler for Linux in version 10.3 has been "reset" to use the non-ARC implementation of object memory management, which behaves exactly like the Windows implementation.
The NEXTGEN definition has been disabled for the Linux 64-bit compiler.
AnsiString/AnsiChar Support on Linux
RAD Studio 10.3 Rio has added support for the older-style AnsiChar/AnsiString data types on Linux. Use these types carefully since Unicode remains the preferred string type even on Linux, and Ansi code pages do not match between Windows and Linux. However, this can improve compatibility with existing low-level string management code.
Delphi ABI Compatibility
In previous releases, there were slight platform differences in the passing of ABI-based methods, especially with records sized between 4 and 8 bytes passed by value or by reference. These differences have now been addressed, resolving issues that occurred when migrating C++ Win32 code to Win64, particularly when interacting with Delphi via event handlers.
Most changes relate to fastcall
, but RAD Studio 10.3 Rio also includes improvements in support for cdecl
and other calling conventions to ensure complete compatibility, even on mobile platforms.
IDE
Improved Look and Feel
The appearance of the main window and some key dialogs in RAD Studio 10.3 Rio has been enhanced, offering a modern style with a focus on readability and clarity.
Two New Themes
RAD Studio 10.3 introduces a new light theme and a reworked dark theme focused on usability during long working hours.
Project and IDE Options
The dialogs for IDE and project options received a cleaner appearance with controls aligned with regular spacing. The gray background has been replaced with white, giving the windows a more modern look. Every settings page includes a title, and options hierarchies are displayed in full width.
The options hierarchies have been expanded with new categories, and some options have been moved to new categories. For example, application icons or images are no longer located under the "Application" page but under Application > Icons
.
Both options dialogs can be searched using a new search box located in the title bar.
IDE Main Window
The main window of RAD Studio 10.3 has been made clearer, with improved readability and better alignment. Changes include:
Removal of unnecessary frames and lines. Sections are distinguished by background colors rather than borders.
Improved readability and click targets. Editor tabs are larger, with white text on a dark background for easier reading and clicking, and dockable windows have a larger title bar.
Improved focus handling. The current focus area is clearly highlighted in a vibrant blue background, making it obvious where the keyboard focus resides.
Renaming of some windows. For example, "Project Management" is now called "Projects," and the "Tool Palette" is now just "Palette."
IDE Insight for global search is now located in the title bar of the IDE.
Object Gallery Dialog
The Object Gallery dialog displays items with names and descriptions in a scrollable list. To make searching for items easier, certain items are now located in multiple categories (e.g., a dynamic library is listed under both "Windows" and "Cross-Platform"). The search function has been moved to the title bar.
Compile Dialog
The Compile dialog now displays the number of hints, warnings, and errors. A new layout makes the dialog easier to navigate.
GetIt Package Manager Dialog
The GetIt Package Manager dialog now presents items in a scrollable list instead of pages. It has a cleaner appearance, and the search function has been moved to the title bar.
IDE Enhancements
Faster Loading of Forms with LiveBindings
Loading forms with LiveBindings or many other controls is now significantly faster in RAD Studio 10.3. The loading time has been reduced from thirty seconds (for very large forms) to just a few seconds.
Fix Pack Improvements
RAD Studio 10.3 Rio incorporates some fixes and enhancements from Andreas Hausladen’s "IDE Fix Pack". Most of the fixes focus on the IDE and include:
High-resolution timer triggered by Virtual TreeView
Optimizations of
FindHInstance
Debugger using
CREATE_DEFAULT_ERROR_MODE
when creating a processOptimizations of
IndexOf
andName
inTStringList
VCL Integrated Translation Architecture and Tools
Although the architecture and tools for VCL Integrated Translation are still included in 10.3, no further improvements have been made, and they will be removed in a future release. It is advisable to reduce dependency on these tools and migrate to a different translation tool.
VCL
Support for High-Resolution Image Lists
The new high-resolution VCL ImageList
control in 10.3 allows developers to create or update VCL Windows applications for high-DPI displays, offering pixel-perfect multi-resolution images for all controls and custom drawing operations.
Using the TImageCollection
component along with the TVirtualImageList
component separates the concept of a collection of images (each with multiple resolutions) from a list of images in a specific size used by a control.
The TVirtualImageList
is fully compatible with traditional image lists and serves as a 1:1 replacement, providing an HIMAGELIST
handle. The component can be used by VCL controls and by code that calls image lists via the Windows API.
TImageCollection
supports images with alpha channels, including PNGs. There are also migration tools to convert traditional TImageLists
to the new image collection and virtual image list.