Open
Description
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?