Factories no longer default to no_weak_ref #913
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Originally, factories defaulted to no_weak_ref because there wasn't believed to be any use case for weak references to factories, and the thought was that the weak reference support would be a performance penalty.
In practice, the weak reference support does not have a significant performance impact, so it's okay to leave it on even for factories.
Allowing weak references to factories is important because factories implement the static members of a runtime class, and those members may require taking weak references:
Furthermore, the ability to take a weak reference to a factory is required in order to use event_revoker for static events, since event_revoker requires that the event source support weak references.