Nice improvements! I like how lucy_bootstrap_parcel() has become shorter and
easier to grok now that it has a loop instead of a couple hundred function
calls. And thanks for addressing the handful of concerns from the initial
+1 to commit the second patch sequence.
> Now that VTables are allocated on the heap, I'm not sure if overriding
> Inc_RefCount and Dec_RefCount is still needed. I think we could and should
> use a normal destructor now. The same for Methods.
Hmm, that would make these objects mutable – and that poses a problem, as
they are shared globals. Clownfish is designed to support strongly divorced
concurrency in threads; VTables – and now Methods – are shared, but they are
the only objects which can be shared. Having VTables be shared singletons
is a deeply-baked-in assumption for the current design. If we make them
mutable, we will still need to override all refcount manipulation and access
methods, to provide for threadsafe incrementing and decrementing – the
default refcount manipulation methods inherited from Obj are not atomic.
We would also have problems if VTables or Methods were to be freed before any
objects which hold references to them. This can happen under out-of-order
refcount decrementing during Perl's global destruction phase: