Delphi Professional 11.3 Alexandria

Released: Feb 27, 2023

Updates in 11.3 Alexandria

Features

IDE Enhancements

  • ToolsAPI support for the Code Editor
    • Added a new set of Tools API interfaces that users can use to customize the Code Editor, such as painting, querying information about editors and their contents, getting events for the Code Editor, and more.
      • The new API now also makes it very easy to write plugins directly integrated into the Code Editor.
      • Several editor functions have been moved over to use the new API.
      • These APIs allow users to intercept all stages of painting in the editor, either by editor line, editor gutter, or editor text, and with events called both before and after each stage, and either add to what the IDE does or replace it.
      • For an editor, users can query its state, with a multitude of information available, and query a more detailed state for each line. Paint events include full context. Use this to do any conceivable editor painting or get any information you need about editors and what's present in them, even without painting.
  • Highlighting Matching Words in the Code Editor
    • The Embarcadero RAD Studio Code editor now has a new feature that allows you to see instances of the same word you have selected. Words are matched anywhere onscreen, including in comments. In addition, the feature has the following options:
      • Highlight matching words when a word is selected (double-click to select a word).
      • Highlight matching words when the cursor is inside or adjacent to a word. Users can turn off the feature if required.
      • Disable the highlight keywords as a match function with the UI setting. This is enabled by default.
  • Delphi LSP
    • The HelpInsight window now uses a different method to calculate its size and matches the content much better now.
    • When completing a type declaration, private types declared within that type will now be shown in code completion.
  • Subversion
    • Starting with this release, RAD Studio no longer ships the Subversion DLLs, requiring you to install Subversion if desired. Like Git and Mercurial, the IDE looks for their previously configured location. This means that the Subversion version is not correlated to the IDE version and can be kept up to date separately.
  • IDE High DPI, VCL form designer, and Quality
    • Users can now create a new Markdown file through File > New.
    • When the IDE is run with elevated privileges, the IDE now indicates this with '[Administrator]' at the start of the title bar caption.
    • You can now locate the current build configuration's output file in Explorer by right-clicking the build config and choosing the Show In Explorer option.
    • Replaced the editor structural flow icons (icons in line with the code indicating when a method returns, control flow breaks or moves, etc.) with high DPI versions.
    • The opacity of disabled editor text (ifdef-ed out) can now be changed via a UI option on the Editor > Search page.
    • The font size for the VCL designer's hint window has been improved.
    • The icons for SyncEdit and structure flow in the editor have been replaced with high-DPI icons.

Compilers and Toolchains Improvements

  • Delphi Compiler
    • Improvements for the Delphi LSP processing and performance enhancements.
    • Codegen improvements and corrections.

Debuggers

  • The LLDB Debugger for Linux has been rebuilt with Ubuntu 18.x and Python 3.7.x, as its minimum requirements.
  • All non-Microsoft Windows platforms have been moved to LLDB. As a result, there is no support for GDB anymore.
  • Formatting specifiers are now supported in expression evaluation for LLDB.
  • Added new PAServer versions.
  • The inspector Range menu option is now available for arrays.
  • Android64 now supports naming threads.

Libraries Improvements

  • Delphi RTL
    • Given that Android's versions 12 and 13 have modified the underlying implementation of the Android native memory manager's realloc C-API, the pre-allocation logic (256 bytes are added for each length change for String and Dynamic-array if the memory footprint is larger than 64K bytes) has been modified to pre-allocate more than needed to reduce the realloc operating system calls and their copy operations.
    • The system RTL function Move has been optimized for better performance on modern CPUs, running 2 times to 5 times faster, depending on the actual CPU family and bitness.
    • Updated ZLib library to version 1.2.13.
    • Improved performance of _InitializeRecord.
    • Improved performance of TDirectory.GetFiles for many files.
  • VCL
    • The TControlList VCL component now offers the ability to select multiple items using the following new properties and events:
      • Property:
        • TCustomControlList.MultiSelect.
        • TCustomControlList.Selected.
      • Method:
        • TCustomControlList.ClearSelection.
        • TCustomControlList.SelectAll.
    • Improved StyleHook code to avoid possible Access Violations.
    • TreeView graphical improvements on scaling and graphical objects rendering improvements for several other controls.
    • Improved NumberBox input with an active MinValue.
    • Improved support for TControlList controls with a very large number of (virtual) items.
  • FireMonkey
    • Added a new TBiometricAuth component that provides the means of authorization via biometrics, such as Face ID, Fingerprints, on Android and Apple iOS devices.
    • Added a new interface IFMXPhoneDialerListenerService service that intends to track changes in the state of the phone system service (Calls, Carrier, CallState).
    • Added Apple macOS ARM 64 to Radiant Shapes supported platform.
    • Improved Firemonkey accessibility support for Microsoft Windows when inspecting with Accessibility Insights and addressed an AV in FMX.ScreenReader.Win.pas.
    • Several TWebBrowser improvements for the Windows platform, including the availability of 3D FMX apps and the implementation of TCustomWebBrowser.CaptureBitmap for Microsoft Edge.
    • Some iOS platform translation improvements for the iOS VirtualKeyboard Done button and iOS pickers buttons: iOS scrolling fixed for TDateEdit, TTimeEdit, TComboBox, and TiOSAddressBook.SaveContact.
    • Added DocumentFile Provider support for Android.
    • Android improvements when moving the cursor in a TMemo with finger slide, TAddressBook component.
    • Windows improvements with TForm Cursor and TWinMultiDisplay.FindDisplay.
    • FireMonkey graphics improvements in TBitmap.AssignFromSurface, TCanvas.TransformRect and TBitmap.Canvas.BeginScene, plus removed artifact lines in TMemo and TGridPanelLayout.
    • Improvements and fixes for many controls, including Multiview (with controltype = platform), SpeedButton (isPressed when used in a TFrame), Label (FocusControl), TTreeViewItem's IsChecked and TEdit works inside a TVertScrollBar.
    • ClipChildren now takes XRadius and YRadius into consideration.
    • Improvements to Tab key cycling through all controls.
  • Data
    • Added preliminary support for UTF8 in database RTL (TStringField), FireDAC ODBC, DatS, or DataSet to better support ODBC drivers on Linux.
    • FireDAC offers improvements for PostgreSQL performance. There is a new PostgreSQL connection setting FastFetchMode=Choose|Default|All|First, where:
      • Choose - lets FireDAC choose what the appropriate optimization goal is. This is the default value.
      • Default - FireDAC does not optimize anything. Previous mode.
      • All - FireDAC always optimizes resultset fetching to finish fetching all records.
      • First - FireDAC always optimizes resultset fetching to finish fetching the first record.
    • Improved High-DPI scaling for TFDQuery Editor Options and for the font in the query editor.
    • Added a proper version of the MongoDB client library to provide support for logging into a MongoDB server and for a new transaction feature
    • Made TBindingExpression case insensitive.
    • Verified FireDAC drivers' compatibility with PostgreSQL version 14 and version 15.1.
    • Added new NCharReplacement configuration for FireDAC Oracle connection and added support for q['...'] "NCHAR String Literal Replacement".
  • HTTP and Rest Client libraries
    • Added automatic token refresh to TOAuth2Authenticator which improves support of Google REST services authentication and the expiration of TOAuth2Authenticator access tokens.
    • Improved support for NestedElements in TRESTResponseDataSetAdapter.
    • Added support for using client certificates with REST components on Android.

Other Enhancements

  • Added a new notarization process for Apple macOS.
  • Microsoft Windows signing now includes support for the time stamping of MSIX files.

Fixes

IDE Enhancements

  • Delphi LSP
    • Hovering over a static method implementation now works as expected.
    • Ctrl+Left Click navigation now works as expected when using a read-only file.
    • When pressing Enter inside an incomplete anonymous method, the IDE no longer adds an incorrect semicolon "end;").
    • An issue where Ctrl-Clicking to navigate did not work when the area to navigate to was surrounded by compiler directives has been resolved. The parser can now handle simple conditional compiler directives such as:
      • {$IF CompilerVersion > 24 and Defined(Windows)}.
    • Code completing generic types inside a generic method declaration, both the result type and inside the generic <> type declaration, now works:
      • function Test<TResult>(a: T): TResult; // TResult now suggested in both places.
    • Resolved an issue where DelphiLSP could not determine the path to the source code of a module if there were two or more different files with the same names in different projects.
    • Resolved the issue where code completion did not work in an "if statement" that used < or > symbols in its condition.
  • IDE High DPI, VCL form designer, and Quality
    • Resolved an issue where the position of non-visual components was incorrect when migrating from a pre-version 11 version of RAD Studio to an 11.x version.
    • When the form scaling changes and the system scaling changes, non-visual components will retain the correct position and scaling.
    • Resolved an issue with font sizes affecting frame scaling in high DPI mode, especially running the designer at low DPI.
    • Other IDE enhancements:
      • The New Items dialog had an issue with Copy / Inherit / Use when the view was changed. This is now resolved.
      • An issue where path dialogs did not show invalid paths in gray is resolved.
      • Some stability issues using secondary editor windows have been resolved.
      • Markdown files can now be opened in multiple editor windows simultaneously, and errors will not be displayed in the Structure view for Markdown files.

Compilers and Toolchains Improvements

  • Delphi Compiler
    • Fixes for the managed records and for issues with generics and constraints.
    • Addressed a regression, which caused the compiler to report completely wrong Total Lines in the Compile Progress dialog. This was visible when building Spring4D.

Debuggers

  • Resolved issues attaching to processes and loading symbols with LLDB.
  • Resolved issues for Android32 around set evaluation and expression evaluation related to the switch to LLDB.

Libraries Improvements

  • VCL
    • Addressed scaling issues in the TDBGrid, TComboBox, and TStringGrid controls, among others, and DPI change issues in several components, including TListView, TComboBox, and TStringGrid controls. Also, it improved the overall behavior when a form Scaled property is False.
    • Fixed some TBalloonHint regressions.
    • Addressed a conflict in the TRichEdit control between SpellChecking and custom Popup menus.
    • Resolved issues with the custom title bar button placement and size, including canvas size and the left caption margin.
  • FireMonkey
    • FireMonkey apps now properly handle terminate requests from Windows Restart Manager.
  • HTTP and Rest Client libraries
    • The TMultipartContentParser property now avoids treating every part with ContentType as File.
    • RAD Server, the TEMSDataSetResource component LIST functionality now returns properly formatted dates in the JSON structure.
    • Addressed a memory leak in a SOAP Server application when serving an attachment.