mit-scheme-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MIT-Scheme-devel] A tale of four builds.


From: Taylor R Campbell
Subject: Re: [MIT-Scheme-devel] A tale of four builds.
Date: Sat, 5 Oct 2013 22:51:11 +0000
User-agent: IMAIL/1.21; Edwin/3.116; MIT-Scheme/9.1.99

   Date: Sat, 5 Oct 2013 14:49:37 -0700
   From: Matt Birkholz <address@hidden>

   > From: Taylor R Campbell <address@hidden>
   > Date: Fri, 4 Oct 2013 19:08:25 +0000
   > 
   > (We could alternatively just add a parameter for the
   > object directory.)

   Can the argument be #F?  Meaning "compile AND evaluate (in the same
   package)"?  Then I don't have to arrange a place for cross-compiler
   objects I will never fasload.

No, I am trying to separate the program that analyzes another
program's source (the compiler) from the mechanism we have for
combining and running programs (the evaluator).  The global package
database makes this hard enough.  Loading a fresh compiler into the
system that is compiling the fresh compiler at the same time as this
is happening is not something that our code is set up to do sanely at
the moment.

   > We ought to do macro phasing the way Racket does.  A program that
   > depends on side effects from the transformer procedures of the macros
   > it uses is a broken program.

   You're talking gobbly-gook now.  What is "macro phasing"?  And
   "broken" is "incompatible with separate compilation" right 'round again?

See Matthew Flatt's paper `Composable and Compilable Macros'.
`Broken' means it is fragile, if it works at all, and unnecessarily
painful to reason about.

   Star-parser/ IN runtime/:
           (load "runtime/inner.sf")
           (load "runtime/inner.cbf")
           (load "runtime/make-inner")

           (load "star-parser/compile")
           (load "star-parser/load")

           (load "runtime/outer.sf")    ; latest *parser macros available!
           (load "runtime/outer.cbf")
           (load "runtime/make-outer")
           ...

This is basically what I had in mind, except I meant to move the
`outer' stuff outside runtime/ altogether.  However, for now, it will
do well enough to load *parser into the bootstrap toolchain.

   On Planet KISS, runtime/ is "compiled" by loading it into a (cross
   runtime) package initialized with little more than essential R4RS
   bindings.

It should not be necessary to use a (cross runtime) package.  We ought
to be able to write a program that operates on descriptions of
packages independent of the way that program was organized itself in
MIT Scheme.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]