dear list,

are the following assertions correct? any insights on them?

the eval.c, eval2.c, and eval3.c are a linear progression, similar to
how VCS versions of the same file follow each other as they evolve?
(in the current repo eval.c was not changed a single time after
eval2.c has been introduced.) this also applies to some other files
like boot.l and boot2.l, that are tightly coupled with eval.

the reason they are retained with explicit names in the repo is to be
able to easily compare the old versions for speed, compatibility and
some similar comparative operations?

it wouldn't be needed if there were some makefile targets, or some
other easy way, that checked out specific old revisions from the repo
and built them, so that experiments could be made with both the
executables yielded by building the current repo state and yielded by
building older states?

---

if these are all true above, then i'll look into implementing that
last one. basically there could be git branches like 'bootstrap-1',
'bootstrap-2', etc... the idea is that the compiler code in the
'bootstrap-n' branch requires the eval.exe yielded by building the
code in 'bootstrap-(n-1)'.

if you want to bootstrap from the first hand written eval.c, which is
potentially missing countless recent features, then you need a script
that goes through all the bootstrap stages and builds the eval.exe's
in succession. if bugs or platform issues show up in the process, then
you can just push fixes to the appropriate branches and restart.

if a new compiler is introduced later that can e.g. emit portable C
code, then the emitted code could be checked into the appropriate
bootstrap branch and then the C->bleeding-edge bootstrap process could
be shortened.

e.g. in the current state of maru, the bootstrap-from-C process could
start from the 'bootstrap-2' branch that would hold eval2.c and
boot2.l (because the current eval2.c is still written by hand and
doesn't depend on eval1).

this change would imply that the build process becomes somewhat
dependent on the repo format. due to the excellent teamwork goodies
provided by github, and the social trends, git seems like a good
choice. but given that Ian uses hg, and that it also has branches,
that's a big weight that i'm willing to give in to easily. (if i was
alone on the planet then i'd go with darcs and tags, but i am not, and
one of the main points of my current effort is to bring life into maru
hacking)

there's also http://hg-git.github.io/ which means that the hg client
can push into git repos, which may mean the best of both worlds: i
record whatever i do in hg, push to github for collaboration, and
publish my repo for Ian to be able to pull from it. but how well that
works needs to be investigated, unless someone has experience with it.

any thoughts? Ian?

-- 
• attila lendvai
• PGP: 963F 5D5F 45C7 DFCD 0A39
--
“We will have taken one giant step forward when we face this reality:
Powerful people never teach powerless people how to take their power
away from them.”
        — John Henrik Clarke (1915–1998)
_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc

Reply via email to