Open jcouv opened 7 years ago
I don't know what you mean by "not properly accounted for". Determinism means that identical inputs result in identical outputs. It does not mean that different inputs result in different outputs. The latter isn't possible (and isn't a goal of the determinism effort), as the output is frequently smaller than the input.
My understanding is there is a hash embedded in the output file properties, which is computed from various inputs (including content hash for source files). But not all inputs. I'll let @jaredpar confirm or clarify.
The other goal of determinism though is content enabled caching. In order to have proper content enabled caching the compiler at minimum needs to have a full documentation of what is part of the compiler input set. I do not believe these items are properly labeled as part of that set.
I understand now.
What about the set of analyzer assemblies?
@jaredpar What is the form of the documentation required to address this issue? Is there an output of the compiler that is the list of things the compilation depended on? Or it is some document somewhere checked into some repository with an English description of the set of inputs that affect the compilation?
@gafter it's this file
https://github.com/dotnet/roslyn/blob/master/docs/compilers/Deterministic%20Inputs.md
Rulesets are explicitly documented, as are "(Binary) contents of all files explicitly passed to the compiler, directly or indirectly"
Reopening until editorconfig fallout is clear and documented.
@jaredpar What remains to be done to address this issue?
@jaredpar As far as I know the editorconfig file is not used by the compiler. It may be used by analyzers, as may other files, but we have an umbrella documentation for files used by analyzers.
So I think this work item is complete. Please reopen if you have something specific you believe should be added to the docs.
It's an active feature and the design isn't fully closed out.
@jaredpar This issue says that "Compiler does not take all inputs into account for determinism". As far as I know that is not true; it does take all inputs into account. This is not an open design issue, it is a bug report.
If there is another feature that impacts determinism under active development, please open a specific issue against the team doing that development to make sure the team takes determinism into account. As it stands, this issue is too generic and is not actionable.
@agocke I see this item is in the IDE tracking project for .editorconfig -- do we know if this bug is even still meaningful at this point or should I close it out?
@jasonmalinowski This bug is still valid, since I'm not sure I updated determinism to account for editorconfig files, but is not IDE-related.
In discussion about editorconfig today, a number of scenarios were mentioned that we know or suspect are not properly accounted for in determinism:
FYI @jaredpar