Flutter Engine
The Flutter Engine
|
The present document describes the Dart SDK philosophy for compatibility, and process for breaking changes.
For a list of past breaking changes, see the dart.dev breaking changes page.
Generally the Dart team strives to not make breaking changes, and to preserve compatibility of all Dart programs across stable Dart SDK releases. However, on occasion, we believe that breaking changes are needed, or justified:
It is not practical to offer compatability to programs that do not follow best practices. Thus, the breaking change process assumes that programs abide by the following basic conditions:
/src/
directory).Compatibility is only considered between stable releases (i.e. releases from the Dart stable channel).
To avoid shipping features that have not been thoroughly vetted, we implement a policy of not including breaking changes in the final beta before a release. Breaking changes must be included in the beta before the final beta to be considered for the next stable release.
Anyone wishing to make a breaking change to Dart is expected to perform the following steps. It is expected that all of these steps are followed prior to a change being released in a dev channel release.
breaking-change-request
containing the following:announce@dartlang.org
):Once you have sent the announce email, please let kevinjchisholm@ know in order to start the review and approval process.
If there is a general agreement that the benefit of the change outweighs the cost of the change, a set of Dart SDK approvers will approve the change. Adequate time must be allowed after step 1, at a minimum 24 hours during the work week for smaller impact changes, and proportionally longer for higher impact changes.
If approved, the breaking change is allowed to be made after ensuring the google3
and flutter
repositories ("downstream") are not broken.
The person making the change is expected to:
google3
: Follow the instructions at go/dart-breaking-change.flutter
: Add flutter-
presubmits to your change to detect breakages.After breakages are fixed, the approved change may be landed.
To land the change despite remaining breakages, request explicit approval for these breakages in the breaking change issue. After these approvals are granted, the change may be landed.
After the breaking change has been made, the person who made the change must:
**Breaking Change**
.If not approved, or if the requester decides to not pursue the change, the requester must:
If a developer notices a breaking change has been made in the dev or stable channels, and this change impacts a program that abides to the above defined scope of compatibility, and for which either:
Then they may file a 'request for roll-back' using the following steps:
roll-back-request
containing the following:
Upon receiving such an issue the Dart SDK team will either:
If a breaking change is rolled-back, in addition:
If a roll-back occurs after what should have been a breaking change, the originator of the change is expected to follow the breaking change process to move forward.
If a roll-back occurs after a breaking change, but where the impact was larger than anticipated, then the impacted party is expected to make a best effort to quickly rectify their program to either not be affected by the breaking change, or in some other way offer the originator a clear timeline for when the breaking change can be landed.