The RAD Studio 10.2 Tokyo release contains the following new and improved features.
RAD Studio 10.2 Tokyo provides Linux support for the Delphi language. The compiler is ARC-enabled and has support for server-side applications only; this includes console applications, WebBroker and DataSnap applications, as well as support for RAD Server development and deployment. Applications can also access data via FireDAC. Supported Linux distributions are Ubuntu 16.04 LTS and RedHat Enterprise Version 7. Linux support in RAD Studio 10.2 Tokyo is available in the Enterprise Edition and above.
Delphi Linux Compiler
- 64-bit Linux platform support
- Delphi language support
- 1-based strings
- LLVM engine based
Supported Linux Distributions
RAD Studio 10.2 Tokyo supports the following Linux distributions:
- Ubuntu Server (Ubuntu 16.04 LTS)
- RedHat Enterprise Linux (version 7)
RTL features supported
- Linux file system access
- Threading and Parallel Programming Libraries support
- Memory management
- HTTP and REST libraries support for HTTP calls
64-bit Linux for Server Applications
The latest RAD Studio technologies for server applications have gained 64-bit Linux support.
- FireDAC provides Linux support for all Linux-capable DBMS, with the only exception of Informix. See Database Connectivity.
- WebBroker, RAD Server (EMS), and DataSnap support for Multi-tier servers (standalone and Apache modules).
- DUnitX support.
- PAServer support.
- Indy-based client and server support.
New System Status Bar Options on iOS
Two new properties have been added to TForm for changing the behavior of the system status bar on iOS: SystemStatusBar.BackgroundColor and SystemStatusBar.Visibility.
Enhancements to TMultiView
- Turn off user interaction with TMultiView using the Enabled property.
- New options to manage border appearance in TMultiView.
- Bottom and top alignments for the docked panel mode in TMultiView.
- TBitmap: Complete multi-threading support. Can be created, destroyed, and modified in any thread without synchronizations.
- TCanvas: Supports being used from multiple threads at once, but is internally serialized.
- TContext3D: Supports being used from multiple threads at once, but is internally serialized
Other FireMonkey Changes
- Added support for ICaption to the following text controls: TText, TStyleTextObject, TActiveStyleTextObject, TTabStyleTextObject and TButtonStyleTextObject.
- FMX improvements to TWebBrowser for Windows.
- Additional CharCase property in TEdit.
- Re-exposed TStringGrid events:
- Added TagObject and TagString properties to TListViewItem.
- Unification of Delphi and Java threads on Android: CallInUIThread has been deprecated. All code is now running in the Java UI Thread, removing the need for thread synchronization.
- The ProcessMessages method used to call the CheckSynchronize method, which called callbacks from the Java Native thread. There used to be two threads: the Delphi UI thread and the Java Native thread. After the refactoring work in 10.2, there is only one thread: the Java Native thread, which receives all notifications from Android and forwards them to the Delphi event handlers. While it is blocked via the while cycle, no event handler can be executed, preventing an exit from the cycle. Callbacks and events in general are called if there is no code holding the app main thread.
- Improvements to FMX.Platform.Android.pas by enhancing FMX.Platform.Device.Android.pas, FMX.Platform.Logger.Android.pas, FMX.Platform.Metrics.Android.pas, FMX.Platform.SaveState.Android.pas, FMX.Platform.Screen.Android.pas, and FMX.Platform.Timer.Android.pas.
- The Release method of TForm has been deprecated.
- Changes to ShowModal on Android.
New FireMonkey Styles
New FireMonkey styles have been added for macOS and Android. Access the FireMonkey styles at:
FireDAC and Database
Improvements for Firebird
Improvements for MySQL
- Support for MySQL v 5.7.
- Support for MariaDB v 5.5 or later. Use FireDAC's MySQL node to connect to MariaDB.
- Compatibilty with the recent MySQL versions 5.6.x and 5.7.x.
- MySQL Prepared Statements API: now both old API (MySQL text protocol) and PS API (MySQL prepared statements protocol) are supported.
- Support for internal BLOB streaming (in the
- Improvements for a synchronization of a connection transaction state and the TFDConnection.InTransaction property. This property allows you to determine whether a connection transaction is currently in progress.
Other FireDAC Changes
- The TFDDataMove component has been removed from this release and is no longer available in Tool Palette. Use the TFDBatchMove component instead.
- Note: If you need TFDDataMove for your legacy projects, use the FireDAC.Comp.DataMove.pas unit available at:
- Start | Programs | Embarcadero RAD Studio 10.2 Tokyo | Samples, and then navigate to:
Object Pascal\Comp Layer\TFDBatchMove\DataMove_Deprecated
- TFDBatchMove has been optimized. As a side effect, the
SourceValueproperties of TFDBatchMoveMappingItem are no longer available.
- TFDMSAccessService now supports Microsoft Access 2007 or higher.
- Enhancements to the TFDMemTable component to edit the TFDMemTable dataset at design time. Now the TFDMemTable context menu provides the Edit DataSet... item that allows you to edit the component data and save them to the form. The data are available at run time.
- Note: Before using Edit DataSet..., you should specify the field definitions for a dataset fields TFDMemTable.FieldDefs or create persistent fields.
- VCL TDBImage direct support for JPEG and PNG graphic formats.
- Support for display options for BlobFields.
- Direct GUID access for TField classes.
HTTP Client Library provides support for 64-bit Linux.
Improved async support in HTTP client
RTL support for 64-bit Linux
RAD Studio 10.2 Tokyo provides Linux file system support using standard system functions, streams, and the IOUtils unit. It also provides Standard RTL Path Functions support for 64-bit Linux.
App Tethering Improvements
App tethering gains the following features:
SynchronizeEventsproperty for TTetheringManager and TTetheringProfile to control the event synchronization with the main thread. Therefore, Managers and Profiles can now control whether their event handlers are executed on the main thread or not.
- Improved support for Log filtering: added more logging messages.
New and Improved Hash Functions
Improved C++ packages for mobile
RAD Studio 10.2 Tokyo links C++ packages for iOS and Android statically. Previous versions of RAD Studio generated a file with the .so extension for C++ packages, but were not actually dynamic libraries. RAD Studio 10.2 Tokyo generates C++ packages with the correct file extension (.a). If you statically link against a .so package, you may need to change to link against the new filename.
With Multi-Tenancy support, a single RAD Server instance with a single RAD Server database connection can support multiple isolated tenants. Each tenant has a unique set of RAD Server resources including Users, Groups, Installations, Edge Modules, and other data. All tenants have custom resources that are installed in the EMS Server. Also, as an administrator you can create new tenants, edit existing ones, add, edit, or delete details of your tenants, specify if the tenant is active, and delete the tenants that you do not need.
Better Support for Debugging
In Clang-enhanced compilers:
- Local variables in code built with the Clang-enhanced compilers for Win32 and Win64 can now always be evaluated in watches or the Local Variables view.
- When code has two local variables with the same name in different scopes in a method, variable evaluation can now resolve both and display the correct one depending on the current location.
- Class names are now always displayed in the call stack.
- (Clang-enhanced Win32) Support for external type files for debug information, which reduces duplication of debug information created for common types used in many compilation units, such as VCL types. This significantly reduces the size of debug information generated when building.
In Clang-enhanced compilers:
- Codegen for -O1 and -O2 optimization levels has been improved, including resolving all known issues.
- New support for -O3. The Clang-enhanced Win32 and Win64 compilers support -O3, a strong optimization level which may double compiled code performance in some situations.
Mobile Platform support
- C++ Android applications can be built without requiring specific versions of the NDK.
- The C++ linker has significant improvements:
- Improved resource handling to address heap errors, including out of memory, VIRDEF, dwarf_str, and others.
- The linker can now use up to 4GiB of memory; it is no longer limited to 2GiB.
- The linker options have been extended to allow you to set the resource allocation sizes for specific types of debug or linker data.
- While not necessary for the majority of projects, this is useful for very large projects, or projects generating an unusual amount of linked data, including debug info. If linker errors occur, they can be resolved by tailoring the options to your project's behavior.
- Significant quality improvements for exception handling, addressing errors relating to memory leaks.
- Code Insight and Code Completion for Delphi now correctly handles static and dynamic arrays.
- The Find In Files dialog works on screens with high DPI.
- Support for designing and opening forms at different DPIs has been improved.
- The View Menu has been re-arranged. Tool windows such as the Object Inspector, Structure, Messages, etc have been moved to a Tool Windows submenu just below the existing Debug Windows submenu, and a new Editor submenu contains a number of editor actions and useful features from the editor's context menu. Other items have been moved to keep related items adjacent to each other.
- The context menus for the code editor tabs and files in the Project Manager now have a "Show In Explorer" menu item, which will show the file's location in Explorer.
- The project's manifest file support now supports several execution levels: As Invoker, Highest Available, and Require Administrator, and also allows the UI Access flag to be set.
- IDE loading speed should be fast even with high network load or a missing network connection.
- Support for building very large project groups, such as those with over a hundred projects, has been improved.
- Full support for iOS10 debugging (from a 10.1 Berlin hotfix)
- Full support for iOS Simulator debugging (from a 10.1 Berlin hotfix) - Delphi only.
- Writing Delphi string values is supported in the iOS debugger
- Evaluating character arrays gives the expected result
- Errors ending the debug session (also on macOS) are resolved
- Full support for macOS Sierra debugging (from a 10.1 Berlin hotfix)
- Errors ending the debug session (also on iOS) are resolved
- Support for debugging on Linux (Delphi only)
High DPI fixes
Improved High DPI support:
- Form bounds are now correctly adjusted in response to WM_DPICHANGED messages, meaning TForm.AutoScroll works correctly, as well as the form's top/left position
- Forms open at the correct scaling factor when the system has multiple monitors with different DPIs
- TTabSheet and TPageControl, and controls placed on tab sheets or page controls
- ActionMainMenuBar when moving a form across monitors with different DPIs
- VCL menus (both main menus and popup menus) now display correctly on high DPI monitors
- TStatusBar's height remains correct in high DPI
- Message dialogs' icons are now scaled correctly
- Anchored controls now stay in the expected position when moving a form between monitors with different DPIs
- TCheckBox and TRadioButton paint correctly
- Several issues with form inheritance, including that controls now use the correct font size when placed on a panel with ParentFont set to true on an inherited form, and TListView column sizes remaining correct on an inherited form.
- Enhanced parallel downloads.
- Improved Azure and AWS support with updated APIs.
- Delphi command line compilers are now large-memory-address enabled, allowing you to compile larger applications from the command line (and matching the memory available to the compilers when invoked in the IDE).
- Given that dynamic arrays are managed types, involving reference counting and associated helper function generation, casting array elements using the
@operator is disallowed as it leads to memory corruption. Performing a similar operation is still allowed using an explicit cast operation, under the developer responsibility.
iOS 10 Simulator, device, and macOS
- Full support for iOS 10, including iOS 10 32-bit and 64-bit debugging on device, Simulator support (Delphi only) and macOS Sierra support.