Shot myself in the foot again. Good news, the system file of stage2 compiles, there don't seem to be bugs. Bad news, I use integers of system width... Which means on the somewhat awkward i86_64 architecture, ints are 32 bits wide, and pointers are 64 bits wide, which means that in my stage2 compiler, at some places I can't use ints to represent bits, but need longs. Which is fine, but hell.. On the good side, it's gonna be robust, since I need to cover all corner cases. (It's just adjusting a type definition and some code.)
(Notice I did change the semantics of the language somewhat the last weeks by not coercing values anymore. I am not sure about that step, but I thought it'll probably work out better if I map types to C types directly since I want to remain very close to C.
Which I am still not that sure of:
For: Type safety. One doesn't coerce that often (unless you link to C....)
Against: Loss in speed in some cases due to explicit conversions, I work with 64 bit word sizes anyway. The need for different sizes in C is not hogging the memory and speed, both I don't care about. Difficult to optimize the conversions away since everything I do is done through FFI anyway.)