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