-
Notifications
You must be signed in to change notification settings - Fork 830
[WIP] sig data trim #12674
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
[WIP] sig data trim #12674
Conversation
|
@vzarytovskii I'm closing this for now, as it's not critical for us. However we may want to return to this |
|
Tracked in #12746 |
|
|
||
| type InterfacePublic = interface end | ||
|
|
||
| type private InterfacePrivate = interface end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dsyme is my understanding correct here that this should be kept only when there is an InternalsVisibleTo present on the assembly level?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess, it should be kept if a public type inherits it.
We should verify what C# emits into refassembly in this case.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Internal interfaces appear to be present in C#:
https://sharplab.io/#v2:DYLgZgzgNAJiDUAfALgTwA4FMAE6BOAlgG4CGyOAkgHbl5gkDGmACoaedgLzYE2Z2McmKjCA
Even without any InternalsVisibleTo attributes.
|
|
||
| type InterfacePublic = interface end | ||
|
|
||
| type private InterfacePrivate = interface end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dsyme is my understanding correct here that this should be kept only when there is an InternalsVisibleTo present on the assembly level?
|
|
||
| val canAccessFromSomewhere: Accessibility -> bool | ||
|
|
||
| val canAccessFromSomewhereOutside: 'T -> Accessibility -> bool |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dsyme what was the train of thought with this first generic parameter?
I'm currently only able to deduce that the top-level Entity has the attribute inside the .Attribs property.

While working on #11521 with @vzarytovskii we've identified that the F# signature data metadata resource blob contains Too Much Information.
In particular it contains
This means the reference assembly feature will not be quite as effective as we would like , as reference assemblies will get updated even when private implementation details change.
However, this fix to reduce the information on the signature bloc is of a different nature to the rest of the work on reference assemblies and is in a sense completely independent from a logical/correctness point of view. It also has some subtle edge cases, and thus we think this fix is best made separately, and perhaps released under preview or else have a command line option to disable it.
The reference assembly feature is still highly useful without this fix as there are plenty of cases where it's still useful without this.