freenode/#clasp - IRC Chatlog
Search
12:41:27
drmeister
There is a bit of a problem in that we cannot currently use the parallel build using 'fork' on macOS with the MPS GC.
12:42:10
drmeister
The MPS version on macOS creates a second thread to handle segfaults from touching memory barriers. 'fork' duplicates the thread that invokes 'fork' but not the other one.
12:49:14
cracauer`
I test the port for FreeBSD-current on my older Macbook in a virtual machine. While compiling the OSX version outside. This computer is not happy.
12:55:25
cracauer`
Currently testing whether some other dev update fixed that (some float conversion for RNG).
12:59:49
drmeister
frgo: I haven't moved on the extensions pull request because I had a bunch of demos of the Cando extension and I didn't want to cause myself problems. We can move forward now.
13:01:12
drmeister
Because there is one thing that it doesn't capture - the worst problem of all. The clasp_gc.cc file that the static analyzer generates needs to be generated for every combination and permutation of extensions.
13:02:28
drmeister
You can build the boehm version of clasp without clasp_gc.cc but the MPS version needs have a clasp_gc.cc file that was calculated from a specific combination of clasp+whatever extensions.
13:04:47
drmeister
My best idea is to incorporate the static analyzer into the build - that would mean building the boehm version, running the static analyzer in the boehm version on the C++ source code, building the MPS version. That would add a few hours to the MPS build.
13:07:09
drmeister
The second idea is to minimize the number of extensions to things that only add classes that the GC needs to manage.
14:37:35
drmeister
cracauer`: I'm trying to figure out how to add an API for thread local custom allocators.
15:01:50
cracauer`
Do you want to do this for locality (data clustered together in one physical area)?
15:03:22
drmeister
It's a thing called an 'atom-tree' it's like an articulated robot, with lots of stiff segments joined by hinges.
15:04:37
drmeister
There will be a few pointers in and a few pointers out and lots and lots of internal pointers.
15:05:26
drmeister
I originally set up the code so that the nodes live in vectors and I created a reference counting scheme to keep track of what was alive and what wasn't.
15:06:00
drmeister
It was a bad idea to develop a custom memory management scheme like that - it really messed up the code.
15:11:03
drmeister
I have separate pools in mps - I just need to develop an API to create custom thread local allocators. Additionally I'm trying to do this as much as possible with C++ compile time programming so that it's fast. I have an idea how to implement it.