Slica has Reached Fixed Point!

A major milestone! The Silcia compiler is now fully self-hosted!! Fixed point was reached Saturday and there is a first release now available! Silica-compiler now compiles itself to exactly the same binary. Also, the Silica compiler has passed over 33,000 CI trials so its robustness is way up! The compiler also uses much less memory and runs much faster!

A port to linux_AArch64 is now in the testing phase. A port to ESP32-S3 is well on its way (passes over 1,000 CI trials and could pass more but I’m doing quicker turnarounds and focusing on the new behaviors).
There is still more work to do, but there is a big speedup thanks to Jonatan’s contribution of tokens.

It’s now time to start using Silica to create project BEES! I’m starting that this week too.

10 Likes

What do you mean by “fixed point “?

I’m going to guess it was intended to overload the mathematical meaning of “fixed point” :smiley: That means a function F having a special value x for which x = F(x) = F(F(x)) = F(F(F(x))) = ... that is, at that point, the function never moves again, it is fixed. It’s such a rabbit whole in maths, thousands of PhDs in hundreds of fields… Fixed-point theorem - Wikipedia :smiley:

In any case here I guess it means the fixed point is the compiler itself, so the compiler can compile itself into a program that compiles the previous compiler into a program identical to the original compiler… that is to say, the compiler is finally deterministic, which is quite a necessary feature :face_with_tongue:

1 Like

Yes this is what it means. If a compiler hasn’t reached fixed point, there is a probability that some part of the runtime is carried over from the bootstrap compiler and is therefore not actually fully self-hosted.

A fully selfhosted compiler must be able to compile its own code into a result that is the same binary as itself and is therefore stable. Each compiler release is supposed to be fixed point for any compiler. If a compiler doesn’t reach fixed point it can not be trusted to compile files the same way twice.

I’m now adding features and upgrades to silica, so there will be a new effort to reach fixed point again at the end of this feature, upgrade, and fixes cycle.

Thank you for the question.