freenode/#clasp - IRC Chatlog
Search
4:20:14
godot
Are there nay plans to add coroutines/deliminited continuations as an extension to clasp? I am going to try and combine clasp with godot (os game engine), coroutines would be highly useful for me
4:21:47
drmeister
godot: It's low on my list of priorities - but I think it would be fairly straightforward given my experience adding threads.
4:23:08
godot
i do not think of coroutines as threads, I think of them as a great way of abstracting fsms
4:23:42
godot
but you can make billions of them with no context switching... basically there is a low overhead
4:25:37
godot
check out this language: http://skookumscript.com/, the primary feature is coroutines, makes interactive simulations(games, etc) far easier to create since you can think in time splices instead of the tick
4:30:16
godot
I heard you say in one of your talks that clasp is to c++ what clojure is to java, that is what made me come here to see if that is true
4:32:25
godot
I will drop in from time to time, once coroutines are added I will start "wrapping" the godot engine with clasp
4:32:46
drmeister
I'm not finding a lot on coroutines in C++ - it looks like it's being added to the spec - but not quite there yet?
4:33:59
drmeister
It says "This is a work in progress. Compatibility across LLVM releases is not guaranteed."
4:34:34
drmeister
If it's a C++ feature - then it should be fairly straightforward to add to Clasp. Clasp is fundamentally a C++ project.
4:34:57
drmeister
I see this: https://stackoverflow.com/questions/43503656/what-are-coroutines-in-c20
4:38:22
godot
They were added in clang 5? http://releases.llvm.org/5.0.2/tools/clang/docs/ReleaseNotes.html
4:42:05
godot
drmeister: anyway, since they are low priority, I will not bother you any further. I will check back in later from time to time when they have landed. Coroutines changed the way I program like lisp did, I would love to see them molded together.
4:43:07
drmeister
godot: If you want to speed up their incorporation - you are welcome to submit patches. I'd be happy to give you a hand doing it.
8:58:53
scymtym
i think they misrepresent "stackful coroutines" (in their terminology) by saying you either have to copy the entire stack or you need a spaghetti stack. direct style implementations of delimited continuations can copy basically as little as a single frame
13:36:04
drmeister
DISASSEMBLE works - but I'm having trouble figuring out how to relocate symbols from the cclasp-boehm executable.
13:38:52
drmeister
This means the difference between where 'nm' says a symbol starts in the cclasp-boehm executable and where it actually starts in memory is +0xF4F4000 bytes
13:41:48
drmeister
I think it's every symbol - so I could look for one symbol, calculate the delta and apply it to the rest.
13:58:58
drmeister
There are 5 (five) different scenarios that need special handling to resolve symbols on macOS/linux, executable/library and JITted.
14:01:52
drmeister
I was able to add annotations to the DISASSEMBLE output for anything that references the literal table - I stick the value in the output. So NIL, T, symbols, numbers, conses etc.
14:09:12
drmeister
There is an annoyance - symbols for intrinsics aren't resolving because they all go through a jump table. Maybe it's because I'm using (useless) PIC code?
14:09:57
drmeister
0x10eaaf6fc <# 66+268> callq "0x111561cd6{_CLASP-CTOR+534}" ## symbol stub for: 0x111561cd6{_CLASP-CTOR+534}
14:11:20
drmeister
disassemble -s 0x111561cd6 --> cclasp-boehm-image.fasl`__stack_chk_fail: 0x111561cd6 <+0>: jmpq *0x39ae94(%rip) ; (void *)0x00007fff67b46a2b: __stack_chk_fail