So it'd be the preform of something kind of Guile's AOT compiler which we(all guilers) had talked about few months ago? I think it's a great idea! And I'm glad to see your work.
PS: I agree with "Stallman". ;-) On Tue, Dec 6, 2011 at 12:25 PM, Noah Lavine <noah.b.lav...@gmail.com>wrote: > Hello Guile developers, > > Despite the long gap since my last email, I have in fact been working > on the compiler project. This email has two purposes: first, to make > sure that I have a basically reasonable design before I work more, and > second, to ask a logistical question. > > First of all, I very much appreciated your suggestions of things to > read. I did look at the Reasoned Schemer. I also spent quite a while > studying Stalin (the compiler), because I believe that is the current > fastest Scheme compiler. (And therefore, it's the one I'd like to beat > with our compiler.) The design I am currently working with is the same > as Stalin's design. > > It is a propagation network. Basically you have a graph of Tree-IL > nodes, where each Tree-IL node is connected to its parent, its > children, and optionally other nodes (a variable is connected to the > place it was declared. A primitive function is connected to the error > continuation it could jump to). The compiler propagates information > along the edges of this graph, attempting to find the minimum set of > possible values for each variable and each jump target. It also > performs partial evaluation as a special case of this. > > What I have described also seems to be how Hindley-Milner type > inference works (although I think we can do a bit better than standard > Hindley-Milner systems). Does this seem like a good design for the > static analyzer portion? > > One big oversight that I know of is that this doesn't do any sort of > specialization. I think that is an extremely important feature, but > when I looked at doing specialization I thought that it would use all > of the logic this would, but require a bit more work to keep the > complexity down, so I thought I should do this first. > > I haven't thought much about the rest of the compiler yet, but I > imagine you can basically walk this graph and try to choose > representations for each piece of it using the information you > gathered in the analysis phase. The key ingredient for that will be a > library of representations for each Tree-IL node. > > The second part of this post is a logistical question. I would like to > do this work in public, so other people can see it (and hopefully > contribute). Where is the best place to do this? Should I make a > branch on Savannah? That makes the most sense to me, but it seems a > bit unnatural, since this project is very separate from the rest of > Guile. > > And finally, a fun thing. The current best Scheme compiler (that I > know of) is called Stalin. Therefore, I suggest that our compiler be > called "Stallman", after our fearless leader (whose name also starts > with "s"). :-) > > Thanks a lot, > Noah > >