# nim c --newruntime -r t.nim
import OS
type
O = object
i: int
a: array[1024, int]
R = ref O
proc t =
var r: R = R(i: 2)
# var r = R(i: 2) # OK
# var r: owned R = R(i: 2) # OK
var x: R
for i in 0 .. 1e7.int:
r = nil
r = R(i: i)
sleep(1)
echo type(r)
x = r
if i == 7:
echo r.i
echo getFreeMem()
t()
With
# var r = R(i: 2) # OK
# var r: owned R = R(i: 2) # OK
it works like expected by me, terminates due to dangling ref.
But with var r: R = R(i: 2) it compiles and runs with --newruntime switch. From what I remember new() should infer a owned ref with newruntime.