XDS contains two well intergrated compilers - Modula-2 and Oberon-2. It is possible to mix these two languages in a single project. The library set may be shared as well.
XDS compilers generate either ANSI C text (XDS-C) or native code for the target platform (Native XDS). XDS-C is a "via C" cross-compiler, the output of which is supposed to be supplied uindchnged to the respective C compiler. Although it produces readable text, it does not completely preserve the source program's structure, identifiers and comments, and therefore may not be used as a Modula-2/Oberon-2 to C converter.
A true Modula-2 to C++ converter is avaliable from Excelsior on a semi-custom basis. Contact the Sales Dept. at sales@excelsior-usa.com for details.
Native XDS is currently available for the Intel x86 platform (Windows and Linux). Support for other platforms may be implemented on a custom basis.
XDS-C is also available for Windows and Linux, but allows you to target virtually any platform for which an ANSI C compiler is available.
All XDS implementations share the same front-end and library set. Thus, for programs which do not use a specific operating system API and do not rely on a hardware, only recompilation is necessary to port to another platform,
XDS implementation of Modula-2 is 100% ISO-compliant; full set of ISO Modula-2 standard libraries is provided.
XDS Oberon-2 conforms to the Niklaus Wirth's Oberon-2 Report.
On the other hand, a number of language extensions is provided for conveninice. These extensions, however, have to be explicitly enabled using a compiler option.
Native XDS-x86 compilers produce highly optimized, 32-bit, professional quality code. The resulting program perfomance competes with results shown by industry standard C compilers. The instruction scheduling mechanism for Pentium processors results in a further 5-15% perfomance gain.
XDS possess a quite reasonable code quality/compilation speed ratio. The origin of this fact is that XDS compilers are used to build themselves.
A set of options which affect the code generation (optimizations etc) was intentionally made very small in XDS. Therefore, the set of their combinations is apparently not large and it does not take too much time to test the compiler in all modes. With many C/C++ compilers, this is almost impossible.
Oberon-2 is an object-oriented programming language which is much easier to teach, learn, and use than C++. With Oberon-2, it is possible to concentrate on the principles of OOP, not on the way it is done using a particular language.
Since Oberon-2 is a descendant of Modula-2, these languages are very similar, so moving from one to another can be done smoothly. And with XDS, it is extremely smooth:
Some of the most annoying things about Modula-2 are absence, imcompleteness, unportability and low quality of libraries. XDS, with its foreign languages support, gives an opportunity to use the whole set of free, public domain, shareware, and commercial libraries from the C world and access the Host OS API.
C header files can be translated into Modula-2 definition modules by means of the supplied H2D utility.
XDS packages contain definition modules for the host operating system base API (Win32, or POSIX and X Window/Motif, and therefore may be used to implement large projects which use GUI, multi-threading, inter-process communication, and other features provided in these APIs.
XDS for Windows comes with an IDE, which greatly simplifies its usage. Although XDS is a professional system with a wide set of configuration files and options, the IDE hides all these details from a novice.
The IDE may also be adopted for a third-party compiler or used as a plain text editor.
Native code XDS compiler for Windows comes with the following additional tools:
TopSpeed Compatiblity Pak is an add-on that may be purchased separately. It contains a compiler with TopSpeed-like extensions and a set of TopSpeed-like library modules.