* Destructors and move semantics are still in development and scheduled for
Nim version 2. There have been previous attempts to implement them and they
were "hacked together".
* The way to write a destructor is
proc `=destroy`(x: var T)
The other syntaxes will be removed.
* There is no direct distinction between stack and heap for destruction, it's
just that the existing Nim uses a GC and finalizers to clean things up or
try-finally/defer, just like Java, C#, Python, Ruby, Go, JavaScript etc. In
fact, like every other language that is not C++.