RAD Studio Enterprise 11.1 Alexandria

用緩存的圖像和重新設計的 UI 改進了 GetIt 庫管理器。
March 17, 2022 - 15:27
新版本

特性

IDE Enhancements

  • General IDE Improvements
    • The “Start working” operation, after installation completes, now effectively restarts the IDE, so that the first execution is done with user permissions, instead of elevated permissions.
    • ‘Enable runtime themes’ is now turned on in the Base configuration of a project.
    • The ProjectRoot in a dproj/cbproj file should now always sort consistently.
    • The IDE Wait dialog’s ToolsAPI interface has had some parameters renamed to better reflect their functionality.
    • The ‘New Edit Window’ menu item is now disabled when a view does not support cloning. This includes the Welcome Page, which can’t be duplicated or dragged out to another window.
    • The Options > Saving and Desktop page has been split into two new pages:
      • Saving and Recovering (contains auto-recover and auto-save options).
      • Desktop and Layout (contains the remainder of the options).
    • You can now change the colors used for errors, warnings and hints in the Messages view in the Options dialog. You can set different colors for each IDE theme, i.e. set different colors for light, dark or other themes.
    • Added Styling support to some minor dialogs used by the IDE, such as asking the user to confirm or warn about overwriting files, checking for Unicode project names and using an invalid codepage.
    • The default C++ console app has been improved and creating a console app is now a shortcut on the File > New (and Create New) menus for both C++ and Embarcadero Delphi.
    • A small number of items from the IDE Fix Pack have been integrated:
      • The IDE toolbars such as editing toolbars.
      • Missing scrollbars in the Options dialog pages.
      • Object Inspector rendering glitches.
      • The IDE and code editor went blank when debugging.
      • Special keys (such as Microsoft Windows key) in the FMX form designer text input.
      • The list mode in the Projects view.
      • A variety of exceptions and many more.
    • Added New Items dialog which shows platforms for all items.
    • The New dialog where you can add items to your project now hides items based on the project’s active platform.
    • The New dialog now also supports multiple view styles, rather than just a vertical list (card, list, icons, and small icons).
    • The New Items dialog now uses the TControlList VCL control, which improves scrolling.
    • The Compile dialog shows the platform and builds configuration and prioritizes Errors before Warnings and Hints.
  • IDE High DPI quality
    • Data modules now save the PixelsPerInch property when its value is 96, the default. This is also the case for VCL forms.
  • Welcome Page
    • The Welcome Page now supports background images. Selecting an image will scale it to fit the Welcome Page area. The aspect ratio is preserved, meaning the left/right or top/bottom sides of the image may be offscreen so long as the other axis fits the Welcome Page size.
    • Added a new page in the IDE Options dialog for Welcome Page settings, including the background (which can be set per theme) and closing it when opening a project. You can also access this page from the Layout Editor.
    • Welcome Page frames are now transparent by default. The wallpaper you set will be partially transparent through them. The transparency amount is one of the Welcome Page metrics available in the ToolsAPI.
    • Spacing between frames and the upper and lower edges of the Welcome Page has been very slightly tweaked.
  • ToolsAPI support
    • The Welcome Page now has full support for creating Welcome Page frames using the ToolsAPI. Two Welcome Page demos have been added showing simple and advanced usage, which are available on the public Github. In its simplest form, you can create a TFrame descendant and display it with a caption. That frame can contain anything you want. However, there is more complex functionality that you can also make use of:
      • Frame captions can contain custom UI chrome (implemented via a second frame), such as the Open Recent frame (buttons) and Create frame (toggling between Delphi and C++).
  • GetIt Dialog Improvements
    • The GetIt dialog box has been redesigned, maintaining a similar UI, but adopting a ControlList component for the list of packages. This has a noticeable effect on performance.
    • Embarcadero RAD Studio now caches the package icons in GetIt, reducing the time for re-opening the dialog.
    • Added a new option to ignore patches in GetIt, so you can skip the installation of a patch but stop the notification of the pending patch.

Compilers and Toolchains Improvements

  • Both Delphi and C++
    • ASLR, DEP/NX, and TSAWARE
      • In both Delphi and C++, the Windows linkers now offer better support for platform security configurations:
      • For Delphi:
        • These features were already available as compiler/linker flags:
          • {$DYNAMICBASE} for ASLR.
          • {$SetPEOptFlags $40} for DEP/NX or the matching --peflags option.
      • For C++:
        • Use the -GE: linker option to turn these flags on or off.
      • For both Delphi and C++:
        • Enabling these settings is now the default.
        • Redistributable binaries (like package BPL files) are built with the security configurations enabled.
  • Delphi Debugger for Apple macOS ARM and Android
    • Added a new debugger when running macOS applications on an Apple ARM device.
      • This debugger is not used if you are using an Intel machine.
      • The new debugger is a recent build of LLDB, and its key technology is a Delphi parser that understands a subset of Delphi syntax. This syntax should be truly Delphi-like: case-insensitive, and able to evaluate complex expressions in Delphi syntax.
      • This debugger has also been enabled for Android 64-bit.
      • The debugger is much less likely to cause ‘disconnected’ errors or freezes.
  • C++ Compiler and toolchain
    • The default constructor for UnicodeString is now no longer inline, which should help if you do not want to step into the constructor when debugging and invoking a function that returns a string.
    • AnsiStringT now has the System:: namespace prefix.
    • Many intrinsics headers (xmmintrin.h, etc.) should now be available.
    • The C++ RTL has a breaking change this release, meaning that C++ libraries must be rebuilt in 11.1 (i.e., don’t link against object files or .lib-s built with 11.0.) This change relates to handling handles correctly for Win64. Some internal RTL structures were not widened in the past, resulting in possible handle truncation; they are now wide enough.
    • More intrinsics (e.g. SSE-AVX) are now shipped with the RTL.
    • System::DynamicArray now contains some STL members for iteration, such as begin().
    • Several String functions that were in helpers in Delphi are now available from C++.
    • A wide variety of compiler bugs in the debugger (especially Win64) and debug info have been improved:
      • Using a TDS file in release mode.
      • Tweaks to locale, and many other RTL and STL areas.
      • Lots of improvements to import libraries.

LSP Improvements (Delphi and C++)

  • Delphi LSP
    • The new higher performance work applies to all project types including packages.
    • Exception info is now displayed again in Help Insight.
    • Line number information is now available in HelpInsight for arrays and sets.
    • Pressing Ctrl-Shift-Down inside an inactive macro/ifdef now jumps to the implementation of the next method declared.
    • Ctrl-click navigation now works with aliased generic types.
    • Normal projects will now load much faster. The technique used to load a project has been significantly changed with much less parsed, and DelphiLSP should finish loading a project and respond to requests much more quickly.
    • Error Insight results will now update much more quickly. You can expect a 5 to 30x speed increase here as well. The most dramatic improvement is seen for units with many dependencies (lots of other units used).
    • Other improvements include:
      • Better handling of macros (defines) so that toggling between the implementation and declaration of a method works better when there are IFDEFs, as will code completion in class declarations.
      • Macros (defines) will now also be found if they are declared in an included file, affecting the above.
      • When declaring a property, code completion will now suggest getters and setters.
      • Code completion will now show set types.
      • Type parameters will now be shown in code completion in a class declaration, including generic types (e.g., T) in a generic declaration.
      • Parameter tooltips/help can now be shown when instantiating generic types.
  • C++ and cquery
    • In the new LSP Behavior tab, two options have been added that control how the cquery LSP server indexes files, which is how it stores the info it uses to fulfill code completion, navigation, etc:
      • Restart server each time a project is activated.
      • Index only files that are opened in the editor.
      • Note: Indexing can be very CPU intensive and you usually cannot use Code Insight until it’s complete. Note that restarting the server, such as when platforms are changed, also clears the index.
    • Other improvements include:
      • Code completion items are now displayed in the order that cquery returns them, which is scope order, unless you turn on Alpha Sort (off by default.)
      • Indexing should now be on by default in the Project Options for all C++ projects.
      • You can now code complete in header files that are not directly part of the project (e.g., not part of a cpp/header unit pair).
      • Changing project options or the active platform will now restart the server to match the new project settings.
      • The server now knows when a file has been saved and will update correctly. This is important for new files, because in this build Code Insight won’t function until the file exists on disk.
    • Other C++ features:
      • You can now code complete in a project’s main source file.
    • Performance Improvements:
      • Code completion now displays in two seconds or less, no matter the size of the project. Note that when invoking code completion in the global scope with a VCL project, there are over eighty thousand items returned.

Libraries Improvements

  • To help sharing code among projects build with FMX and VCL, framework specific predefined symbols have been:
    • FRAMEWORK_VCL - this predefined variable is set to true if the project uses the VCL framework.
    • FRAMEWORK_FMX - this predefined variable is set to true if the project uses the FireMonkey (FMX) framework.
  • Delphi RTL
    • Optimization Work
      • Optimized performance of Delphi RTL.
      • Improved _CopyArray, _IntToStr64, _IntToStr32, InitInstance, InvokeRecordInitializer, _FinalizeRecord, _UStrAsg (including purepascal version), _LStrAsg, _LStrLAsg, AnsiLowerCase / AnsiUpperCase, and TStringHelper.IndexOf.
    • New TURLStream class
      • Added a new stream class, TURLStream, and a general base class:
        • TAsyncStream is a new base class for async streams, inherited from TMemoryStream.
        • TURLStream is an async stream supporting URL paths, inherited from TAsyncStream.
      • TAsyncStream.Create starts APopulate in the background thread. Until it is finished, any TStream methods call on TAsyncStream will be blocked. An application can:
      • Use IAsyncResult to wait/check TAsyncStream population completion. TAsyncStream supports IAsyncResult.
      • Provide AProvide anonymous method, which is called when the population is finished.
      • TURLStream constructor extends the base class constructor.
      • TURLStream inherits the behavior of the TAsyncStream base class, but internally it uses THttpClient or TFileStream, depending on the URL schema.
      • TAsyncStream now defines the following public methods:
        • Destroy.
        • AfterConstruction.
        • Read.
        • Write.
        • Seek.
        • SetSize(Int64).
        • SetSize(Longint).
        • SaveToStream.
      • TURLStream now defines the following public methods:
        • Destroy.
        • RegisterSyncReqExexcutor.
        • UnRegisterSyncReqExecutor.
    • Additional RTL Improvements
      • Added support for Microsoft Windows 11 and Server 2022 in the TOSVersion data structure.
      • TURI.ToString now takes the port into consideration.
      • TMetaFile can now load from a large stream.
    • TMemIniFile and duplicate sections
      • TIniFile has been modified to offer better compatibility with the pre-10.3 behavior in case of duplicated sections.

FireMonkey

  • Improved Android SDK integration
    • Removed dependencies to the android.bat file tool in favor of advmanager and updated the IDe SDK Manager dialog for the Android platform.
    • The DEX compilation and DEX merging are now deferred after the C++/Delphi linking, making compilation without deployment faster.
    • For the Android platform core integration, support has been added for Delphi classes that implement Java interfaces with method overloads. This helps address an issue with Android 12 and sensor access.
    • Delphi classes that implement Java interfaces can now have functions that return Int8, Int16, Int64, Float32 and Float64 values.
  • TWebBrowser
    • Improved TWebBrowser on Windows (with WebView 2 support), including the ability to change the Windows Engine more than once. The default value of the WindowsEngine property has been changed.
    • Improved the ability for WebBrowser to work with local files on mobile.
  • Additional FMX Quality
    • Improved performance of TMessageManager.Unsubscribe.
    • Added Undo to TMemo context menu.
    • Emoji color improvements for both Android and Apple iOS.
    • Improved Metal GPU driver support on the macOS platform.

Data

  • General
    • The Field Link Designer pane and New Field Dialog have been made larger and more usable.
    • In order to support Firebird 4 long field names (up to 63 characters), the 31-char limit in the field name in the database RTL has been removed.
  • FireDAC
    • Added Structure View support for FireDAC. Also some of the FireDAC windows offer better High DPI support.
    • Added support for MariaDB 10.6 server with a 10.6 client.
    • Added support for SQLite SEE, offering a command line Batch to build SQLite OBJs with C++Builder for FireDAC static binding.
    • FireDAC improves Firebird 4 driver by providing support for additional data types:
      • INT128.
      • NUMERIC with precision 19..38.
      • TIME WITH TIME ZONE, TIMESTAMP WITH TIME ZONE (limited).
      • DECFLOAT(16/34).
      • Native statement timeout.
    • FireDAC adds support for FireBird 4 page size 32768.

Internet

  • WebBroker on Android
    • The WebBroker server applications can now be deployed on an Android device or a developer board (like a RaspBerry Pi running the Android OS). Both on Android 32-bit and 64-bit.
  • DataSnap
    • Extended the Web.Win.ISAPIThreadPool to allow more than 64 threads. The NumberOfThreads variable type has been changed to Cardinal. The ShutdownTimeout variable (a timeout in milliseconds, which thread pool will wait to finalize all worker threads) has a default value of 2 minutes.
  • RAD Server
    • Some database structure improvements have been made and new matching REST SysAdmin endpoints have been provided:
      • GET /sysadmin/log - Returns info about LOG table content.
      • POST /sysadmin/log?minTime=<ISO8601 date> - Deletes all records from LOG table older than specified date/time.
      • DELETE /sysadmin/log - Deletes all records from the LOG table.
      • GET /sysadmin/backup?backupFile=<file path> - Creates a specified backup file of emsserver.ib database. The backup file will be on the InterBase server.
      • POST /sysadmin/backup?backupFile=<file path> - Restores the emsserver.ib database from the specified backup file. The backup file will be on the InterBase server.
      • GET /sysadmin/validate - Performs emsserver.ib database validation and returns the database status.
    • Added the ability to allow RAD Server users to log in from more than one session simultaneously.
    • Added a new deployment feature for RSLite.
    • Added the option in EMS.INI to pick a specific Interbase client library (for embedded or regular DB), with the ClientLib entry in the Data section.
  • Others
    • Added an option to select a client-side certificate in the REST Debugger.
    • The REST Debugger is now DPI-aware.
    • The TCustomRESTRequest class has a new BodyCodePage property, which specifies the request body code page. Some special values are:
      • -1 (the default value) - Use the platform default encoding.
      • 0 - Current active code page.
      • 65001 - UTF8.
    • Added support for switching the region in AmazonAPI.
GetIt Library Manager

RAD Studio Enterprise

用一個代碼庫、以快 5 倍的速度為 Windows、Android、iOS、macOS 和 Linux 構建應用。

有任何疑問嗎?

Live Chat現在與我們的Embarcadero 專家即時聊天詢問。