What's New in Delphi XE8 for VCL developers » Developer.Team

What's New in Delphi XE8 for VCL developers

What's New in Delphi XE8 for VCL developers
What's New in Delphi XE8 for VCL developers


With many new features introduced in Delphi (and C++Builder) XE8, some developers have the impression there is little in it for Windows VCL developers, not interested in mobile. In fact, there is a plethora of new features in XE8, even if you don't care about mobile and FireMonkey. With many new features introduced in Delphi (and C++Builder) XE8, some developers have the impression there is little in it for Windows VCL developers, not interested in mobile. In fact, there is a plethora of new features in XE8, even if you don't care about mobile and FireMonkey. Here is an incomplete summary.

Developer Productivity in the IDE

A significant area of enhancement in XE8 (for all developers) comes from the productivity features added to the editor and the IDE, along with significant improvements in existing subsystems (like unit testing and version control). Here is a short summary:

GetIt package manager for seamless installation of components
DUnitX support
Version Insight support for Mercurial, and improved support for Git and Subversion
IDE configuration migration tool
Faster CHM help
Start here page redesign
Project statistics information
Clipboard history
Multi-paste support
Stack bookmarks
Smart keys
Parenthesis matching
Code structural highlight
Castalia refactorings
Editor selection expansion
Flow controls highlighting
Code navigation toolbar
Smart symbol search
Code analysis to track quality

AppAnalytics

By combining this easy to use component (drop it, add your application ID and it works), an easy signup process on appanalytics.embarcadero.com/ (use your existing EDN credentials), and even a free basic tier (applications startup counts), you can start tracking your users analytics in only a few minutes. This is very easy to use, and a pay-as-you-go service (official pricing coming soon).

Core RTL New Features

There are many new RTL features that VCL developers can start using right away, as they fully work on Windows. There are many enhancements in AppTethering (including support for custom encryption), Bluetooth and Bluetooth LE support you can leverage. But there is also a brand new HTTP client library, that lets you create HTTPS clients with no need to redistribute the OpenSLL library. And this also enhances the REST client library.

You can also now easily add the Box2D physics engine to your VCL applications, take advantage of the parallel library (if you are not already on XE7), and leverage many other new RTL features added over recent years, including significant optimizations.

Faster TFields

One specific optimization that it is worth noticing, compared to XE7, is in the way TField objects of a TDatSet (or any descendant dataset) copy their data to and from the active record buffer. The net effect is a 10% to 25 increase in most existing database applications for the "data copy" operations. As a sample, I've created an application that basically duplicates records from one ClientDataSet to another one, in memory, and have obtained a significant faster execution in XE8. See below the image with the XE7 and XE8 timing (in milliseconds) and the source code of the demo.

VCL and RTL Fixes and Quality Improvements

There are also many fixes and improvements to core VCL and RTL features, including the cleanup of a few long standing issues related with font scaling in the VCL. For a list of bugs reported by customers and fixed in XE8 refer to edn.embarcadero.com/article/44358. In the list there are over 30 VCL specific improvements, plus RTL and compiler ones.

New RTL and VCL units

Finally, like I've done other times, I want to list the new RTL/Windows units added in XE8, compared to XE7. Here are the new units that a Windows/VCL developer can leverage:

System.Analytics (interfaces)
System.Hash (THashMD5, THashSHA1, THashBobJenkins)
System.Win.InternetExplorer (new name for SHDocVw)
System.Net.HttpClient (THTTPClient, IHTTPRequest, THTTPRequest, IHTTPResponse, THTTPResponse,
System.Net.HttpClient.Win (Windows platform implementation)
System.Net.HttpClientComponent (TNetHTTPClient and TNetHTTPRequest components)
System.Net.Mime (TMultiPartFormData)
System.Net.Socket.pas
System.Net.URLClient.pas
System.NetConsts.pas
WinAPI.WinHTTP