freenode/#clasp - IRC Chatlog
Search
22:53:37
karlosz
i'm running a serial build with inline.lisp hoisted to the front of the build like with parallel in hopes that will fix the serial build
22:56:07
Bike
what's the load order? i mean these are all eclector files, right, has inline.lisp been loaded at this point?
22:59:36
Bike
inline.lisp is what turns on the compiler saving inline definitions. if you compile something before inline.lisp is compiled, during build, no inline definitions are saved.
22:59:49
Bike
so if you move this to be compiled afterward, now the inline definition is saved and will need to be loaded.
23:00:49
karlosz
we basically have that inline.lisp is compiled during build => inline definitions are now saved => eclector is compiled and laoded again, with saved inline definitions
23:01:09
karlosz
then since eclector is also loaded before inline.lisp, now we're trying to load it without the inline definitoins
23:01:58
karlosz
so i think hoisting the compilation/loading of inline.lisp as with the fork build is probably the right thing to do to , so we avoid problems in the future like this
23:02:46
karlosz
now i get: boehm/fasl/cclasp-boehm-bitcode/src/lisp/modules/serve-event/serve-event.fasp
23:08:06
drmeister
I don't know the answer - I'm rusty. But in the fork build every compile-file that happens after the source is loaded/compile'd is compiled from a clasp with no side effects from the other compile-file's.
23:09:11
drmeister
It's like you load/compile every cleavir source file and THEN compile-file one of them, shut the whole thing down, start it up again load/compile every cleavir source file and then compile-file another source file.
23:10:26
drmeister
No - the final image load order is the order of the files passed on the command-line from waf.
23:11:23
drmeister
Now, confession time - I don't really, REALLY understand what is going on. There may be some mongo huge bootstrapping problems here that I am blissfully unaware of.
23:11:56
drmeister
It works as well as it has. My plan is to implement save-image-and-die and finally not have to worry about this.
23:12:45
drmeister
beach has been wrestling with bootstrapping for years as well - it's a crazy hard problem. I feel like I'm in good company.
23:14:35
drmeister
Wait - it only reorders it in that it moves the compilation so that it starts earlier.
23:15:18
drmeister
Because it takes a long time to compile - you get more parallelism by moving it earlier. I'm pretty sure it doesn't effect the outcome one iota.
23:16:07
drmeister
If you fork on 8 processors it's better to start the large one early than to do it late.
23:17:55
drmeister
These AST things - we are saving the ASTs of inlined functions - somewhere - right?
23:18:53
drmeister
We can't save any of them until cleavir is fully loaded. So no ASTs get generated until after inline.lisp is loaded/compiled
23:19:36
drmeister
Say you have a inline function foo that is inlined in bar and bar is also inlined...
23:20:34
drmeister
Does it help to put together a scenario like that? You have a foo-file.lisp and a bar-file.lisp and if they get compiled in the fork build they can't see each other.
23:22:23
drmeister
Maybe in the serial version the one that is compile-file'd earlier gets inlined into the one that is later?
23:23:48
karlosz
well, i do think Bike hit the nail on the head earlier. that Eclector is now saving its inline definitions but during the final image load Eclector gets loaded before inline.lisp before those classes get defined
23:24:43
drmeister
Oh - if you guys understand what is going on then I will quietly back away and exit the conversation. I don't want to confuse things.
0:10:26
karlosz
drmeister: this is all that was needed to make it work: https://github.com/clasp-developers/clasp/pull/1096 . i'm seeing 3x speed increase for cclasp with serial build and 2x speed increase for cclasp bootstrap with fork build
0:10:42
karlosz
i suspect that on linux it will be even more pronounced because unwinding is more pronounced there
0:11:21
karlosz
the key was to only compile and load eclector again while building cclasp and not while cclasp is building itself
0:11:44
karlosz
that way the inline definition doesn't get saved and there won't be problems when loading in the final image
2:06:10
karlosz
yeah after seeing how badly eclector affected your chemistry code i had a suspicion this might have been the case during bootstrapping
2:09:59
karlosz
okay, on my laptop which runs linux i just serial built clasp from a distclean with Compilation finished in 1:41:53, at 2020-12-01 18:09:16.012077
2:10:41
karlosz
this also means it'll soon be feasible to do clasp development on my own machine, which is exciting
4:24:55
no-defun-allowed
Hm, I built cmps again and told it to do some compiling, then got more MPS assertion failures.
4:25:32
drmeister
no-defun-allowed: We've done some major rearranging again - I have to run the static analyzer again.
4:27:36
drmeister
Is there a reason why you are interested in the MPS version - other than why I'm interested in the MPS version (copying GC).
4:28:49
no-defun-allowed
I'm annoyed that SBCL does a lot of major collections (and thus long pauses) while running my code. Boehm is also incremental right? I could just sleuth further for more consing I can avoid, but it's annoying.
4:32:46
drmeister
Here's my current problems with the MPS - 1. there is no support for it at the moment; 2. It's slower than boehm; 3. It has poor multithreaded performance.
4:33:40
drmeister
I've kept it going with the belief that copying GC can do better than boehm - but that hasn't been realized.
4:34:58
drmeister
I've also kept it going because the work that I've invested in MPS will be useful for a couple of other things like 1. save-lisp-and-die and 2. it could make boehm run faster.
4:37:19
drmeister
save-lisp-and-die is basically one round of copying GC - copying memory to a contiguous buffer and then writing it out to a file.
4:38:07
drmeister
So to put my priorities out there - so you aren't led astray - keeping the MPS version running isn't my highest priority.
4:38:32
drmeister
It's useful for debugging memory problems the MPS version is very sensitive to memory problems.
4:39:13
drmeister
But right now I'm stretched very thin working on other things. I'm running two companies, writing and debugging code and trying to get some chemistry working that just might save the world.
4:40:51
drmeister
If you are interested in jumping in and helping - I could provide support - but otherwise, me working on fixing MPS problems will depend on my whims and not on any mission critical work towards goals.
4:45:11
no-defun-allowed
I'm stuck deciding if I want to make a release of one of my projects at the end of this month (as I did in 2019), or if it's a pointless idea and I should give up and grow vegetables. In either case, it's probably a painful point to start hacking Clasp from.
5:26:59
karlosz
::notify Bike what happened to type checks? i can't seem to get any to spawn anymore
5:40:47
drmeister
Modern farmer says: one acre of pasture for every three to five animals and supplementing with orchard”“grass hay, especially during the dead of winter.