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

Main branch net10.0 transition status tracking #42920

Open
marcpopMSFT opened this issue Aug 21, 2024 · 11 comments
Open

Main branch net10.0 transition status tracking #42920

marcpopMSFT opened this issue Aug 21, 2024 · 11 comments
Assignees
Labels
Area-Infrastructure untriaged Request triage from a team member

Comments

@marcpopMSFT
Copy link
Member

marcpopMSFT commented Aug 21, 2024

Current state

  • main branch
    • open
    • Runtime flows have been merged
    • Watch scenarios/tests are still impacted
  • 9.0.1xx
    • In approval mode. All non-infra changes must go through tactics and get approval.
    • High risk or breaking changes should wait for main.
  • 9.0.2xx
    • Open for all feature work

main branch has been rebranded to 10.0.100-alpha and now has the 10.0 version of all runtimes
Some watch tests and template tests have been temporarily disabled.
.NET SDK is now targeting net10.0 as the TFM. All templates have been updated as well.

Process
https://github.com/dotnet/sdk/blob/main/documentation/general/UpdateToNewTargetFramework.md

  • Update branding (complete)
  • Add net10 framework references (complete)
  • Flow net10 runtimes
  • Update global.json
  • Retarget the sdk to net10.0
  • Retarget default templates to target net10.0
  • Unwind any changes made during the transition (as tracked below) <-- we are here

The history of changes we've made so far:

@dotnet-issue-labeler dotnet-issue-labeler bot added Area-Infrastructure untriaged Request triage from a team member labels Aug 21, 2024
@marcpopMSFT marcpopMSFT self-assigned this Aug 21, 2024
@marcpopMSFT marcpopMSFT changed the title Tracking issue for unwinding changes made during net10 transition Main branch net10.0 transition status tracking Sep 12, 2024
@marcpopMSFT marcpopMSFT pinned this issue Sep 12, 2024
@WeihanLi
Copy link
Contributor

Have a question about the target framework, currently, the SDK supports net8, would the SDK drop the support? Since net10 may conflict between net10.0 and netfx 1.0

@huoyaoyuan
Copy link
Member

Since net10 may conflict between net10.0 and netfx 1.0

I think we will keep compatibility and force the usage of net10.0 instead of net10. This was mentioned in the initial TFM design:
https://github.com/dotnet/designs/blob/main/accepted/2020/net5/net5.md#what-about-net-10

@mmitche
Copy link
Member

mmitche commented Oct 7, 2024

Suggestions and learnings from the process of getting the net10 runtimes into the SDK:

  • Reduce the number of forcing functions in the updates. We want to be able to upgrade parts of the stack without doing the whole. The best example of this is that when runtime switches to target net10, it stops producing net9 assets for some key packages. These include the internal runtime shared framework transport packages (Microsoft.Internal.AspNetCore). When those flow into the VMR or downstream to aspnetcore, they force aspnetcore to upgrade its TFM. This means that we have to combine all the shared frameworks in the same SDK PR, and can't work incrementally.
  • When repos move to a new TFM, they should not immediately remove support for the old TFM for any packages that normally single target until all downstream consumers who don't use KnownFrameworkRef (e.g. SDK) and/or can't move forward their TFM. For instance, aspnetcore single targets some OOB packages. These should temporarily multi-target until downstream projects can retarget to the new TFM. This would ease flow into the SDK, then allow the SDK to support a new TFM. At that point, the multi-targeted packages can move to single-targeting the new TFM.
  • Add functionality to arcade to target frameworks yet unsupported by the SDK - KnownFrameworkReference is commonly used in some repos, but not in all. This should be standard functionality available from arcade for use by repos above runtime. It should cover more than just the framework ref. It should cover crossgen, ilc, etc. etc.
  • Temporarily reorder the build graph if need be - Source build may need to temporarily need to reorder the build graph so that tooling repos can continue to target the previous TFM. This might show up as roslyn failing to run the syntax source generator. I think this is typically becuase the source generator will be moved to target net10 automatically, but the SDK that is running will only support net9.

@mmitche
Copy link
Member

mmitche commented Oct 7, 2024

dotnet/arcade#15121

@anvillan anvillan unpinned this issue Oct 10, 2024
@agocke
Copy link
Member

agocke commented Oct 16, 2024

The best example of this is that when runtime switches to target net10, it stops producing net9 assets for some key packages

Let's go farther. I don't want runtime to move first anymore. Up stack needs to go first. But runtime needs to do a lot of stuff, so upstack needs to take it as a high priority to start work immediately once we snap.

@mmitche
Copy link
Member

mmitche commented Oct 16, 2024

@agocke I don't think upstack can go first, because without the net10 shared frameworks available, upstack can't move to net10.

@agocke
Copy link
Member

agocke commented Oct 16, 2024

What's the minimum that's needed from runtime? Can we move only that?

@mmitche
Copy link
Member

mmitche commented Oct 17, 2024

Need shared frameworks and OOBs to support the netN+1 TFM.

I think it really comes down to runtime needing to support the new TFM across all assets that are consumed by downstream shared framework/sdk repos without removing support for the old TFM for any OOBs/transport packages until downstream has moved. This is normally the case for OOBs, but some transport packages swap N for N+1.

@akoeplinger
Copy link
Member

Wouldn't most of this stop being a problem once we can make the changes across repos in the VMR in a single PR?

@mmitche
Copy link
Member

mmitche commented Oct 17, 2024

Wouldn't most of this stop being a problem once we can make the changes across repos in the VMR in a single PR?

Maybe. It's probably more efficient to make those changes all at once. But the amount of work (code changes) probably doesn't change in a material way. It may be still easier to work incrementally than trying to do the update in one mega PR.

@akoeplinger
Copy link
Member

It may be still easier to work incrementally than trying to do the update in one mega PR.

I kinda doubt it, the biggest issue is getting the product into a consistent state and that is much easier in a single PR. But we'll see 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-Infrastructure untriaged Request triage from a team member
Projects
None yet
Development

No branches or pull requests

6 participants