1. There are currently no plans to allow `sink` for let/var variables. It's
unclear what it should mean and whether you can move in `x = y` depends on the
`y`, not on the `x`.
2. All function return values are implicitly "lastReadOf", yes.
3. You can use `--newruntime -d:useMalloc` to use malloc instead of Nim's
allocator which is usually tuned much better for shared allocations. There is
no reason to take the cost of a lock for every allocation, there are many ways
to avoid that. Also, you will be able to setup a thread-local allocator for
sections of your code. The allocator proposal is not part of the "destructor's
spec".