C++Builder 11.2 Alexandria

Adds IDE support for Markdown plus VCL-Based HTML preview.
September 8, 2022
New Version

Features

IDE Enhancements

  • High DPI VCL Designer - The VCL designer now uses a Microsoft Windows-like style when designing, meaning controls in the designer always draw using this style unless this feature is disabled. This style matches the Windows light or dark theme, whichever Windows is currently using.
  • Editor Tabs - In version 11.2, some tabs, such as source control or COM-type library editors, are given different colors to be easily differentiated from normal code tabs. You can control if tabs may display customer colors via the new tab colors configuration. There is support for custom tab colors via the ToolsAPI in the new INTACustomEditorView280 interface.
  • CPU View Syntax Highlighting - The CPU view now syntax-highlights the assembly code onscreen.
  • Markdown Support - The IDE now supports Markdown (.md) files and both Markdown and HTML richly formatted previews. Opening a Markdown file will show a rich rendered preview of the file. Markdown and HTML can only be edited in the code editor, not the formatted preview. Markdown files support:
    • Email and Web links, which open in the system default email client or web browser.
    • File links, which open in the IDE.
    • Images.
    • Tables.
    • Plus other standard Markdown formatting.
  • Removed Internet Explorer - The embedded Microsoft Internet Explorer control has been fully removed throughout the IDE. The rich HTML preview, the Markdown support, and HelpInsight all use a native VCL HTML control.
  • Font and Styles - Previous releases supported changing the IDE main window’s font and font size via editing some registry keys. Version 11.2 offers the option to change the IDE UI font and size in the IDE Options > User Interface page in the ‘IDE Font’ section. Similarly, the UI has now re-enabled a previously hidden setting to let the IDE use a custom style. The Options > User Interface > IDE Style page lets you use a custom VCL style in addition to the Light, Dark, and Mountain Mist styles. Both these are primarily intended to assist accessibility.
  • Projects View - The 11.2 release changes the behavior of double-clicking an item in the Projects view so that it only expands/collapses a tree entry if it represents a folder. Now, double-clicking performs the following actions:
    • Double-clicking on a unit opens the unit.
    • Double-clicking on a folder expands or collapses it.
    • Double-clicking on a project activates the project if it is not the currently active project. If it is a currently active project, it will expand/collapse it.
    • Double-clicking a C++ form selects and opens the form without expanding the node.
  • GetIt Enhancements - The GetIt package manager dialog now allows users to filter by Language. The package manager dialog also allows you to install a package from a local file and online packages. To do so, use the ‘Load Local Package’ button under the filters on the bottom left of the GetIt dialog. The Welcome page now contains a restored ‘New In GetIt’ pane. Displaying the most recently modified packages in GetIt and facilitating the discovery of new or recently updated libraries and packages. The Welcome Page will, by default, reopen when all projects are closed.
  • Other IDE Improvements
    • The Reopen list is now populated when a project is opened, not closed, meaning if the IDE is terminated before closing a project, you will see your most recently opened project visible.
    • There are several performance improvements and general quality fixes when running the IDE under Remote Desktop.
    • The Compile progress dialog and the Updating Local File Cache dialog (used when updating a remote SDK) now format the lines of code and number of bytes using the local locale, i.e., with commas or other separators. Making the numbers easier to read.
    • To find items easier, the options in File > New > Other > Inheritable Items are now sorted.
    • You use ‘Options’ in the IDE for changing settings (e.g., the IDE and Project ‘Options’ dialogs), but several menu items that opened options used ‘Properties’ instead. These have been renamed, so now there are: ‘Tab Options’ on the editor tabs context menu, ‘Editor Options’ on the editor context menu, and a new ‘Status Bar Options’ for the editor status bar.
    • There are also various quality fixes across the IDE, especially for high DPI.

C++ and cquery

  • Significant Cquery performance improvements, such as greatly improved performance, improving projects and project groups management, and limiting CPU consumption, are included.
  • C++ LSP - In the IDE Tools Options, under Tools > Options > User Interface > Editor > Language there is a tab called “LSP Behavior” on the C++ LSP page. This has been available since 11.0, but we have a new third setting, ‘Index all files in the project group.’ For more information, please read the Configuring C++ Code Insight documentation to tune its behavior for your projects and needs.

Compilers and Toolchain Improvements

  • Android Target API - This release targets Android API Level 32 (up from API level 30 in 11.1). The main reason is Google Play store mandates Android API Level 31 starting in August 2022 for new submissions and in November 2022 for updates. There are several related changes to the Android toolchain for both Delphi (32-bit and 64-bit) and C++Builder (32-bit), including:
    • Updating the JDK version installed with RAD Studio to JDK 11 (required by the latest version of the Android SDK and tools).
    • Upgrading the default value for the 'targetSdkVersion' manifest attribute to 32.
    • Updating the 'AndroidManifest.xml' template to set a value for the 'exported' attribute in the declaration of the 'FMXNativeActivity' activity (required by API Level 31 support).
    • RAD Studio version 11.2 now supports generating a PKCS12 Keystore and also includes new permissions in the Application > Uses Permissions page of the Project Options dialog. And an update to the Android Java SDK finder so that if the Eclipse Adoptium JDK is available, it will be used in preference to other JDKs.
  • C++ Compiler and Toolchain improvements - This release includes quality improvements in the C++ toolchain. Some of the quality improvements include:
    • Ilink64 has a number of fixes.
    • The compiler will now give an error when exceeding the VIRDEF maximum. Previously, this would cause the linker to give an error.
    • STL iostreams performance has been greatly improved and now takes less than 25% of the time.
    • Improvements to the object converter (omf2coff).
    • Improvements to delay loading.
    • A number of record helpers from Delphi are integrated into C++.
    • A number of general quality improvements in the compiler and RTL.

Debuggers

  • LLDB for Win64 C++ - You can now do remote debugging using the Win64 C++ debugger.
  • Connecting Python 3 - Running LLDB on Linux via PAServer requires Python 3 to be installed, and that LLDB can find it.

VCL and FireMonkey Changes

  • WebView2 in TEdgeBrowser and TWebBrowser
    • The new TWebBrowser.EdgeUserDataFolder property lets you specify where user data (cookies, caches resources, etc.) are stored.
    • The new TWebBrowser.EdgeBrowserExecutableFolder property lets your app find and use a specific WebView2 runtime instead of using the system’s version.
    • Updated the definition of the Web View 2 API (not binary compatible with the VCL components), including support for the ICoreWebView2_2 interface.
  • General VCL Improvements
    • Improved the TNumberBox input management.
    • Improved the TDateTimePicker format settings.
    • Using CardPanels inside a frame.
    • Deleting a TCardPanel.
    • Improved the PopupComponent property of a TButton with bsSplitButton.
    • Improved the TListView overlays when the OwnerData is True.
    • Improved High DPI issues for TBalloonHint.
  • FireMonkey
    • TBufferedLayout reacts to an update of the styles of contained controls.
    • Added hints to the buttons of the FMX style designer.
    • Improved bitmap processing on iOS with Metal.
    • Support for an iOS status bar with dark icons.
    • Improvements over TPathData processing and rendering, both in terms of quality and performance, including quadratic Bézier curve commands and other transformations.
    • Increased the rendering speed of TPath on GPU canvas.
    • TListBox now supports Shift+Click to select a range.

RTL and Data

  • FireDAC reFind Utility - The reFind utility can assist the migration of dbGo projects to FireDAC. In addition to a migration script, there is also a compatibility unit, FireDAC.ADO.Migrate.pas. When performing code replacement with reFind.exe, you can use a new option to "leave the old target code as a comment instead of deleting it". Use the new /C switch to comment instead of removing code.
  • Updated FireDAC Drivers
    • FireDAC supports the latest Microsoft ODBC Driver for Microsoft SQL Server (version 18).
    • Improved the MSSQL Driver from macOS on M1 with better handling of SQL_C_WCHAR.
    • Added support for MongoDB’s new transaction feature. The main MongoDB API is located in FireDAC.Phys.MongoDBWrapper.pas unit. The new transaction support is provided by the new API in:
    • TMongoTransactionOptions class.
    • TMongoSession class.
    • TMongoConnection.NewSession method.
    • TMongoCollection.Session method.
  • FDMonitor and FDExplorer
    • FDExplorer / FDMonitor now has syntax highlighting in SQL views.
    • FDMonitor has a new "SQL Output" view for tracking only SQL commands.
    • FDMonitor has new options for tracking the "SQL Output" view.
    • FDExplorer / FDMonitor now has Search / Search Next commands.
    • Added new items to TFDMoniEventKind: ekSQL, ekSQLVarIn, ekSQLVarOut to produce output to "SQL Output".
    • Optimization of ODBC drivers with tracing is enabled when ekVendor is excluded.
    • Optimization of TFDConnectionDef loading.
    • Font size on HighDPI was improved for both FDExplorer and FDMonitor.
    • The embedded FireDAC SQL text property editor now supports SQL syntax highlighting, line numbers, and support for common shortcut keys like Ctrl+F, Ctrl+R, F3, and Alt-G.

RTL Enhancements

  • ZLib
    • Updated the integrated ZLib to 1.2.12 to address a recently patched vulnerability. Some other ZIP file behavior, including using “stored” and not deflated files, comment management, and the behavior of ZDecompressStream with truncated Zlib data, have been improved. System.Zip also can now preserve symlinks on Linux.
    • The performance of Zlib when writing small Data packages has been improved.
  • General
    • There is a new TProxySubrangeStream class in System.Classes.pas. The new stream class represents a "subrange of another stream" and acts as a proxy.
    • The PCRE regex engine compiles with JIT enabled, offering significantly better performance. Additionally, the library now exposes the procedure TPerlRegEx.Study in the TRegEx record.
    • Several RTTI-related improvements include TVirtualMethodInterceptor with const parameters, invocation with "pascal" calling convention, and TVirtualInterface issue with float values on iOSDevice64.
    • Optimized several core functions, including (among others) TStringHash, InternalUniqueStringA, and InternalUniqueStringU, plus two System unit functions, _UStrEqual and _UStrCmp, and SysUtils.CompareStr.
    • System.SysUtils.StrToFloatDef no longer changes the numerical exception mask.
  • HTTP and REST Client Library
    • TRestRequest’s handling of MIME types and multipart/form-data has been improved. In addition, proxy detection has been improved for Windows, and THTTPNetClient SSL-certificate checks have been improved for Android.

RAD Server

  • New auth token/session expiration for RAD Server. There is a new parameter in the RAD Server configuration (EMS.INI) called SessionTimeoutAdded new configuration options in emsserver.ini to specify the paths to FDConnectionDefs.ini and FDDrivers.ini FireDAC configuration files.
  • Made it possible to use TEMSFireDACClient.PostUpdates with a custom session token.
  • Improved the list function of TEMSFileResource.
  • Removed the incorrect 2-users limitation in RAD Server Lite.
  • Added the IP Address and DateTime to RAD Server logging.
  • Added an Execute context menu item to the TEMSFireDACClient component (similar to the TRESTRequest component) so that you can create persistent fields based on the result set.

Querying SKU and Platforms on the Command Line and via ToolsAPI

  • In 11.2, third-party components or plugin vendors can query what SKU is installed (e.g., Architect, Community, etc.), what platforms are installed (Win64, macOS ARM, etc.), what personalities are installed (Delphi or C++Builder or both), and if it is a Trial. Querying SKUs can be useful for making decisions when installing components, including in your installer, and changing behavior at designtime inside the IDE itself.
  • Run bds.exe with the new /ProductInfo:KIND parameter to get the console´s output. KIND can be Trial, SKU, Platforms, or Personalities. Learn more about the new parameter on the General options for BDS.EXE page.
  • The new IOTAVersionSKUInfoService interface allows you to query the list of installed platforms, the SKU, and if the IDE is running as a Trial version.
IDE support for Markdown

C++Builder Professional

Build native C++ apps 10x faster with less code.

Got a Question?

Live Chat with our Embarcadero licensing specialists now.