freenode/#sicl - IRC Chatlog
Search
15:40:58
beach
As it turns out, during bootstrapping, there are not that many subclasses to take into account. The generic functions are mostly accessors, and those that manipulate metaobjects.
15:53:25
Bike
that'll get weird with the type hierarchy. like, atom has to be a superclass of almost everything.
15:54:51
Bike
the symbol T has to be an instance of either the BOOLEAN class, or a class with no other members
15:59:53
beach
Yes, and I don't think you are allowed to alter the class hierarchy in such radical ways.
16:08:54
beach
I am thinking that, once this bootstrapping thing is working, it might be interesting to replace the HIR interpreter by an AST interpreter. I am betting it will be an order of magnitude faster.
16:09:55
beach
HIR is huge, which is why translating HIR to Common Lisp failed, but the AST is fairly close in size to the original code.
16:11:30
Bike
i've been tuning its performance a bit. there are some problems. it can't interpret things like fixnum-add-ast. if it can't interpret things it just uses the full compiler, but that can cause problems involving closures, so it maps the ast first to see if there's anything uninterpretable. and map-ast is really slow because of the huge hash table.
16:11:50
Bike
though i'm going to try rearranging the AST into being an actual tree, so the hash table won't be necessary
16:12:56
beach
I see. I wonder whether I wold have similar problems in SICL. That's not clear to me.
16:13:19
beach
I mean, I only need the AST interpreter/compiler during bootstrapping, so I can make certain assumptions.
16:14:44
beach
Another advantage of an AST *compiler* would be that it might be possible to understand the resulting Common Lisp code by looking at it. That was totally impossible with HIR-to-CL.
16:16:45
beach
But I would have to make similar transformations to the AST as I now do to HIR, so that I can "tie" the result to a particular first-class global environment.
16:19:01
beach
OK, enough for today. I'm off to fix dinner for my (admittedly small) family, and then spend time with her. I might check in briefly later. Otherwise, I'll be back tomorrow morning.
16:19:26
Bike
with clasp things could be simplified. like if cst->ast could be configured to not inline anything, there probably wouldn't be any fixnum arithmetic primops to worry about
3:26:01
beach
I take it you know about this channel, yes? It is mainly for discussions about the SICL project, including the Cleavir compiler framework, but also for related projects like Eclector, Trucler, Concrete Syntax Tree, etc. And we often discuss general ideas about system implmentation.
3:30:59
beach
Since this channel is logged, I use it as a notebook for ideas. That way, the ideas also get immediate exposure to other people who hang out here.