cps
cps copied to clipboard
Forking a continuation requires deepCopy()?
The move to inherited objects has made it impossible to properly fork continuations. This is what I did before:
proc fork(c: C): C {.cpsMagic.} =
let c2 = C()
c2[] = c[]
c.evq.push c2
c
This doesn't work because c2 will now be of the C root type, losing all memory of the original type and its data.
Workaround is using deepCopy(), but that'll not work on the JS backend and is disabled by default for --gc:arc
I guess there is no alternative standard way to do this?
Not yet, and it's the most critical ~defect~ missing enhancement :smirk: as far as I'm concerned.
This can be solved coincidentally with #190.