freenode/#clasp - IRC Chatlog
Search
13:39:13
drmeister
Running arbitrary code on sbcl at compile time and keeping environments separated look like a huge problem.
13:40:40
drmeister
Bike can weigh in - he's been thinking about it the hardest - we have to redefine CL within CL.
13:40:42
Bike
and doing so is pretty involved. now, as far as i understand, if the host supported global environments it would be a lot easier
13:41:44
drmeister
beach: How long does it take to start up SICL with global environments within sbcl?
13:43:30
drmeister
So what about using SICL, with its first class global environments, to build cclasp?
13:44:26
drmeister
I think that's what it is - and if macros use macros - they are all clasp macros.
13:45:45
Bike
which SICL accomplishes by compiling everything to HIR, using a HIR-back-to-common-lisp translator, and then compiling that with the host compiler. right?
13:46:23
beach
The Common Lisp code is compiled and then "linked" to the first-class global environment.
13:48:47
Bike
if the host supported first class global environments, the code could be evaluated and compiled using the host evaluator/compiler directly with a special build environment, right?
13:52:36
Bike
so that part would be done in a clasp proto-lisp executable just smart enough to output and load LLVM
13:54:15
Bike
kind of the trick here is that a lot of the reason for cross compile would be, rather than build times (which are finicky), maintenance. right now we have bclasp, a full lisp compiler that is only used for building. a lot of code we don't really want to have
13:54:49
Bike
so if cross compiling means maintaining something like the HIR-to-CL it's less attractive as an alternative
13:55:25
Bike
but we're not really at the point of a final determination or anything, it's mostly that it's more work than it looked like. not unexpected.
13:56:59
Bike
the other thing beyond that is the question of how the code of the implementation (SICL or clasp) is actually organized
13:57:41
Bike
Like, as far as I understand, SICL has to compile a definition of every macro and every function used by a macro, in the host. Then it goes through again and compiles those things into fasls, in an environment with those definitions. right?
13:59:14
beach
Well, right now, SICL doesn't generate FASLs at all, but yes, something like that would have to be done I guess.
14:00:30
Bike
Actually I should probably look at how SBCL organizes its code... it has separate files like sxhash.lisp and target-sxhash.lisp, and i believe the former is compiled twice while the latter is only put in the product
14:03:20
beach
In the next step, it means create an instance of that instance. Now it's a SICL class represented as a host instance.
14:08:50
drmeister
We also have a time constraint. Currently (back of the envelope) we want to speed up something that is taking about an hour.
14:13:05
Bike
what i'm going to try to do, anyway, is first reorganize the code so that bclasp is separated from the LLVM bridge stuff we use in cclasp
14:13:17
Bike
and then maybe i'll look more into separating compile-time and run-time stuff as would be required for cross compiling
14:16:30
drmeister
Do you have new insight? Implement eval with Hir->CL and maintain a compilation environment?