The Amsterdam Compiler Kit / About the ACK

About the ACK

Page Contents

1. What is it?

The Amsterdam Compiler Kit is a venerable piece of software that dates back to the early 1980s. It was originally written by Andrew Tanenbaum and Ceriel Jacobs as a commercial product; for many years it was also used as Minix' native toolchain. After eventually failing as a commercial project, it was made open source under a BSD license in 2003 when it looked like it was going to be abandoned and the code lost.

The ACK contains compilers for ANSI C, K&R C, Pascal, Modula-2, Occam 1, and a primitive Basic. It contains code generators for a large number of architectures, mostly 8 and 16 bit machines; there are also a set of generic optimisation, linker and librarian tools. Each language comes with its own runtime, so if you're a C programmer you also get a libc. Compared to gcc, it is far smaller, faster and easier to port.

This project currently hosts two versions of the ACK.

2. What architectures does it support?

The following architectures are supported.

5.6 6.0
6500 +
6800 -
6805 -
6809 -
ARM +
i80 + +
Z80 +
Z8000 +
i86 + +F
i386 + +F
68000 +
68020 +
NS32016 +
s2650 -
SPARC +
VAX4 +
PDP11 +

+ indicates that the particular architecture is supported by the code generator and assembler; - indicates that it is supported by the assembler only.

F indicates that the architecture has floating point support (if there is an FPU).

Note: all the code generators run on 6.0, but as there are no platforms yet that use them they are not currently shipped. If you wish to use one, please ask and it can very easily be arranged. (Due to the way the ACK works, it is not really possible to produce code targeted at a particular architecture without also targeting it at a platform.)

3. What platforms does it support?

For 5.6:

6500 BBC Microcomputer
ARM Acorn Archimedes
i80 Hermac, Nascom
Z80 Hermac, Nascom, limited CP/M
Z8000 (board)
i86 PC/IX
i386 Xenix v3, Xenix SysV
68000 16 bit: MinixST; 32-bit: SunOS, Mantra, PMDS
68020 SysV
NS32016 (board)
SPARC Solaris, SunOS
VAX4 BSD4.2
PDP11 UNIX v7

"(board)" signifies that the port was done to a bare development board with no operating system other than a monitor.

For 6.0:

i80 cpm (CP/M 8080 executables)
i86 pc86 (bootable floppy disk images)
i386 linux386 (ELF Linux executables)

4. Haven't I seen this before somewhere?

Quite likely. The ACK has been used as the standard Minix compiler for years. While the ACK was still commercial, this was done by distributing binaries; when it get opened, a version was forked off and is now used as part of the Minix base build. You can find Minix's version here. This is an extremely stripped down variant that supports only the Minix platform on the i386 and i86 architectures and was done by Michael Kennett.

In addition, the original 5.5 release is still available on the Vrije Universiteit ACK page.

There may also be other versions elsewhere. The ACK is BSD licensed and as a result if people want to fork the codebase and use it elsewhere, they don't even need to ask, or indeed tell anyone. If you know of any other uses of the compiler, please let me (dtrg) know --- I'd like to put in a link.

5. What's the involvement of Andrew Tanenbaum, Ceriel Jacobs and Vrije Universiteit?

They have no official involvement.

They're aware that I, dtrg, am doing this, and are quite happy with it and maintain an interest, but are not actively participating in the project. (Due to being busy people with other things to do.) I, dtrg, have nothing to do with Vrije Universiteit and have never even been to Holland.