Embarcadero is very excited to announce the release of RAD Studio 12 Athens, along with Delphi 12 and C++Builder 12. The RAD Studio 12 Athens release is packed with exciting new features that are laying the foundation for the future of the product.
Table of Contents
Key New Features
This is a summary of the key features introduces in RAD Studio 12. The following sections offer more details, but it’s good to start with a summary:
- Visual Assist integration in the IDE for C++Builder, providing best-in-class code completion, code navigation and rename refactoring for the C++ language
- A preview of a significantly updated CLANG-based C++ compiler for Win64, to support the most recent C++ standard language features and offer a better integration with external libraries and C++ code
- Delphi language additions including multiline string literals, to address some relevant customer requests
- Skia support in FireMonkey, offering higher performance and quality in rendering graphics and UI controls across all target platforms, with the adoption of a new foundation for FireMonkey
- A reworked MDI and a new tabbed UI architecture for VCL to help our customers modernize their existing applications, adding support for HighDPI and styling to existing programs with minimal effort on their side
- A new FireDAC Query by Example (QBE) component for easier data filtering and a new JSON wizard for Delphi to add a mapping of the data in the popular JSON format to objects, like we have for XML
- Many IDE productivity and quality improvements, to make it easier and faster to use RAD Studio for every day tasks
- Support for smart IDs in RAD Server, to make customer’s hosted REST APIs more powerful and flexible, while maintaining RAD Server easy-of-use
Wonderful Things for C++
A significant focus of this release is on C++Builder and our C++ toolchain (available also in RAD Studio). The team has been focused on two key C++ improvements: modernizing our C++ compilers and toolchain, and providing amazing productivity with code completion as well as adding refactoring and navigations by integrating Visual Assist.
The C++ toolchain upgrade is an amazing overhaul of our C++ support. It includes not just a new version of Clang, but also the C and C++ runtime libraries and the STL (the C++ Standard Template Library) plus the linker and debugger. The goal of this large effort is to offer modern C++ standards, with the ability to run C++ code you find in recent libraries and projects, easily use third party libraries, leverage modern safe coding standards, have more performant apps and excellent debugging. It also aims to directly improve areas like linking and the STL, and moves to Windows platform standards such as using the COFF and PDB object and debug formats, potentially allowing you much wider compatibility with other tools. You can read more about this feature in this preview blog post: https://blogs.embarcadero.com/win64-clang-toolchains-in-rad-studio-12/
In 12.0, we are shipping a Preview of this new C++ toolchain, available as a command line compiler. We’ll continue working on the IDE integration of this new C++ toolchain, in parallel with the existing C++ compilers, and on the integration with the Delphi libraries in RAD Studio, including the VCL and the FireMonkey UX libraries. We plan to make these updates available to customers on subscription as they become available.
Another significant innovation for C++Builder in 12.0 comes from the integration of the Visual Assist technology to offer better Code Insight including code completion, code navigation and refactoring. These are key productivity tools that assist in common development tasks, from code completion which is invoked often while coding, to navigation which allows developers to easily find relevant parts of their code instead of manually searching a codebase, to refactorings which help code organization and safety. We’ll have a significant initial subset of the VA features available within RAD Studio, including finding symbols and references, showing the project Outline, navigating from implementation to declaration and back, and rename refactoring. You can read this teaser blog post about VA in C++Builder at https://blogs.embarcadero.com/yukon-beta-blog-c-and-visual-assist-in-rad-studio-12-0/
Some Nice Delphi Additions
On the Delphi compiler side, 12.0 adds a few small but nice extensions, including the support for long string literals, multiline string literals, limited by triple quotes, to allow easier embedding of SQL, HTML, JSON, XML and similar multi line text within an application source code. You can read more about this feature in this preview blog post: https://blogs.embarcadero.com/yukon-beta-blog-delphi-language-modernizing-string-literals/. The Delphi 12 compiler also offers a weak type alias definition for NativeInt, for enhanced Win32/Win64 compatibility, better support for NaN floating point number comparisons, and the disabling of floating-point exceptions on all platforms.
In terms of platform support, Delphi 12.0 offers compatibility for the Android API level 33, which is a Google requirement for the Play Store app submission.
FireMonkey and Skia as a New Foundation
In terms of UI libraries the most significant set of improvements in RAD Studio 12.0, for both Delphi and C++Builder, comes from the integration of the very popular cross platform rendering engine Skia, in FireMonkey. This is done by integrating the Skia4Delphi open source project, but also extending it with Vulkan support, support for effects and filters with the Skia Shading Language, a WebP Encoder, printer support, and printing to PDF.
RAD Studio Skia support includes direct APIs, specific UI controls (TSkAnimatedImage, TSkLabel, TSkPaintBox, and TSkSvg), and the automatic mapping of FireMonkey UI controls UI rendering via Skia. In general terms, Skia improves the quality of the rendering and the performance. Notice that the same Skia UI controls are also available in the VCL windows library.
Outside of Skia support, which offers a new solid foundation for the future of the library, we have improved our Android support matching many recent platform enhancements, added split screen support, to allow FireMonkey application to work in a side-by-side pane on both iOS and Android, and extensively reworked the text input capabilities of the single-line TEdit and multi-line TMemo controls.
Another significant improvement to the IDE, for FireMonkey development, is the introduction of a wizard to generate icons and splash screens at all of the resolutions, required by Apple and Google, starting from a single SVG image and the support for Android’s adaptive icons, as you can read in https://blogs.embarcadero.com/multi-device-icon-generator/
VCL Modernization with MDI and Tabbed UI architecture
We have been doing VCL modernization work to help our customers migrate their existing applications (often very large and well established in their target industry). In 12.0 the focus is on keeping alive the old fashioned, but still popular, MDI (Windows’ Multi Document Interface) model. With the new release customers will be able to adopt full HighDPI support for MDI applications and also adopt VCL styles. We’ll allow our customers to bypass platform issues caused by the fact Microsoft has been neglecting support for MDI in recent years.
In addition, RAD Studio 12.0 introduced a new tab-based UI (like the one from Google Chrome and many other popular apps) as an easy migration from MDI or a brand new model, with the new TFormTabsBar control. The VCL library has improvements in futons management for High DPI screens.
As part of the VCL improvements, the new release is introducing a number of new designers to help simplify the work: There is a new string list editor, a multiline string editor, and quick configuration dialogs for buttons, radio groups and panels. Some of these handy tools were originally part of KSVC (Konopka Signature VCL Controls) and are now available to anyone, even without installing this add-on control pack.
Beside the core RTL definitions, we have created a new set of units with the complete Windows API headers converted to Object Pascal, to make it easier for Delphi developers to call any Windows platform API we don’t expose in our component libraries. This API conversion includes 311 Delphi header files with 41 MB of code, covering the entire platform API provided by Microsoft.
Additionally, we have improved the Edge browser integration with new interfaces, properties and events, matching the improvements to the platform WebView 2 control since our last release. Further improvements in the VCL with noticing are an extremely flexible TControl enumerator, Desktop Windows Manager (DWM) enhancements, and changes to Double Buffering mode.
New In Delphi RTL, Data, and Other Areas
There are many improvements in other Delphi core runtime libraries, leveraged also by C++ Builder. For our flagship database access library, FireDAC, we have added support for the classic QBE mode (Query-By-Example) which allows the development of a UI for entering simple data filtering criteria.
In addition, FireDAC components offer some additional functionality to help developers improve their application security, by limiting the type of SQL commands for a specific query control, forbidding multiple commands, and blocking further SQL changes. These improvements offer developers the ability to improve the application security, if used alongside other industry best practices.
RAD Studio 12.0 also introduces a new JSON mapping wizard, which can generate classes matching a JSON data structure and proper reading and writing code to read the JSON in a set of objects and stream it out to a new file.
RAD Studio IDE Improvements
There are many relevant changes in the IDE.
The first is a new UX for the feature installer, used for the initial product installation or to add features and platforms later on. This dialog box has been completely redesigned in behavior and in the UI, using modern VCL controls, which improves the first impression of the product for new users. It’s easier to use because all major installation options including extra addons are on one page, unlike the previous multi-step design. The new dialog also offers better error information, in case of installation problems.
The IDE has now syntax highlighting in many secondary windows, like the call stack and structure view. There are also improvements in source code searches, in the way the navigation toolbar works, and in the use of multiple edit windows, plus many other small tweaks.
Besides the introduction of Visual Assist integration for C++Builder, we have also done further improvements in the DelphiLSP support used for Code Insight. For example, code completion now includes language keywords, and code templates are shown in contextually correct areas of code during completion, as well as having better support for generics and completing arrays or array types.
Finally, the RAD Studio further extends the new ToolsAPI for the code editor to let customers and third party vendors create more flexible plug-ins for our IDE.
RAD Server and InterBase
There are some notable improvements for RAD Server, our REST server API hosting platform. The most significant change is the ability to easily support a smart ID model, using a standard library to define better identifiers for resources exposed by the server. RAD Server also offers better performance, data paging improvements, better session authentication and overall quality.
Finally, the new version of RAD Studio includes the developer edition and the embedded versions of recently released InterBase 2020 Update 5.
Quality, Quality, Quality
In addition to the features highlighted above, the release has been focused on quality work in multiple subsystems, starting with the IDE, but including also the Delphi RTL libraries, the VCL UI library, the FireMonkey cross-platform library, FireDAC and other data access layers, HTTP client and server components and RAD Server.
In RAD Studio 12, we implemented fixes for 1,027 issues reported by customers on Quality Portal (quality.embarcadero.com), addressing 877 public bug reports and implementing 150 customer requests for new features.
Ready to Go
Product trials for RAD Studio, Delphi and C++Builder 12 are now available and the updated product builds are live in the online store. Customers on Update Subscription can download and install RAD Studio 12 today using their existing license and will receive an email announcing the new release availability. Downloads are available in the customers portal at https://my.embarcadero.com.
For more information, you can check the following links:
- The Embarcadero Web Site page for RAD Studio
- The more detailed What’s New page in the DocWiki
- The list of publicly reported bugs fixed (also in DocWiki)
- The RAD Studio feature matrix PDF
- The demos repository can be found on GitHub
We are very happy with the work our team did for RAD Studio 12 Athens and we are certain you’ll equally enjoy using this new version of RAD Studio, C++Builder, and Delphi.
We’d also recommend you join our Preview Webinar, now turning into a Launch Webinar on Thursday November 9th, see the information and signup here.
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition
Will be available Community Edition 12? Now I can download only version 11.3.
The current community edition is equivalent to Delphi 11.3 Professional Edition or C++ Builder Professional Edition (depending on what CE you choose). They work great.
We currently do not have any timescales for a new version of the Community Edition, but we will let you know when that is decided.
Rad Studio 12 still has that annoying bug that is present in every version past 10.3.3, where if you declare variables in the body of a method, the refactoring stops working on all code after that method.
It might not occur on very simple programs, but it does when you start to have complex units. This has been reported several times, I can reproduce it anytime I want.
It is a small issue, but it prevents the use of either declaring variables in the body of your code, or the refactoring (especially rename).
Hi Eric, we are aware of this issue and it’s one we’re looking into. I know how annoying it is myself!
When ready visual assist for Delphi ?
That’s a popular question! Visual Assist is a superb new feature for C++ Builder isn’t it? Adding it for Delphi requires some significant engineering to make it happen and it is something we know a lot of people, having seen it with C++, would like for Delphi too. We already have a really big stack of things we want to address for future releases and we also especially want to continue focusing, too, on quality, quality, QUALITY. We need to work out how any potential ideas with a ‘Visual Assist for Delphi’ could fit into those plans without impacting Delphi and RAD Studio overall.
Do you have any plans for updating the functionality of FireMonkey? TMS used to make a great set of FMX components with significantly enhanced functionality compared to the base components, for example their Grid had so much more, but they no longer sell that so here’s hoping that you will be matching that functionality soon!
Hi Jay, we don’t have any specific news we can share at the moment but with RAD Studio 12 the incorporation of Skia added a lot of really profoundly useful features to FireMonkey and we’re continuing along that path with future versions.
With regard to TMS (I am a big fan of their products) they have the FNC Components which work on all frameworks, VCL, FMX, even TMS WEB Core and the grid they have in there has some interesting functionality which may give you a lot of what you’re looking for. If there’s something specific missing please let me know directly and perhaps cc Bruno at TMS too as we’re both interested to hear of what people would like to see.