- In the constraints, e,e′ means pairwise APIs, p,p′ means pairwise parameters of pairwise functions.
- In the grading, we only give the level for breaking changes on public APIs, since breaking changes on private APIs are always 🟡 Low breaking.
Module (2)
AddModule
Add a new module.
- 🟢 Compatible
RemoveModule
Remove an old module.
- 🔴 High
Class (7)
AddClass
Add a new class.
- 🟢 Compatible
RemoveClass
Remove an old class.
- 🔴 High
ChangeInheritance
In this case, the following basic constraint is omitted.
AddBaseClass
Add a class to base classes.
- 🟢 Compatible
RemoveBaseClass
Remove a class from base classes.
- 🔴 High
ImplementAbstractBaseClass
Implement a new (builtin) abstract base class.
- 🟢 Compatible
DeimplementAbstractBaseClass
Deimplement a (builtin) abstract base class.
- 🔴 High
ChangeMethodResolutionOrder
Change method resolution order of a class.
- 🟠 Medium
Function (5)
AddFunction
In this case, the following basic constraint is omitted.
AddFunction
Add a new function, which is not bound to a class/instance.
- 🟢 Compatible
AddMethod
Add a new method, which is bound to a class/instance.
- 🟢 Compatible
RemoveFunction
In this case, the following basic constraint is omitted.
RemoveFunction
Remove an old function, which is not bound to a class/instance.
- 🔴 High
RemoveMethod
Remove an old method, which is bound to a class/instance.
- 🔴 High
ChangeReturnType
Change type of return value for a function.
- 🟠 Medium if return(e′)⊆return(e)
Attribute (5)
AddAttribute
In this case, the following basic constraint is omitted.
AddAttribute
Add a new attribute, which is not bound to an instance.
- 🟢 Compatible
AddInstanceAttribute
Add a new attribute, which is bound to an instance.
- 🟢 Compatible
RemoveAttribute
In this case, the following basic constraint is omitted.
RemoveAttribute
Remove an old attribute, which is not bound to an instance.
- 🔴 High
RemoveInstanceAttribute
Remove an old attribute, which is bound to an instance.
- 🔴 High
ChangeAttributeType
Change type of an attribute.
- 🟠 Medium if type(e′)⊆type(e)
Parameter (17)
AddParameter
In this case, the following basic constraint is omitted.
AddRequiredParameter
Add a new required parameter.
- 🔴 High
AddOptionalParameter
Add a new optional parameter.
- 🟠 Medium if scope(e′)=Static, i.e. the parameter is from an instance method.
AddVarPositional
Add VarPositional parameter.
- 🟢 Compatible
AddVarKeyword
Add VarKeyword parameter.
- 🟢 Compatible
AddRequiredCandidate
Add a new required keyword candidate parameter.
- 🟠 Medium
AddOptionalCandidate
Add a new optional keyword candidate parameter.
- 🟢 Compatible
RemoveParameter
In this case, the following basic constraint is omitted.
RemoveRequiredParameter
Remove a required parameter.
- 🔴 High
RemoveOptionalParameter
Remove an optional parameter.
- 🔴 High
RemoveVarPositional
Remove VarPositional parameter.
- 🔴 High
RemoveVarKeyword
Remove VarKeyword parameter.
- 🔴 High
RemoveRequiredCandidate
Remove a required keyword candidate parameter.
- 🟠 Medium
RemoveOptionalCandidate
Reove an optional keyword candidate parameter.
- 🟠 Medium
ChangeParameter
In this case, the following basic constraint is omitted.
AddParameterDefault
Add default value of a parameter (making it optional).
- 🟠 Medium if scope(e′)=Static, i.e. the parameter is from an instance method.
RemoveParameterDefault
Remove default value of a parameter (making it required).
- 🔴 High
ChangeParameterDefault
Change default value of a parameter.
- 🟠 Medium if scope(e′)=Static, i.e. the parameter is from an instance method.
MoveParameter
Change a positional parameter's position.
- 🔴 High
ChangeParameterType
Change type of a parameter.
- 🟠 Medium if type(p)⊆type(p′)
Alias (6)
In this case, the following basic constraint is omitted.
AddAlias
AddAlias
Add an alias to an API in the package.
- 🟢 Compatible
AddExternalAlias
Add an alias to an API out of the package.
- 🟢 Compatible
RemoveAlias
RemoveAlias
Remove an alias from an API in the package.
- 🔴 High
RemoveExternalAlias
Remove an alias from an API out of the package.
- 🟡 Low
ChangeAlias
ChangeAlias
Change the target in the package of an alias.
- 🟢 Compatible
ChangeExternalAlias
Change the external target of an alias.
- 🟢 Compatible