by z29LiTp5qUC30n on 6/24/19, 3:56 PM with 68 comments
by rgoulter on 6/24/19, 5:26 PM
What a wonderfully mad, cool goal.
by Dylan16807 on 6/24/19, 4:42 PM
Is this actually smaller than TCC? It's kind of hard to tell since TCC is split into files and I don't know what's actually necessary. And that question includes earlier, less featureful versions of TCC. Note that the more-or-less-C compiler it's based off of is absolutely miniscule: https://bellard.org/otcc/
by 0xffff2 on 6/24/19, 7:04 PM
How is this measured/qualified? These days, I would doubt that 70% of people whose primary job is to write code have any knowledge of assembly whatsoever, so a naive reading of the above paragraph seems unlikely to succeed.
by sly010 on 6/24/19, 11:16 PM
If not, then the smallest binary to bootstrap a C compiler is actually a single jump to a C compiler in memory with a README containing the memory dump in to be typed in :)
Seriously though, it reminds me of the Toaster Project [0] where an RCA student attempted to build a modern toaster without using the modern supply chain.
by kragen on 6/25/19, 4:00 PM
Interpretability is another part of the problem: even if we recovered an executable copy of Ivan Sutherland's historically groundbreaking program SKETCHPAD, for example, we wouldn't be able to run it because we don't know the instruction set for the computer it was built for. Remember that the entire body of knowledge about Ancient Egyptian culture was lost in the 5th Century, when the Christian Dark Age closed the temples, and not regained for almost 1400 years — and then only due to the great good fortune of the Rosetta Stone.
A bootstrappable computing stack is a crucial part of the "Rosetta Stone" that will be needed to preserve 21st-century knowledge. One of the few papers tackling the interpretability problem in this form is http://www.vpri.org/pdf/tr2015004_cuneiform.pdf, "The Cuneiform Tablets of 2015", by Long Tien Nguyen and Alan Kay.
There's a more immediate necessity, though. As recent events make clear — Chrome's extension API kneecapping ad-blockers, the increasing effectiveness of Chinese censorship, and the shocking US$12 million award to Nintendo last November against ROM site operators for preserving classic video games, for example — the current political and economic system cannot be trusted to preserve our access to our cultural heritage, even during our lifetimes. That means that we need an autonomously-bootstrappable trustworthy free-software infrastructure that is viable without the massive economies of scale that fund mainstream platforms like Linux, Android, MacOS, Chrome, and even Firefox. If your personal archive of the Tank Man photo, the Arab Spring tweets, or the video of the murder of Philando Castile runs afoul of future malicious-content filters integrated into your operating system, there is no guarantee that it, or you, will survive.
So we're doing our best to get some green shoots established before the situation has any opportunity to get worse.
by bloak on 6/24/19, 10:18 PM
It sounds stupid, I know, but when I investigated possible paths for getting from zero to GCC, flex looked like the biggest potential obstacle.
There are also C files in GCC/binutils that are generated by complex shell scripts. That was perhaps the second biggest obstacle.
(If I recall correctly, bison's not a problem: old versions of bison don't use bison.)
by logicallee on 6/24/19, 6:09 PM
It's even smaller than l1 cache. (In case you wanted to bruteforce every possible text file you could feed this binary, and wanted to do it all on cache in the CPU).
Maybe it's the size of payload you can put into a usb C cable or something.
I mean it's just so freaking small. Any ideas what limits this is "small enough" to fit under?
by cylinder714 on 6/26/19, 1:24 AM
On a related note, one can write arbitrary bytes to a file (on a Unix-like system) using GNU 'echo' or the 'printf' utilities. Chris Wellons' post "A Magnetized Needle and a Steady Hand" describes how to write a basic utility in this way.
by tomcam on 6/24/19, 8:29 PM
by agumonkey on 6/24/19, 10:04 PM
by kaushalmodi on 6/24/19, 9:12 PM
I hope Github improves Org mode support at some point.
by edwintorok on 6/24/19, 8:23 PM
by zachrose on 6/25/19, 2:41 AM
by rain1 on 6/24/19, 5:37 PM
But perhaps it's the smallest if we count transitive dependencies! (by this I mean count the lines of code of the program, and every program you need to build the program and everything you need to build them and so on)
by sittingnut on 6/24/19, 8:05 PM
by kjhughes on 6/24/19, 5:29 PM