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

Investigate prior art for adding types after GA #6098

Closed
markcowl opened this issue Feb 21, 2025 · 1 comment
Closed

Investigate prior art for adding types after GA #6098

markcowl opened this issue Feb 21, 2025 · 1 comment
Assignees
Labels
compiler:core Issues for @typespec/compiler design:needed A design request has been raised that needs a proposal triaged:core
Milestone

Comments

@markcowl
Copy link
Contributor

Because new types may clash with names in user specs or external libraries, examine how other languages handle adding types after 1.0

@markcowl markcowl added 1_0_E2E compiler:core Issues for @typespec/compiler design:needed A design request has been raised that needs a proposal labels Feb 21, 2025
@markcowl markcowl added this to the [2025] April milestone Feb 24, 2025
@markcowl markcowl self-assigned this Feb 25, 2025
@markcowl markcowl modified the milestones: [2025] April, [2025] March Feb 25, 2025
@markcowl
Copy link
Contributor Author

markcowl commented Mar 4, 2025

Overview of C-Sharp and .Net Versioning

.Net and C-Sharp allow breaking changes across their release types, but minimize them. While new language features have been introduced in minor releases, more recent versions tend to treat these features as preview until the next major release., using preview versions or using one of the mechanisms below, through which new features can be marked as volatile or preview in non-preview releases.

Identifying Stable and Volatile APIs

  • Preview Features
  • Experimental Features

Preview Features

Preview Features require a configuration opt-in to all preview features. These are reserved for features that include or require new compiler or runtime features

Experimental Features

Experimental features throw a specific diagnostic when used, each used feature requires a separate suppression - these are normally confined to new types only.

Handling Breaking Changes

  • Both C-Sharp and .Net allow breaking changes in PATCH and Minor releases, and have done so for several reasons
    • Fixes for unintended behavior (bug fixes)
    • Breaks for new reserved words
    • Breaks for new fundamental language features
    • Narrowing allowed syntax for existing features
    • Breaks to enable new (or future) features

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler:core Issues for @typespec/compiler design:needed A design request has been raised that needs a proposal triaged:core
Projects
None yet
Development

No branches or pull requests

1 participant