Hacker News new | past | comments | ask | show | jobs | submit login

I suspect that the big part of that 120MB is bootstrap-guile (Guile is a Scheme implementation)

if you want to go really minimalistic, see stage0, it's like 500 Bytes

https://github.com/oriansj/stage0

details are in the article






Out of curiosity, what makes Guile take up so much space?

I considered using Guile as the scripting/extension language in some of our tools, but I couldn't get over the large size and the number of additional dependencies it introduced.

There's a certain irony to the idea that Guile was designed to be a TCL killer, and wound up being larger and harder to deploy.


That's likely the case: at least in Arch Linux, Guile+deps is about 50MB.

Can you elaborate on what stage0 does? I'm not sure I understand what it means by "bootstrap".

Stage0's binary seed is a monitor, a program that lets you twiddle data in hex into memory addresses (in hex).

Code injected into the monitor can do the next best thing, a similar program that loads text files with hex into binaries and skips ends of lines after a comment marker starts.

As such, the initial stuff in the stage0 project is further programs that are still in my view blobs, but instead of binary blobs they're plain text hex blobs with comments documenting the assembler equivalent and what's going on.

From there there are iterations of having hex files (hex 1 and hex2) with increasing complexity of symbol tables so references can be made to addresses and relative jumps by symbols.

From there stage0 project makes the leap to "stage1" and there are things like basic editors, file concatenation tools, macro based assembler and so . It all ends with a C-subset (M2-planet) compiler written in assembler.

Work is in progress to rewrite the scheme interpreter mes in M2-planet instead of normal C. The c compiler mescc (written in scheme) can build tcc and onward to gcc.

There's bootstraps along these lines for a fantasy machine called knight and there's x86 versions and maybe some other archs in the works.

My stalled side project is interpreting the knight stuff in python: https://github.com/markjenkins/knightpies

I'm excited by the idea that I could use really old GNU/Linux distro CDs that I trust with python2.3+ as a bootstrap path and eventually with some other work even use old power macs with MacOS X that included python2.3+ as another cool place to bootstrap the free world.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: