There are few changes required for everyday code. You must be aware not to create cycles. We have some primitive warnings for this that can detect some cases.
You can use `sink` and `lent` to help the compiler optimize but I'm also working on inferring these. Borrowing is different from move semantics and refcounting, there is an [RFC](https://github.com/nim-lang/RFCs/issues/178) covering it. However, the most common forms of borrowing might also be inferrable, consider for example: let x = obj.field # borrow or copy can be left to the optimizer f(obj) # can borrow if 'f' is .noSideEffect use x Run
