Issue #18047 has been updated by Eregon (Benoit Daloze).


Is it only on constant reads or also on constant writes/assignments?
Access is a pretty generic term and I would think it means both, but then is there a way to differentiate?
Adding docs to the TracePoint class about this event would be helpful to understand that better.

I think it would be relevant to measure the performance impact of this change:
* When the new TracePoint is not enabled vs before the PR
* When the new TracePoint is enabled but does nothing
* When the new TracePoint is enabled and does check like the example

Constant reads are very frequent so there might be quite some overhead to this.

----------------------------------------
Feature #18047: TracePoint: Add event type for constant access
https://bugs.ruby-lang.org/issues/18047#change-93031

* Author: suusan2go (Kenta Suzuki)
* Status: Open
* Priority: Normal
----------------------------------------
Hi there
We've made a PR to add new :constant_access TracePoint event. https://github.com/ruby/ruby/pull/4683
Burke Libbey made some first steps on this idea a few years ago #13133 and we improved his patch based on the comment by ko1.

As mentioned in the issue above, this patch allows us to enable boundaries between packages/components. 
Burke's [proof-of-concept gem](https://github.com/burke/packages) might help you understand more concrete usage of this patch.

The proof-of-concept gem works like the below and this will help us manage large codebases with lots of dependencies.

```ruby
package 'product'
class Book < ApplicationRecord
  belongs_to :user
end

package 'user'
class User < ApplicationRecord
  has_many :books
end

user = User.first
user.books
# => VisibilityError (can't access Book from User)
```



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>