Is this the same compiler that famously spurred Richard Stallman to create GCC [1] when its author "responded derisively, stating that the university was free but the compiler was not"?
It seems to be free now anyway, since 2005 according to the git history, under a 3-clause BSD license.
" Shortly before beginning the GNU Project, I heard about the Free University Compiler Kit, also known as VUCK. (The Dutch word for “free” is written with a v.) This was a compiler designed to handle multiple languages, including C and Pascal, and to support multiple target machines. I wrote to its author asking if GNU could use it.
He responded derisively, stating that the university was free but the compiler was not. I therefore decided that my first program for the GNU Project would be a multilanguage, multiplatform compiler."
And not only was the university 'free' and the compiler not, neither was 'Minix', which was put out there through Prentice Hall in a series of books that you had to pay a fairly ridiculous amount of money for if you were a student there.
So the VU had the two main components of the free software world in their hand and botched them both because of simple greed.
I love it how RMS has both these quotes in the same text:
"Please don't fall into the practice of calling the whole system “Linux,” since that means attributing our work to someone else. Please give us equal mention."
"This makes it difficult to write free drivers so that Linux and XFree86 can support new hardware."
And there are only a few lines between those quotes.
I was one of those students saving up the large sum for the book, when Linux was announced. There were other tensions at the time - the biggest was that Minix on 8086 was 16 bit real mode only. Someone had developed patches to run in 32 bit protected mode, but they were invasive and large, and the Minix maintainers would not integrate them as the increased complexity would not help the mission of Minix being easy to learn and tinker with. The filesystem code was also single threaded, essentially doing one request at a time. IIRC there were patches to address that too, also not integrated for the same reason. (Note that the books included print outs of the source so keeping it short did matter.)
This explains the final 2 sentences of the original Linux announcement:
> PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.
Re your last paragraphs: I think RMS really meant just the Linux kernel when he wrote that(the topic is drivers, after all), not GNU/Linux, the OS or GNU/Linux, "the system". So it can be argued that he isn't really contradicting himself
> I love it how RMS has both these quotes in the same text:
>
> "Please don't fall into the practice of calling the whole system “Linux,” since that means attributing our work to someone else. Please give us equal mention."
>
> "This makes it difficult to write free drivers so that Linux and XFree86 can support new hardware."
>
> And there are only a few lines between those quotes.
I'll be honest, I don't understand your point here?
Of course RMS understood the overtone perfectly, but Vrije Universiteit (vu.nl) is the real name of the university. Its name can be translated to "liberated university". As I understand it, it's a free university in the sense that historically, students of all religions were eligible to attend, as opposed to e.g. Katholieke Universiteit which was Catholic.
It's interesting that they have a Raspberry Pi GPU backend, but neither an ARM backend nor any modern ISA. (such as x86-64, Aarch64, etc.) Is there any example program that actually runs on the rpi gpu? I skimped the website, but it is only mentioned in the release notes.
Presumably someone wanted to write an RPi bootloader, which runs on the GPU. Several universities have OS programming courses that use old 32-bit RPis.
The requirements for "flex and yacc" seem to indicate that this is from a time and culture before recursive descent/precedence climbing became the norm.
The sursprise comes when you try to compile the minimal book version and find out that it is not as lean as presented in the book but actually depends on hundereds of assembler files (see https://github.com/rochus-keller/Minix3/tree/Minix3_Book_TCC).
I’m a tad confused so maybe I’m not understanding the horror show.
Tanenbaum explicitly mentions multiple times that the book is a subset of the code because it would be too long to print with the library. So he covers mostly the main areas.
But the source code, in its entirety, is mounted under /usr/src. And it has all the assembly files in ACK files, mostly in lib I believe. You can compile it with a make command and it works as expected.
The author makes it seem like there’s some terrible thing. Am I missing some gory directory? Yes the ACK syntax would need to be ported over to something more modern like NASM or FASM if someone wants to move the whole kitchen sink, new linker scripts made as a result of exported symbols etc. It is painful but alas, so is the archaic K&R C.
I don’t know if that’s necessary though? It sounds like a waste of time to begin with.
I mean this book is ancient, and nobody really uses 32-bit protected mode. I’m mostly doing it out of curiosity even though I already stood up a small 64-bit long mode thinger.
The author writes in the book explicitly "This is a modified version of config.h for compiling a small Minix system with only the options described in the text". This leaves no doubt that the book indeed describes a working microkernel of less than 15kSLOC which can be built and run (even if the "small Minix" lacks a few features). I blieved the author (like generations of other scholars) until I tried to actually build and run it myself.
I remember after I read the 1st edition, bought MINIX ($150 !!), and then was very annoyed to find that the compiler source was not included. Luckily it was '89 or '90 and GCC sources were available.
tl;dr: A kit for targeting several old or old-ish platforms, with code in some languages popular in the 1980s: C89 (ANSI C), Pascal, Modula 2, Basic. A 'kit' here means: frontend, codegen, support libraries and some tools. This is apparently known as being the default toolchain for Minix 1 and 2.
But - the repository is not "everything you need"; it actually relies on a lot from an existing platform - GCC, Lua, Make, Python etc. So, you would typically use this to cross-compile it seems.
It doesn't rely on gcc. Any C compiler will do. The rest is there to build it on " Linux, OSX, and Windows using MSYS2 and mingw32". Indeed for cross-compilation, as it won't run on CP/M.
It seems to be free now anyway, since 2005 according to the git history, under a 3-clause BSD license.
[1] https://www.gnu.org/gnu/thegnuproject.en.html
reply