Vinci Part #11 - Support for 64-bit and Linux through Free Pascal

Over the past year, more and more developers have been asking for support for developing 64-bit applications, especially for the server side, where the new architecture brings many benefits, most importantly for access to more than 4GB of RAM and easier handing of large blocks of continuous memory.

While we have been supporting 64-bit development with the .NET editions of our products for some time, many users prefer writing native code, or want to more easily get their existing Delphi projects to the 64-bit platform without rewrite. And with a 64-bit Delphi compiler still being a distant glimmer on the horizon, the obvious choice was to open up our library for the Free Pascal Compiler (FPC), which, among many other platforms, supports 64-bit Windows.

With the first release of ‘Vinci’ this June, we are providing full FPC support for the core RemObjects SDK and Data Abstract libraries, supported on four platforms: 32-bit Windows (i.e. the same platform as supported through Delphi), 64-bit Windows, as well as 32- and 64-bit Linux on the x86 and x64 architectures.

As mentioned before, FPC supports a variety of additional platforms, most notably including Max OS X and Windows CE on the StrongARM CPU, and we will be investigating support for these and other platforms for the future, based on both work involved and customer demand.

What does “support for the core libraries” mean?
As you know, both the RemObjects SDK and Data Abstract are extensible frameworks that provide a wide variety of options. The SDK continues a large number of optional client and server channels, and Data Abstract supports somewhere around 10 to 15 Borland third-party database access layers.

When investigating FPC and cross-platform support, one thing that became obvious from the start was that not all these options would be feasible to port over. Some client and server channels, for example, are based on Indy, which at the time of writing doesn’t fully support FPC yet. The WinINet and named pipe channels rely heavily on Windows technology, so obviously won’t port to Linux. Similarly, most of the database drivers supported by Data Abstract are either tied to Delphi (ADO, DBX, BDE) or not officially supported for FPC by their vendors (most third party drivers).

What we concentrated on was updating the core library code of the SDK and Data Abstract for FPC and testing it on the platforms we decided to support. On top of that, we made sure that we support a reasonable subset of the channel and driver options, whether by getting existing implementations to work, or by providing new options.

Where channels are concerned, we found that we can support the popular WinINet client channel for FPC on the Windows platform. We’re also supporting the Synapse based client, the BPDX based servers, as well as the all-new Super HTTP Channel. This leaves FPC developers with a few less options than available on Delphi, but should cover all common scenarios. And obviously, FPC support will be a prime factor for all future channel development.

For data access drivers in Data Abstract, the situation looked a bit bleaker, as it turned out that virtually all the existing data access technologies were bound to Delphi and/or Win32. To solve this, we are providing a brand new driver (both for FPC and for Delphi) based on the popular ZEOS data access components. This driver supports a wide range of databases – including ADO (on Windows), Firebird, Interbase, MySQL, Oracle, PostgreSQL, SQLite, Sybase and more – covering pretty much all common data access needs on the supported platforms.

With these considerations in place, the June release of ‘Vinci’ should provide Delphi and FPC developers with everything they need to move their projects to Win64 or Linux. And of course, as always, full wire compatibility between all platforms is guaranteed, so your existing Win32 or .NET projects will communicate seamlessly with their Win64 or Linux counterparts.

What’s Coming Next?
Our development doesn’t stop here, and we’ll be moving forward with FPC support on several fronts. As mentioned before, we will be looking at supporting additional platforms, depending on customer demand and the effort involved in supporting and testing these platforms. In the future, we’ll also be looking into providing more product options that are compatible with FPC: more channels, more drivers.

Lastly, our current release focuses only on library support for FPC, allowing you to take existing code and recompile it using the Free Pascal compiler. In subsequent releases of the ‘Vinci’ product cycle, we’ll be looking at providing support for the Larazus IDE, as well as the upcoming CrossFPC IDE add-in for Delphi that is currently being developed by a third party.

What about Kylix?
As the Kylix project has been all both abandoned by Borland/CodeGear and not updated in several years, we are officially dropping support for Kylix with the ‘Vinci’ releases, in favor for FPC. In the past, the number of developers using our products with Kylix has been very small, and the effort involved with providing support for a development tool that hasn’t been maintained by its vendor for several years and has problems running on all current Linux distributions is simply not viable for us.

We strongly recommend all users using Kylix to consider FPC for their Linux/x86 development instead.

marc hoffman

Chief Architect and CEO here at RemObjects Software. Project Manager for Elements and lead developer of Fire, our awesome new development environment for the Mac.