TracePoint: Add event type for constant access
I've attached a patch to add a new
:constant_access TracePoint event.
One feature and/or bug, depending on your perspective: since this event fires from
setinlinecache, the event is only triggered:
after nested constant resolution: for
A::B, only one event is triggered (because
on cache miss: it cannot be used for things like counting iterations, which limits possible uses, but reduces overhead (because
setinlinecacheon a hit).
The use-case I have in mind here is to enable building runtime package/component boundary enforcement systems. For this case, both of the above properties are ideal.
Enforcing package boundaries is a problem we've been discussing a lot lately at Shopify.
If you want a more concrete usage example for this patch, I have some proof-of-concept code posted that makes use of it to construct a fairly minimal package system.
Packages::CONSTANT_ACCESS_TRACEPOINT is the particularly relevant bit.