I browsed around the source. I like that it's actually possible to get something out of this activity.
There's some use of macros where inline functions (or even C++ templates) would have been prettier. It's a shame C has such a lame macro language.
I was interested in how he claims space efficiency for objects, while still leaving open the possibility of abusing an object (not its type; it's a prototype based duck typed language) as a hash table via definition of new methods. It seems that the object model does have vtable sharing between instances of the same type, so I assume there's some kind of copy on write when you add a method.
While I haven't looked at the source, if it's anything like other prototype-based languages, they would either share the same prototype ("vtable"), literally adding the method to both at the same time, or it would be added as an extension to only one of them. (Being able to add a method to just one object OR all sharing a common prototype is a feature.)
Using prototypes, it would be one pointer. I don't see why that would be particularly space-inefficient.
There's some use of macros where inline functions (or even C++ templates) would have been prettier. It's a shame C has such a lame macro language.
I was interested in how he claims space efficiency for objects, while still leaving open the possibility of abusing an object (not its type; it's a prototype based duck typed language) as a hash table via definition of new methods. It seems that the object model does have vtable sharing between instances of the same type, so I assume there's some kind of copy on write when you add a method.