# 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()
    
    
    Run

With
    
    
    # var r = R(i: 2) # OK
    # var r:  owned R = R(i: 2) # OK
    
    
    Run

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.

Reply via email to