Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make cdac APIs public but experimental #111180

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

jkoritzinsky
Copy link
Member

Make the cdac APIs public but experimental to make them easier to experiment with in other projects while we are still stabilizing the API surface.

Any usages outside of the cdac folder (or outside the repo entirely) will need to actively opt-in to using these APIs by suppressing the warning from the Experimental attribute.

Also address feedback from analyzers that kicked in as soon as I removed all of the IVT attributes. Keep the IVT for the tests though as they use a lot of "internal" types.

I've tried to limit the public API surface to the contract abstractions and the contract factories, at least as a starting baseline. I did make public all types used in the SOS-Dac interface implementation.

Copy link
Contributor

Tagging subscribers to this area: @tommcdon
See info in area-owners.md if you want to be subscribed.

{
internal TypeHandle(TargetPointer address)
public TypeHandle(TargetPointer address)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we keep these (TypeHandle, MethodDescHandle, ModuleHandle,...) constructors internal?
These data structures should only be created by contracts (and test mocking).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That makes sense. I'll switch these to internal.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I looked into this more and we can't make them internal as our layering has these types defined in the .Abstractions assembly and the actual contract implementations are in a different assembly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants