# Key features

- Two source languages
- Multiple targets
- Multiple platforms
- Portability
- Standard compliance
- Highly optimized code
- Good compilation speed
- Reliability
- Object-oriented programming
- Interface to C
- Host OS API support
- Integrated Development Environment
- Debug and analysis tools

- Two source languages
- Multiple targets
- Multiple platforms
- Portability
- Standard compliance
- Highly optimized code
- Good compilation speed
- Reliability
- Object-oriented programming
- Interface to C
- Host OS API support
- Integrated Development Environment
- Debug and analysis tools
- TopSpeed Compatibility Pak

## Two source languages

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.

## Multiple targets

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.

## Multiple platforms

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.

## Portability

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,

## Standard compliance

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.

## Highly optimized code

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.

## Good compilation speed

XDS possess a quite reasonable code quality/compilation speed ratio. The origin of this fact is that XDS compilers are used to build themselves.

## Reliability

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.

## Object-oriented programming

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:

- There is no need to learn a new programming environment, what means no time loss.
- Programs already developed in Modula-2 may be completely re-used without any modifications, just as in the case of moving from C to C++.

## Interface to C

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.

## Host OS API support

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.

## Integrated Development Environment

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.

## Debug and analysis tools

Native code XDS compiler for Windows comes with the following additional tools:

- A full source level symbolic debugger that may be used in two modes, dialog and batch. The dialog mode is interactive, whereas in the batch mode the debugger may automatically execute a debugging scenario (or a number of scenarios) described in special control files, and log the scenario execuion results. This allows the debugger to be used to automate testing.
- A set of utilities that may help you to better understand and improve the run-time performance of your program. It emphasises the pieces of code which consume most of the CPU time, and, hence, are the first candidates for redesign.

## TopSpeed Compatibility Pak

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.