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

Provide stronger symbolic stability guarantees #432

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 11 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,23 +48,18 @@ for definition of maturity levels).
Components marked `Stable` provide the following guarantees:

- Field types, numbers and names will not change.
carlosalberto marked this conversation as resolved.
Show resolved Hide resolved
- Numbers assigned to enum choices will not change.
- Service names and service package names will not change.
- Service operation names, parameter and return types will not change.

The following changes are allowed:

- Message names may change.
- Enum names may change.
- Enum choice names may change. This is allowed because enum choice names are not sent on
the wire.
- The location of messages and enums, i.e. whether they are declared at the top
lexical scope or nested inside another message may change.
- Package names may change.
- Directory structure, location and the name of the files may change.

Note that none of the above allowed changes affects the binary wire representation or the
JSON wire representation.
- Service method names will not change.
- Service method parameter names will not change.
jack-berg marked this conversation as resolved.
Show resolved Hide resolved
- Service method parameter types and return types will not change.
- Service method kind (unary vs streaming) will not change.
- Names of messages and enums will not change.
carlosalberto marked this conversation as resolved.
Show resolved Hide resolved
- Names of enum choices and numbers assigned to enum choices will not change.
carlosalberto marked this conversation as resolved.
Show resolved Hide resolved
- The location of messages and enums, i.e. whether they are declared at the top lexical
carlosalberto marked this conversation as resolved.
Show resolved Hide resolved
scope or nested inside another message will not change.
- Package names and directory structure will not change.
carlosalberto marked this conversation as resolved.
Show resolved Hide resolved
- `optional` and `repeated` declarators of existing fields will not change.
carlosalberto marked this conversation as resolved.
Show resolved Hide resolved
- No existing symbol will be deleted.

The following additive changes are allowed:

Expand Down