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