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.
17:33:14
kpoeck
But when I try put this in linl_intrinsics.cc, e.g. in line 80 (in intrinsic_error, first clause, instead of SIMPLE_ERROR(BF("There is no function bound to the symbol %s") % sym->fullName());
17:33:38
kpoeck
I get a compiler error ../../src/llvmo/link_intrinsics.cc:81:7: error: reference to 'cl' is ambiguous
17:34:54
kpoeck
../../include/clasp/core/evaluator.h:34:11: note: candidate found by name lookup is 'cl'
17:36:38
kpoeck
in /Users/karstenpoeck/lisp/compiler/externals-clasp2/build/release/include/llvm/Support/CommandLine.h:50:11:
17:48:08
kpoeck
I read this that the compiler can't differentiate between namespace cl and namespace llvm::cl
18:19:17
kpoeck
drmeister: thats what I just found out, with ::cl::_sym_undefinedFunction it compiles
18:24:09
kpoeck
So the final return true; in line 449 is always reached if both hash-tables have the same test and count?
18:36:50
Bike
C++ probably can't return from inside a closure, so instead it will have to set a flag or something, i guess.