Hello all,

While writing the more complex variant of the compiler implementation of
`the-environment' and `local-eval', I learned a great deal about the
compiler, and accumulated the following list of questions along the way.

If someone with sufficient knowledge could answer at least some of these
questions, I would be grateful.

* Why do compilers return two copies of the same environment?
  What is the intended meaning of these two return values?

* What is the logic behind the handling of returned environments by
  compile-fold and read-and-compile?

* Should we move to support compiler environments that are not simply
  modules?

* Should we support distinct environment types for different languages,
  or use a simple uniform type for all, e.g. an alist?

* Why does code in analyze.scm check (module? env) in so many places?
  Is it expected that sometimes env will not actually be a module?
  Is it important to support this?

* Is there any way to embed references to non-serializable objects in
  compiled code?  I think this is important.  Not all code needs to be
  serialized, and we shouldn't limit ourselves to serializable code, for
  the same reasons that we shouldn't limit ourselves to serializable
  data.

* Do modules created by (make-fresh-user-module) get garbage collected?

* Why is `procedure-environment' still documented as "Very deprecated"?
  Is it still available at all?

    Thanks!
      Mark

Reply via email to