@Serenitor It's different in many ways:
* also changes semantics of == ("is it actually the same object" instead of
"is this (other) object the same")
* no dynamic dispatch is usable anyway unless {.inheritable.} is applied first
* poorer performance due to dynamic heap allocation (and GC)
* poorer performance due to memory fragmentation
Proof of the first thesis:
type Person = ref object
first, last: string
let person1 = Person(first: "John", last: "Doe")
let person2 = person1 # the very same object
let person3 = Person(first: "John", last: "Doe") # essentially the same
value
echo person1 == person2 # true
echo person1 == person3 # false
I wouldn't be all-overjoyed with these Java-like == semantics...