7 ms·
I still cringe when I think back to some C projects from long ago, where the dependency chains of headers and libraries where unfathomably byzantine. On a rela
by squibbles 6y ago
I still cringe when I think back to some C projects from long ago, where the dependency chains of headers and libraries where unfathomably byzantine.
On a related note, lately I have been looking into some biochemistry topics and their relation to computer science. It seems that cyclic dependencies are possibly a requirement for life, which makes faithful simulations of biochemical processes an interesting challenge.
- dilawar 6y agoThat is an interesting observation. I wonder whether the cycling in chemistry is more about information flow then like (negative?) feedback, it helps in making a stable system.
- mattgreenrocks 6y agoI’m a compiler nerd at the moment. I have an inherent trust of things that bootstrap themselves, as if it means they are conceptually more pure. I’m not sure whether that is 100% well founded, but it sounds similar to some of these observations. :)
- ReactiveJelly 6y agoI think self-hosting is just a little over-rated for languages. It's good that Rust and C++ are self-hosting, you'd expect those to be languages you can write a compiler in. But Lua and JavaScript satisfy their own niche just fine without having popular runtimes written in themselves.
- TheBrokenRail 6y agoThere are a few JS interpreters written in JS, don't know about Lua.
- mattgreenrocks 6y agoMost languages don't aspire to be so conceptually-complete that they insist on being bootstrapped. Which is fine, I make my living with them. Those that do, however, are immensely beautiful and there is more to be learned from them.
- jimmaswell 6y agoThe C language and gcc are a cyclic dependency too.
- ReactiveJelly 6y agoOnly if you don't consider time, or optional dependencies. GCC 10 _can_ be built with GCC 10, but it was probably built with GCC 9 the first time around. If you can bootstrap it, and you can, then it's not really a hard, unbreakable cycle, right? It's just an option that's quicker than starting from tcc or whatever every time.
- nyberg 6y agoBut how would you build the first GCC in that chain?
- pjmlp 6y agoUsing another C compiler, if none exists, create one in Assembly or other programming language in the target platform and go from there.
- joshuaissac 6y agoTCC 0.9.27 can build GCC 2.95.3. You can build TCC using GNU Mes, which itself can be built using M2-Planet, which is written in a subset of C. https://www.gnu.org/software/mes/ https://www.gnu.org/software/mes/
- fosslinux 6y agoFurthermore, M2-Planet can be built by another C compiler written in assembly, all the way down to hex instructions. https://github.com/oriansj/mescc-tools-seed/ https://github.com/oriansj/mescc-tools-seed/
- pabs3 6y agoThese projects are from the Bootstrappable Builds folks: https://bootstrappable.org/ https://bootstrappable.org/ https://bootstrapping.miraheze.org/wiki/ https://bootstrapping.miraheze.org/wiki/