commit: ec2c5473d3120c4f02406740cf6857e5a217f48a
parent 44b76667f320be04b5ce106818f5850feee5d197
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Wed, 24 Sep 2025 23:16:49 +0200
notes/bootstrapping: Add disclaimer, order problem sections from best to worst
Diffstat:
1 file changed, 48 insertions(+), 25 deletions(-)
diff --git a/notes/bootstrapping.shtml b/notes/bootstrapping.shtml
@@ -40,6 +40,54 @@
 					<dd>Lists what isn't present in a list of source code formats, good for manual audits. Python+<code>magic(5)</code> means it is quite slow.</dd>
 			</dl>
 
+			<h2>Disclaimers</h2>
+			<p>
+				Unless you plan to make a system language, bootstrapping doesn't
+				have to be done from C or a low-level language.
+				It's fine to use any language as long at it's also bootstrappable
+				and wouldn't introduce circular dependencies.
+			</p>
+			<p>
+				For example: Go and Lua are fine.
+				Perl and Python are a bit involved but live-bootstrap got both.
+				Any language supported by GCC is also okay, although a simpler backend such as
+				<a href="https://c9x.me/compile/">QBE</a>
+				could be more interesting.
+			</p>
+
+			<h2>Non-Problematic / Praise</h2>
+			<h3 id="go">Go</h3>
+			<p>
+				<a href="https://golang.org/doc/install/source">Installing Go from source</a>
+				in the official Go documentation details it, both GCCGO and a branching
+				out of Go 1.4 are supported.
+			</p>
+			<p>
+				More recent versions do require a bootstrap chain but as Go's own
+				toolchain is standalone it's fine.
+			</p>
+
+			<h2>Historically problematic</h2>
+
+			<h3 id="firefox_python2">Firefox >=68 <=78</h3>
+			<p>Firefox would bundle python2 and refuse to build if removed. See <a href="https://salsa.debian.org/mozilla-team/firefox/-/commits/esr78/master/obj-x86_64-pc-linux-gnu/_virtualenvs/init/bin">Debian firefox-esr source history</a></p>
+
+			<h2>Potentially problematic</h2>
+
+			<h3>OCaml</h3>
+			<p>Has binary seeds in <code>./boot</code>, there is <a href="https://github.com/Ekdohibs/camlboot">camlboot</a> but it seems to be pretty inefficient (takes hours to compile when regular ocaml takes minutes to compile)</p>
+
+			<h3 id="zig">Zig</h3>
+			<p>
+				<a href="https://ziglang.org/news/goodbye-cpp/">Threw out the C++ implementation in favor of a <strong>large</strong> WASM binary seed</a>, for now it's chained-bootstrapping.
+				Hopefully an alternative compiler written in a bootstrapped language will appear, because keeping versions of LLVM all the way to 15 working properly just doesn't seems reasonable.
+			</p>
+			<p>
+				<a href="https://jakstys.lt/2024/zig-reproduced-without-binaries/">Zig Reproduced Without Binaries</a> 
+				(<a href="https://debbugs.gnu.org/cgi/bugreport.cgi?bug=74217">related debbugs.gnu.org entry</a>):
+				Successfully reproducing Zig binaries within Guix, sadly inpractical as it uses 53+ intermediate versions between 0.10 and 0.13.
+			</p>
+
 			<h2>Problematic software</h2>
 
 			<h3 id="erlang">Erlang</h3>
@@ -140,31 +188,6 @@
 				I guess web development can also mean creating cyclic graphs of dependencies.<br />
 				Note: acorn doesn't lists it's dependencies on npmjs because it publishes a pre-compiled version…
 			</p>
-
-			<h2>Potentially problematic</h2>
-
-			<h3>OCaml</h3>
-			<p>Has binary seeds in <code>./boot</code>, there is <a href="https://github.com/Ekdohibs/camlboot">camlboot</a> but it seems to be pretty inefficient (takes hours to compile when regular ocaml takes minutes to compile)</p>
-
-			<h3 id="zig">Zig</h3>
-			<p>
-				<a href="https://ziglang.org/news/goodbye-cpp/">Threw out the C++ implementation in favor of a <strong>large</strong> WASM binary seed</a>, for now it's chained-bootstrapping.
-				Hopefully an alternative compiler written in a bootstrapped language will appear, because keeping versions of LLVM all the way to 15 working properly just doesn't seems sane.
-			</p>
-			<p>
-				<a href="https://jakstys.lt/2024/zig-reproduced-without-binaries/">Zig Reproduced Without Binaries</a> 
-				(<a href="https://debbugs.gnu.org/cgi/bugreport.cgi?bug=74217">related debbugs.gnu.org entry</a>):
-				Successfully reproducing Zig binaries within Guix, sadly inpractical as it uses 53+ intermediate versions between 0.10 and 0.13.
-			</p>
-
-			<h2>Historically problematic</h2>
-
-			<h3 id="firefox_python2">Firefox >=68 <=78</h3>
-			<p>Firefox would bundle python2 and refuse to build if removed. See <a href="https://salsa.debian.org/mozilla-team/firefox/-/commits/esr78/master/obj-x86_64-pc-linux-gnu/_virtualenvs/init/bin">Debian firefox-esr source history</a></p>
-
-			<h2>Non-Problematic / Praise</h2>
-			<h3 id="go">Go</h3>
-			<p><a href="https://golang.org/doc/install/source">Installing Go from source</a> in the official Go documentation details it, both GCCGO and a branching out of Go 1.4 are supported.</p>
 		</main>
 <!--#include file="/templates/en/footer.shtml" -->
 	</body>