The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My work

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,811 other followers

Kylix: Delphi for Linux is on the Way! – I wrote this in 2000

Posted by jpluimers on 2017/03/22

Last year, when Warren Postma wrote, I started digging for some articles I wrote about Kylix (the Delphi for Linux at the start of this century).

The second article I found (Delphi for Linux is on the Way!) was actually the first one I wrote, so I’ve put the copy below. The second article will be in my blog tomorrow.

The article below first appeared at the Pinnacle Publishing site at http://www.pinpub.com/delphi/kylix1.htm as an article for “Delphi Developers Journal” that went out of business just like “Hardcore Delphi” and “Delphi Informant Magazine” went before (actually Blaise Pascal Magazine is about the only Delphi related magazine left).

I found the title of my article through http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fcomp.faq%2FDelphi%2FAboutDelphi%2FKylix%2FM.967808208.A then back-tracked the title via http://www.inner-smile.com/delphin.phtml

–jeroen

Kylix: Delphi for Linux is on the Way!

Jeroen W. Pluimers

Heard of Kylix (pronounced k-eye-lix)? It could be the hottest news in the Delphi world in the last year! If you haven’t, I’ve got three words for you: Delphi for Linux. Actually, it’s more than that. Kylix is the project that will build both Delphi and C++ Builder for Linux–complete with IDE, VCL, data access, tools, and more!

Kylix was officially announced on September 28, 1999. A press release from Inprise/Borland described it as a “a high-performance Linux application-development environment that will support C, C++, and Delphi development.” More from the press release:

Project Kylix is currently planned to be a Linux component-based development environment for two-way visual development of…GUI, Internet, database, and server applications. Plans are for Project Kylix to be powered by a new high-speed native C/C++/Delphi compiler for Linux and will implement a Linux version of the Borland Visual Component Library architecture. The Borland VCL for Linux will be designed to radically speed native Linux application development and simplify the porting of Delphi and C++ Builder applications between Windows and Linux.

Cool! When will Kylix be released?

Although originally only a global timeframe was given, indicating availability of a product somewhere during the year 2000. The official Inprise/Borland statement is “…scheduled to be available in mid 2000.” Most people now expected that the Delphi part of Kylix will be available in the fall.

Just like the Windows versions of Delphi and C++Builder are siamese twins, where one follows the other, the Kylix parts on Linux will probably alternate each other as well. Therefore, C++Builder for Linux will likely follow after the release of Delphi for Linux.

Why Linux?

Linux is an obvious place to start investing: It is a fast-growing market, just barely at the steep of an S-curve. In that curve, Windows is nearing the end of the steep part (some even say that it is close to achieving market saturation).

Linux is a UNIX operating system evolved from the work of Linus Torvalds from Finland. He wanted a very stable version of UNIX with sources available free of charge.

The Open Source community develops Linux. All sources are available on the Internet and everybody can help develop by adhering to a couple of simple guidelines.

Officially, Linux is only the kernel of the operating system, but in practice the name is used for the distributions as well. Distributions contain the kernel plus lots of other modules: device drivers, window managers, network layers, tools, applications, and much more.

Why “Kylix”?

Kylikes (plural of the singular Kylix) are a type of bowls used in ancient Greece to drink wine from. Just replace wine with Linux, and drinking with earnings, and you get the idea: Inprise/Borland wants to earn from the fast-growing Linux market.

Kylix is a pretty good code name for Inprise/Borland: It ends with the “IX” from UNIX and shares classic Greece in common with Delphi.

Has anyone seen Kylix?

There have been several public demonstrations of Kylix technology. One of them was in Spain, where the Inprise/Borland VP of Developer Relations has shown some of the Kylix features. He ran the demo on Corel Linux. There was no Kylix IDE yet, so he created some Delphi code using basic features of the Cross Platform VCL (which is code named X-VCL until the real name is announced). The code consisted of creating a form with some components and linking event code to the OnClick events of a ListBox and an EditBox component. He then compiled the code using the “dcc” Kylix Delphi command-line compiler, and ran the application. Everything functioned well, even transferring some data from the ListBox into the EditBox!

During the Inprise/Borland Conference in Philadelphia last year, an early version of the Kylix command-line compiler technology was shown compiling a C++ arcade game on Linux. During that demo, the compiler was faster than the standard GNU gcc compiler.

Also some demonstrations have been done to closes groups under non-disclosure agreements. The community Web site contains a short extract of what happened on one of these presentations.

More demonstrations will be done during the next couple of months. A schedule is available on the community Web site at http://community.borland.com/article/0,1410,21351,00.html.

What will Kylix support?

Intel processors: The compiler compiles to native Linux format for Intel processors, which covers the biggest part of the current Linux market. This is not to say there won’t be other processors supported in the future–Intel is just the first logical step.

On the 32-bit Windows platform, you have Windows 95, Windows 98, Windows NT, and Windows 2000 (not counting the degrees of freedom introduced with incremental releases, service packs, various versions of Internet Explorer, and so on). This is confusing for software developers: Which environment does your software run best?

In that respect, Linux is just like Windows and comes in different flavors. Kylix is supposed to run on most of the well-known flavors. I would expect it to run on RedHat Linux (and Mandrake), Corel Linux (and Debian), SuSE Linux, Caldera Linux, and maybe a few others. But we’ll know for sure when it ships.

Windowing environment

Unlike Microsoft Windows, where you have only one possible GUI, Linux allows multiple graphical shells as the Windowing environment. Currently, both GNOME and KDE are very popular. Most probably a large subset of both environments will be supported (a sort of largest common denominator idea).

The graphical shells make use of a GUI toolkit or widget library. Popular ones are Qt and GTK+. It is not yet known which (or if both) will be supported.

Databases

Currently, the word goes that Interbase (already available under Linux) and MySQL will be supported through something like a BDE equivalent, probably based on MIDAS technology (so it would seamlessly scale from local, trough client/server to application server).

The BDE equivalent will most likely not support local databases in the Paradox and DBF format.

Specific APIs

If you need to access certain operating system features and you don’t bother about portability, you can go ahead and use everything you wish. Kylix will allow you to call any Linux API function you wish. Probably some part of the Linux API will already be covered, which you can extend for specific API calls not yet supported.

The Delphi JEDI project (see http://delphi-jedi.org), which already started covering parts of the Win32 API that are not yet supported, will most likely do the same for the Linux API when Kylix is released.

Debugging

The current plan is to have an integrated debugger in Kylix. However, if that doesn’t make it to the first release, it is always possible to use an external debugger.

The Kylix compilers will have a command-line switch “-v” to emit debug information that is compatible with the GNU debugger “GDB.”

How do I prepare for Kylix?

If you’re writing applications today that you want to port to Linux in the future, here are the most important guidelines to follow.

Stick to the VCL

Kylix will include the “Borland VCL for Linux,” a cross-platform version of the VCL. If you target to this smaller VCL, you can maintain good compatibility between Linux and Windows. The cross-platform VCL will probably lack some Windows-specific features.

As Linux is very strong in the server market, the cross platform will of course aim at server applications (MIDAS application servers, WebBrokers, Internet Express, and so on). But since the end-user market of Linux is growing rapidly as well, the GUI part of the cross-platform VCL is very important too.

Just like the current Delphi VCL has been growing since its inception, the Linux VCL will grow as well. Based on the parts of the VCL you use, your applications will be able to run on Windows-only, Linux-only, or both platforms. The overlap of VCL coverage between Windows and Linux will probably grow over time.

Also, avoid direct calls to platform-specific (Win32 or Linux) APIs. Some parts of the VCL that have to do with graphics resources (covered under Windows by the GDI) will change, too, so be careful using “handle” fields!

No TASM, MAKE or BRCC

TASM will be abandoned, as there is already the GNU assembler called “as.” If you have TASM code, be prepared to port it, since “as” does not support the TASM syntax.

The Borland MAKE utility will not be ported, as there is an excellent GNU “make” utility that has an almost compatible syntax.

The resource format of Windows, which is targeted by the BRCC resource compiler, is not available on Linux. Resources will be implemented differently, with different tools to incorporate them in your executables.

Don’t use COM, OLE, ActiveX, ISAPI, and so on

These all rely heavily on Windows-specific features, which are almost nonexistent on other platforms, so they will not be supported by Kylix.

The same holds for Windows API calls. Although there is WINE (a WINdows Emulator) that might help supporting parts of the Windows API, don’t expect support for it in the first Kylix product.

Since MIDAS can be run over other communication means than COM/DCOM, it will be supported in Kylix. How this support is done is not yet known.

The dominant Web server on Linux is Apache. It can be interfaced through CGI, Fast-CGI, and the Apache API. Those will be used to support WebBroker technology in Kylix. Maybe this will result in support for the Apache API under Windows as well!

Be careful with the BDE

Even though Kylix will have TDataSource, TDataSet, and other database components, they will not be based on the BDE. Don’t use direct BDE calls (like DbiDoRestructure). ADO and ODBC are out as well (they are really Windows specific).

Inprise/Borland is working on new database engine technology for Linux (sometimes referred to as “complete BDE replacement”), but it will most certainly be different from the current BDE.

Separator characters

Windows uses the backward slash “\” to separate directory names, the forward slash “/” to separate parameters, and the semicolon “;” to separate search paths.

Linux uses the forward slash “/” to separate directory names, the dash “-” to separate parameters, and the colon “:” to separate search paths.

Most Windows programs already support the dash ‘-‘ as parameter separator, so that won’t be much of a problem. However, be prepared to translate ‘\’ and ‘;’ into ‘/’ and ‘:’.

Position-dependent code

The DLL for Windows is replaced in Linux by the shared object library (“.so” file), which contains Position Independent Code (PIC). This has two consequences:

  • Global memory references are relative to the EBX register, which must be preserved across calls.
  • Variables referring to an absolute address in memory (by usage of the “absolute” keyword) are not allowed.

Kylix Library modules and Packages will be implemented using .so files.

Note that PIC is (sometimes a lot) slower than code from a regular executable code that does not refer to .so files.

Case sensitivity

Unlike Windows and Pascal, Linux is case sensitive, especially for filenames. You’d better get used to it soon as it will save you a lot of headaches trying to find out why {$ MyFOrm.DFM} doesn’t work.

Note that in Delphi, when loading components in a package, the “procedure Register;” from the component unit already is case sensitive: When you spell “register” it with a lower-case “r”, the components inside the unit won’t be registered! (This case sensitivity is a feature of the Windows GetProcAddress function.)

More on preparing for Kylix

Danny Thorpe from the Kylix research and development team has written an excellent article on this topic, which is published on the community Web site at http://community.borland.com/article/0,1410,21301,00.html.

 

How about support from third-party vendors?

On March 20, 2000, Inprise/Borland organized an event under non-disclosure agreement to brief vendors that have third-party products for the current Delphi for Windows. The event was called “Kickstart” (remember the Commodore Amiga?), and the third-party vendors learned how to handle porting issues.

More of these events will be organized around the world in the coming months (maybe too for other Inprise/Borland partners). There are lots of opportunities for third-party vendors, and it is expected that many of the components and tools will become available in some way or another for the Linux platform.

And what about Delphi for Windows?

Some people are afraid that Inprise/Borland is now betting only on Linux. But in reality, Delphi for Windows brings in a lot of money to Inprise/Borland. That is why Inprise/Borland will continue to develop new versions of their programming environments for the Windows platform. Maybe the upcoming Delphi for Windows (probably version 6, but it could as well be version 7 or version 2000) will take a bit longer than 12 months after the release of Delphi 5, but it will certainly be released.

How can I get my hands on Kylix

At the time I write this, the beta program was full. It used to be possible to apply for the beta cycle by sending e-Mail, but this has been closed and right now. More information on the beta is available on http://community.borland.com/article/0,1410,20108,00.html.

More information

The first place to go for more information is Delphi Developer–the one made out of paper, not just e-mail bits and bytes like this one! In the June 2000 issue, I will have an article that gives you even more cool information about Kylix, how it will work, and what it will support.

Of course the beta testers, under strict non-disclosure agreements, will be silent. But the Kylix research and development team will publish more information about it from time to time on the community Web site at http://community.borland.com.

In the meantime, you can obtain more detailed information electronically, either in the newsgroups or on the Web. When visiting the Borland Community Web site, be sure to read the Chat Transcripts and the articles from some of the Kylix R&D folks (Danny Thorpe, Allen Bauer, Robert Kozak, and so forth). They contain a lot of interesting information!

Interesting newsgroups

Interesting Web pages

The complete news release

http://www.borland.com/about/press/1999/linuxdev.html

A recognized industry speaker at Borland conferences and a well-known magazine writer, Jeroen Pluimers is Senior Delphi Trainer at Oosterkamp Training Consultancy, the main Delphi and J-Builder training company in The Netherlands.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: