Skip to content

F# sig data contains Too Much Information #12746

@dsyme

Description

@dsyme

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

  • the metadata for "private" declarations in implementation files that don't have signature files
  • the metadata for "internal" declarations when there are no InternalsVisibleTo in the assembly

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.

A prototype of the fixes needed is in #12674, however this needs more work. Note that the work needed 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.

Metadata

Metadata

Assignees

Labels

Area-BuildEverything related to building F# compiler, tooling and VS extension.Area-Compiler-CodeGenIlxGen, ilwrite and things at the backendFeature ImprovementImpact-Low(Internal MS Team use only) Describes an issue with limited impact on existing code.Theme-Performance

Type

No type

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions