Skip to content

Remove memory-safety LangVersion=preview overrides when C# 16 is the default #13085

Open

Description

@simonrozsival

Android framework version

Other — repository build configuration; not a customer application framework issue.

Affected platform version

The repository SDK/compiler once C# 16 is the default language version. The memory-safety migration currently uses SDK 12.0.100-alpha.1.26480.102 with project-local LangVersion=preview overrides.

Description

Track removal of the temporary <LangVersion>preview</LangVersion> overrides introduced for the updated C# memory-safety model once C# 16 is the repository's default and the migrated code no longer requires preview language features.

Requested by @jonathanpeppers in this review comment. Related migrations: #13070 and #13078.

Current overrides to revisit:

  • external/Java.Interop/src/Java.Interop/Java.Interop.csproj
  • src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.csproj
  • src/Microsoft.Android.Build.Tasks/Microsoft.Android.Build.Tasks.csproj
  • tools/tmt/tmt.csproj

When the prerequisite is met, audit any additional overrides introduced by subsequent memory-safety migrations, remove those no longer needed, and inherit the repository's normal language-version policy. Do not replace them with another permanent project-local language-version pin.

Completion criteria:

  • The repository compiler's normal language-version policy selects C# 16 or later, and the migrated syntax is supported without preview.
  • All applicable temporary overrides are removed while unrelated compiler feature switches remain intact. Reassess updated-memory-safety-rules separately; removing LangVersion=preview must not accidentally disable the memory-safety model.
  • Affected projects and relevant existing tests pass, and safe-caller rejection of caller-unsafe APIs is preserved.

Steps to Reproduce

Inspect the project-local LangVersion=preview declarations added by the linked migrations. They are intentional today; this issue tracks their cleanup after C# 16 becomes the default.

Did you find any workaround?

Keep the preview overrides until the prerequisite is satisfied.

Relevant log output

N/A — future build-configuration cleanup, not a current build failure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageIssues that need to be assigned.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions