Products of the XDS family facilitate software development in the Modula‑2 and Oberon‑2 languages. The unique feature of XDS is seamless integration between the two, which enables you to mix Modula‑2 and Oberon‑2 modules in one project freely.
Native XDS-x86 Optimizing compilers
Native XDS-x86 is an optimizing ISO Modula-2 and Oberon-2
compiler for 32‑bit Intel x86 systems running Windows or Linux.
The Windows version comes with additional suite of tools including an IDE,
debugger, profiler, etc., whereas the Linux version is a command-line
compiler relying on the standard Linux tools such as
XDS-C "Via C" cross compilers
XDS-C is a Modula-2/Oberon-2 "via C" compiler: its output is ANSI C, K&R C, or C++ source code, which may then be compiled by a third-party C/C++ compiler for any target platform. This technique allows you to cross program in Modula-2 and/or Oberon-2 for virtually any target environment. XDS-C itself runs on Windows and Linux.
TopSpeed Compatibility Pack
TopSpeed Compatibility Pack (TSCP) is an add-on for both XDS toolchains that makes them more compatible with the TopSpeed Modula-2 compiler, thus simplifying porting of legacy TopSpeed Modula-2 sources.
…and a new IDE!
The new, Eclipse-based Modula-2 IDE for XDS compilers provides features such as code completion, formatting and navigation (show usages / jump to definition).
If you are wondering how on Earth a new Modula-2 IDE could come into existence in 2016, click here to find out.
The project is currently in maintenance mode, but sponsors are welcome. Contact us if you want to finance the development of new features or, perhaps, the Linux port.
Features And Contents
ISO 10514 compliance
XDS Modula-2 complies with the ISO 10514-1 language specification.
TopSpeed Modula-2 compatibility mode
In this mode, XDS compiler behave similarly to TopSpeed Modula-2 in a handful of aspects, which is useful when porting legacy code.
Multilanguage programming support
The unique feature of XDS compilers is seamless integration between Modula-2 and Oberon-2 code. Modula-2 objects (types, variables and procedures) can be freely used from Oberon-2 code, and some Oberon-2 features are available in Modula-2 as language extensions. There are also numerous system features that simplify interfacing with other programming languages. In your Modula-2 or Oberon-2 code, you may freely call functions residing in C DLLs or shared libraries, as well as operating system API functions.
Built-in make facilities
XDS compilers automatically calculate dependencies between various source files of the project and determine the minimal set of files requiring recompilation after source change thus allowing you to build a project with complicated structure by a single run of the compiler.
Modula-2/Oberon-2 optimizing compiler
Optimizing ISO Modula-2 and Oberon-2 compiler producing 32-bit Intel x86 code.
Built-in assembler with transparent access to global objects of the program, such as variables and procedures.
Modula-2/Oberon-2 "via C" compiler
Uses ANSI C, K&R C, or C++ as an intermeditate language, relying on a third party C/C++ compiler to produce the binary executable. This technique allows you to cross program in Modula-2 and/or Oberon-2 for virtually any target environment.
Converter of C header files (.h) to Modula-2 definition modules
Interactive debugger with batch and remote modes support
XDS Debugger provides the complete set of interactive debugging features that one may anticipate. It also supports remote debugging in case it is needed by the project. Its unique feature is a "batch-mode" support that automates most intricate debugging cases and also allows to automate exhaustive application testing by means of using debugging scripts instead of special program code.
Post-mortem call history visualizer
Library files (.lib) manager
ISO 10514 standard Modula-2 libraries
Full set of ISO 10514 libraries that may also be used from Oberon-2 code
PIM Modula-2 libraries (InOut, LongInOut, RealInOut, MathLib0)
TopSpeed Modula-2 compatible libraries (separate download)
Apart from the runtime library with a compact and efficient garbage collector and support for Oberon-2 meta-language facilities, there are modules that explore XDS language extensions to make programming more comfortable and efficient. For instance, one of them provides a C-style
Thread-safe implementation of XDS libraries may be used safely in multithreaded application. Multithreading itself is implemented compatible with ISO 10514 standard with separate extensions that enable you to access platform-specific features over portable ISO interfaces.
Intermediate source code of all libraries and Oberon-2 RTS with makefile
C source code of all libraries and Oberon-2 RTS with the appropriate makefile is included with XDS-C to enable retargeting, and with Native XDS-x86 for Linux - to avoid compatibility problems across Linux versions
|Definition modules for platform APIs|
Win32 API definition modules
POSIX API definition modules
X Window/Motif definition modules
|Documentation and samples|
Documentation in PDF format
Documentation in Windows Help format
Documentation in HTML format
|CPU:||Intel 80386 minimum, Pentium-class or higher recommended|
|RAM:||24MB minimum, 32MB or more recommended (yes, that's megabytes)|
|Graphics Card:||(Windows only) VGA minimum, SVGA recommended for XDS IDE|
Microsoft Windows 7/Vista/XP/2000/NT4/9x or
any Linux with kernel version 2.2 or higher
New XDS IDE Includes both toolchains
|CPU:||Pentium 2 266 MHz minimum, decent multi-core desktop CPU recommended|
|RAM:||1GB available physical RAM recommended|
|Graphics Card:||Any card capable of (comfortably) running Eclipse 4.4|
Windows 8.x (Desktop)
Windows 7 SP1
Windows Vista SP2
Notice XDS-C also needs a C or C++ compiler to operate. Out‑of‑the‑box, it supports Microsoft Visual C++ and (Open) Watcom on Windows and GCC on Linux, but can be cofigured to work with any ANSI C, K&R C, or C++ compiler.
The original XDS product line has been available as freeware since May 2005. While the new XDS-IDE is open source, please note that we have not open sourced the XDS toolchains yet, nor have we put them in the public domain. You may download and use XDS products only if you agree with the License Agreement given below. It is your responsibility to read it and and understand its terms and conditions, but if you are allergic to legalese, please read at least the summary.
|Product||File Name||File Size|
|XDS 2.6 beta 2 for Windows (updated 06-Feb-2012) beta|
|All-in-one package||xds-260-beta2-win32.exe||6.9 MB|
|XDS 2.6 beta 2 for Linux (updated 06-Feb-2012) beta|
|All-in-one package||xds-260-beta2-linux.tgz||6.8 MB|
|Product||File Name||File Size|
|Native XDS-x86 2.51 for Windows|
|Main product||xds-x86-251-enduser-win32.exe||6.5 MB|
|TSCP add-on||tscp-x86-251-enduser-win32.exe||2.4 MB|
|Native XDS-x86 2.51 for Linux|
|Main product||xds-x86-251-enduser-linux.tgz||3.7 MB|
|TSCP add-on||tscp-x86-251-enduser-linux.tgz||1.2 MB|
|XDS-C 2.51 for Windows|
|Main product||xds-c-251-enduser-win32.exe||4.6 MB|
|TSCP add-on||tscp-c-251-enduser-win32.exe||2.0 MB|
|XDS-C 2.51 for Linux|
|Main product||xds-c-251-enduser-linux.tgz||3.1 MB|
|TSCP add-on||tscp-c-251-enduser-linux.tgz||1.3 MB|
We do not provide free technical support for XDS, but you are welcome to try your luck in the forum.
As far as paid services are concerned, here is what we can help you with:
- Tune up XDS-C for the target environment(s) of your choice
- Migrate your existing Modula‑2/Oberon‑2 source code to XDS
- Port your existing Modula-2/Oberon-2 software to a new platform
- Convert Modula-2 source code to C/C++
- and so on
Get Started Now:
You may also wish to check out our Technical Report on Modula-2 source code migration and conversion.