A MODERN IDE
For a Classic Language

The new XDS Modula-2 IDE is an open source project based on Eclipse.

Download Now from GitHub

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 gdb.

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.

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.

New XDS IDE: The Story

The retail sales of XDS came down to a halt more than a decade ago, following a lethal decline in Modula-2 popularity, so we had to cease the development of those products, making them available under a freeware license. But we still had custom work coming from clients with legacy Modula-2 codebases.

One of those clients made a very big investment in Modula-2 back in the 1990s, spending literally thousands of person-years to create and test a huge corpus of mission-critical embedded software. Over the years, we created a handful of custom compilers, debuggers, and auxiliary tools for all the different CPUs used in the devices made by that client, and at some point they asked us for a new, modern IDE.

To cut the long story short, we negotiated a clause in the contract giving us permission to release that IDE (sans client-specific parts) under an open source license. Think of it as of our contribution back to the Modula-2 community.

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.

As In Beer

XDS products used to be commercial, but since May 2005 they are available under a freeware license.

As In Speech

The new Eclipse-based XDS IDE is open source under the Eclipse Public License.

Feature/ComponentProduct/Platform
XDS-x86XDS-C
Windows Linux Windows Linux
Features
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.
Multithreading support
Tools
Modula-2/Oberon-2 optimizing compiler
Optimizing ISO Modula-2 and Oberon-2 compiler producing 32-bit Intel x86 code.
Built-in assembler
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.
Smart linker
Post-mortem call history visualizer
Disassembler
Library files (.lib) manager
Resource compiler
Libraries
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)
XDS-specific libraries
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 printf implementation.
Multithreaded libraries
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
Sample programs

Native XDS-x86/XDS-C

CPU: Intel 80386 minimum, Pentium-class or higher recommended
RAM: 24MB minimum, 32MB or more recommended (yes, that's megabytes)
Disk Space: 15MB
Graphics Card: (Windows only) VGA minimum, SVGA recommended for XDS IDE
O/S: 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
Disk Space: 325MB
Graphics Card: Any card capable of (comfortably) running Eclipse 4.4
O/S: 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.

Read Full XDS License Text or just the summary

  • You can download the latest versions of Native XDS-x86, XDS-C, and TSCP for Windows and Linux and use them to develop application software;
  • You will be free to do whatever you want with the applications you will have developed using XDS products, including sell, lease, or otherwise make profit, except for letting them be used in situations requiring fail-safe performance, e.g. as part of an air traffic control system.
  • You will be able to redistribute the downloaded XDS products, provided you do not modify the downloaded files in any way and do not charge for redistribution without our consent.
  • The XDS products will be licensed to you "as-is", which means that (a) all warranties will be disclaimed and (b) you will not be entitled to receive any support or updates to the licensed product. Should you need assistance or product customization, you will be able to purchase any support, consulting, or custom engineering services from us on a hourly basis.

Excelsior Freeware License Agreement

This License Agreement ("Agreement") is a legal agreement between you (either an individual or a single entity) and Excelsior LLC ("Excelsior") for the Excelsior software product identified above, which includes computer software, electronic documentation, and the associated printed materials ("Software"). By installing, copying or otherwise using the Software, you agree to be bound by the terms of this Agreement. If you do not agree to the terms of this Agreement, you may not install or use the Software.

LICENSE GRANT

Excelsior hereby grants to you a non-exclusive, transferable limited license to use the accompanying Software on the following terms:

You may: a. install and use the Software on any computer in your possession or under your control; and b. copy and redistribute the Software provided it is not modified in any way and you do not charge for its distribution without Excelsior's explicit prior written permission.

You may not: a. modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), or create derivative works based on the Software; b. sell, rent, lease, or charge for access to the Software; c. remove any proprietary notices or labels on the Software. or d. distribute the Software for a fee, whether as a stand-alone product, or as part of a compilation or anthology, without Excelsior's prior written consent;

REDISTRIBUTION RIGHTS

In addition to the Software redistribution rights granted above, Excelsior hereby grants to you a non-exclusive, royalty-free right to reproduce and distribute the files identified in the "Redistributable Components" Chapter of Software documentation ("Redistributable Files"), if any, provided that you agree to: a. Distribute the Redistributable Files in object (binary) code form only and as a part of your software product; b. Not suppress, alter or remove proprietary rights notices contained therein; c. Include a valid copyright on your software product; d. Indemnify, hold harmless, and defend Excelsior LLC and its suppliers from and against any claims or lawsuits, including attorney's fees, that arise or result from the use or distribution of your software product; and e. Your license agreement with Your distributors and/or customers will: (i) not permit Your end users to modify, translate, reverse engineer, decompile, or disassemble the Redistributable Files except as expressly permitted by law; (ii) not permit further distribution of the Redistributable Files by Your end users; (iii) include statements that Your product is licensed not sold, and that title to such offering is not passed to the end user; (iv) include statements that Your product may include material licensed by a third party, and that You have assumed responsibility for the presence and use of this material; and (v) comply with the requirements of the Disclaimer of Warranty and Limitation of Liability sections below as appropriate.

TITLE

Title, ownership rights, and intellectual property rights in and to the Software, and any copies of the Software shall at all times remain with Excelsior and/or its suppliers. The Software is protected by the copyright laws of the Russian Federation and international copyright treaties.

TECHNICAL SUPPORT AND UPDATES

This Agreement does not entitle you to receive from Excelsior printed manuals, technical support, phone support, updates, or enhancements to the Software. Excelsior may at its own discretion offer fee-based support, consulting and custom engineering services for the Software.

NO FAIL-SAFE USES

The Software has been created using technologies that are not fault tolerant and thus the Software is not designed, manufactured, or intended for use or resale as on-line control equipment in hazardous environments requiring fail-safe performance, including, but without limitation, in the operation of nuclear facilities, aircraft navigation or communication systems, air traffic control, direct life support machines, or weapons systems, in which the failure of the technologies employed in the Software could lead directly to death, personal injury, or severe physical or environmental damage.

DISCLAIMER OF WARRANTY

THE SOFTWARE IS PROVIDED TO YOU "AS IS". TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, EXCELSIOR AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES OF ANY NATURE WHATSOEVER, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY AND OF FITNESS FOR A PARTICULAR PURPOSE. EXCELSIOR DOES NOT WARRANT THAT ANY OR ALL FAILURES OR ERRORS IN THE SOFTWARE WILL BE CORRECTED OR WARRANT THAT THE SOFTWARE'S FUNCTIONALITY WILL MEET YOUR REQUIREMENTS OR THAT THE SOFTWARE WILL OPERATE IN COMBINATIONS YOU SELECT.

NO EXCELSIOR DEALER, AGENT, OR EMPLOYEE IS AUTHORIZED TO MAKE ANY MODIFICATIONS, EXTENSIONS, OR ADDITIONS TO THIS DISCLAIMER.

LIMITATION OF LIABILITY

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, OR OTHERWISE, SHALL EXCELSIOR OR ITS SUPPLIERS OR RESELLERS BE LIABLE TO YOU OR TO ANY THIRD PARTY FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF EXCELSIOR SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.

TERMINATION

You may terminate this license at any time by destroying all copies of the Software you received or made under this Agreement. This Agreement shall terminate automatically if you fail to comply with any of its terms and conditions. On such termination, you must destroy all copies of the Software you received or made under this Agreement. The Disclaimer of Warranty and Limitation of Liability sections above shall survive termination of this Agreement.

This Agreement is the entire Agreement between us and supersedes any other communications, advertisements, or understandings with respect to the Software.

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:

✉ info@excelsior-usa.com

You may also wish to check out our Technical Report on Modula-2 source code migration and conversion.