Hello, Recently, I've read the chapter on Macros in Guile's manual. The manual says that Guile's expander originated from that of Chez Scheme's and that version was portable to other schemes as well. So I search the Internet and find it[0]. The website states that the expander needs an expanded version of itself for bootstrapping, i.e. psyntax.ss needs psyntax.pp for bootstrapping. After playing for awhile, I realize the relationship of Guile's psyntax.scm and psyntax-pp.scm is exactly analogus. One needs an expanded version of psyntax.scm, i.e. psyntax-pp.scm for bootstrapping. Does this mean Guile is not bootstrappable from source only? I've tried to compile Guile 2.2.2 with psyntax-pp.scm removed and I get a segfault[1]. It seems the interpreter relies on psyntax-pp.scm to function properly. I don't know if I should bring this discussion to guix-devel. Free to do so if you think it is on topic. Cheers, Alex [0]: https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html [1]: GEN guile-procedures.texi Uncaught exception: Backtrace: /bin/bash: line 1: 4113 Broken pipe cat alist.doc array-handle.doc array-map.doc arrays.doc async.doc atomic.doc backtrace.doc boolean.doc bitvectors.doc bytevectors.doc chars.doc control.doc continuations.doc debug.doc deprecated.doc deprecation.doc dynl.doc dynwind.doc eq.doc error.doc eval.doc evalext.doc expand.doc extensions.doc fdes-finalizers.doc feature.doc filesys.doc fluids.doc foreign.doc fports.doc gc-malloc.doc gc.doc gettext.doc generalized-arrays.doc generalized-vectors.doc goops.doc gsubr.doc guardians.doc hash.doc hashtab.doc hooks.doc i18n.doc init.doc ioext.doc keywords.doc list.doc load.doc macros.doc mallocs.doc memoize.doc modules.doc numbers.doc objprop.doc options.doc pairs.doc ports.doc print.doc procprop.doc procs.doc promises.doc r6rs-ports.doc random.doc rdelim.doc read.doc rw.doc scmsigs.doc script.doc simpos.doc smob.doc sort.doc srcprop.doc srfi-1.doc srfi-4.doc srfi-13.doc srfi-14.doc srfi-60.doc stackchk.doc stacks.doc stime.doc strings.doc strorder.doc strports.doc struct.doc symbols.doc syntax.doc threads.doc throw.doc trees.doc unicode.doc uniform.doc values.doc variable.doc vectors.doc version.doc vports.doc weak-set.doc weak-table.doc weak-vector.doc dynl.doc posix.doc net_db.doc socket.doc regex-posix.doc 4114 Segmentation fault | GUILE_AUTO_COMPILE=0 ../meta/build-env guild snarf-check-and-output-texi > guile-procedures.texi make[3]: *** [Makefile:3909: guile-procedures.texi] Error 1 make[3]: Leaving directory '/home/alexvong1995/scm/guile-2.2.2/libguile' make[2]: *** [Makefile:2299: all] Error 2 make[2]: Leaving directory '/home/alexvong1995/scm/guile-2.2.2/libguile' make[1]: *** [Makefile:1857: all-recursive] Error 1 make[1]: Leaving directory '/home/alexvong1995/scm/guile-2.2.2' make: *** [Makefile:1743: all] Error 2