-
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
I'm the author of Onramp. Thanks for linking it!
One of the VMs I wrote for Onramp is in POSIX shell [1]. This was intended to make C bootstrappable on any POSIX system of any architecture with nothing besides the shell. Unfortunately it's about 100,000x too slow to be useful. It's also at least as complicated as a machine code VM. I've since mostly abandoned the POSIX shell idea.
Onramp does have a very simple C89 VM though, and its purpose is for bootstrapping modern C on systems that have only a basic C compiler [2]. So this c89cc.sh could in theory work. I tried it and unfortunately it doesn't quite compile yet (and doesn't give a comprehensible error message either.) Even if it worked, c89cc.sh only compiles to x86_64 ELF, and it's way more complicated than the x86_64 ELF machine code Onramp VM [3].
This has been a bit of a recurring theme with Onramp: anything I've tried to get away from the initial machine code stages ends up being more complicated than handwritten machine code. Still, it's nice to have a lot of different ways to bootstrap. I love seeing projects like this and I'm glad to see more people taking bootstrapping seriously.
[1]: https://github.com/ludocode/onramp/blob/develop/platform/vm/...
[2]: https://github.com/ludocode/onramp/blob/develop/platform/vm/...
[3]: https://github.com/ludocode/onramp/blob/develop/platform/vm/...
-
This shell.c can be compiled from c89cc.sh itself:
https://gist.github.com/alganet/1513d7b6abef5c1a53a324d897c3...
Ouroboros self-hosting. They can self-host one another.
The idea is to make shell.c compile from an even simpler C compiler, such as M2-Planet:
https://github.com/oriansj/M2-Planet
Let me remind you that current stage0 bootstraps tinyc from mes, which is an interpreted lisp. It's not that different from the shell architecturally.
The current stage0 also features kaem as one of the first dependencies. kaem is, in fact, a simpler version of the bourne shell.
It's always a tower. You'll never get a one single clean dependency pass in bootstrapping.
-
A linter, not yet.
You can use what I use: https://github.com/alganet/shell-versions
It's a container with lots of shells that you can test. Like esvu but for the shell.
Might have a little outdated docs, hit me with an issue if you use it and face any problems (I'm also the author).