unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* Update and Questions
@ 2011-12-06  4:25 Noah Lavine
  2011-12-06 11:11 ` David Kastrup
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Noah Lavine @ 2011-12-06  4:25 UTC (permalink / raw)
  To: guile-devel

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



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2011-12-18 20:39 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-06  4:25 Update and Questions Noah Lavine
2011-12-06 11:11 ` David Kastrup
2011-12-15 15:23 ` Nala Ginrut
2011-12-15 15:34   ` David Kastrup
2011-12-15 15:42     ` Nala Ginrut
2011-12-15 16:00       ` David Kastrup
2011-12-15 16:19         ` Nala Ginrut
2011-12-15 23:06           ` Noah Lavine
2011-12-16  2:52             ` Nala Ginrut
2011-12-18 20:39 ` Ludovic Courtès

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).