KEMBAR78
Roll forward by vitek-karas · Pull Request #5691 · dotnet/core-setup · GitHub
Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Conversation

@vitek-karas
Copy link
Member

@vitek-karas vitek-karas commented Apr 5, 2019

This is the new implementation of the framework resolution with the new roll forward setting.
The spec for this is framework version resolution.

Major parts:

  • introduce rollForward setting (CLI, env, config)
  • convert the existing rollForwardOnNoCandidateFx to the new rollForward internally
  • change framework reference compatibility algorithm to use the new rollFoward settings.
  • basically rewrite the framework resolution algorithm with the new settings and fix an existing bug with incorrect retry logic
  • add test infra for the new setting
  • add tests for the new setting

Still work in progress:

  • implement the DOTNET_ROLL_FORWARD_TO_PRERELEASE
  • tests for the DOTNET_ROLL_FORWARD_TO_PRERELEASE
  • Document the problem in the retry logic and how it was fixed
  • Document all changes from previous release (and any potentially breaking changes)

@vitek-karas vitek-karas added this to the 3.0 milestone Apr 5, 2019
@vitek-karas vitek-karas self-assigned this Apr 5, 2019
@vitek-karas
Copy link
Member Author

@elinor-fung, @sdmaclea please start on the review. I expect it will take a while as this is a rather large change. The missing TODOs should not cause any major code churn anymore.

@vitek-karas vitek-karas force-pushed the RollForward branch 3 times, most recently from a1bb2ad to 885704b Compare April 11, 2019 10:22
@vitek-karas vitek-karas marked this pull request as ready for review April 11, 2019 10:47
@vitek-karas vitek-karas changed the title [WIP] Roll forward Roll forward Apr 11, 2019
@vitek-karas vitek-karas reopened this Apr 11, 2019
vitek-karas and others added 23 commits April 19, 2019 13:09
Introduce runtime config settings which store the two optional field still needed and use that instead of a dummy framework reference where applicable.
Co-Authored-By: vitek-karas <vitek.karas@microsoft.com>
Co-Authored-By: vitek-karas <vitek.karas@microsoft.com>
…ltipleFrameworks.cs

Co-Authored-By: vitek-karas <vitek.karas@microsoft.com>
Some infra changes to simplify writing tests.
Use fluent assertion in the test cases themselves (as oppose to magical helper functions).
Better formatting of inline data with headers.
Description of each test what it does.
General cleanup (unify everything on the TestSettings).
Add some more tests where coverage was missing.
Change the soft-roll-forward to "reconcile framework references". The helper functions are now without side effects and simply return the new effective framework reference.

Move the state mutating code to the caller, which makes it much easier to follow the algorithm.

Some other small renames - basically getting rid of "Soft roll forward" and "Hard roll forward" terms.

Updating the algorithm in the doc with the new terminology.

No functional changes.
If LatestMinor and Major references are merged, previously the effective reference would be LatestMinor. Bu that goes against the Major semantics of "pick closest".
This change is modifying the outcome of that merge to Minor. This produces the more restrictive version selection (lower versions are prefered).

This behavior is still being discussed in dotnet/core-setup#5870 and may change.

Added tests for merging roll forward settings.
@vitek-karas
Copy link
Member Author

The command line needs to be document in CLI - see dotnet/cli#11213

@vitek-karas vitek-karas merged commit ef496a0 into dotnet:master Apr 19, 2019
@vitek-karas vitek-karas deleted the RollForward branch April 19, 2019 21:36
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
This is the new implementation of the framework resolution with the new roll forward setting.
The spec for this is [framework version resolution](https://github.com/dotnet/core-setup/blob/master/Documentation/design-docs/framework-version-resolution.md).

Major parts:
- introduce `rollForward` setting (CLI, env, config)
- convert the existing `rollForwardOnNoCandidateFx` to the new `rollForward` internally
- change framework reference compatibility algorithm to use the new `rollFoward` settings.
- basically rewrite the framework resolution algorithm with the new settings and fix an existing bug with incorrect retry logic
- add test infra for the new setting
- add tests for the new setting

Commit migrated from dotnet/core-setup@ef496a0
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants