From f2bd1e96410db97a6f61288df377ffafa5f121bb Mon Sep 17 00:00:00 2001 From: Alexander Thomas Date: Thu, 14 Jul 2022 14:13:28 +0000 Subject: [PATCH] [release] Move CHANGELOG entries to 2.18 Change-Id: I35d887541c8de985b55daed7c732c0d8302d278a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/251542 Reviewed-by: Johnni Winther Reviewed-by: Alexander Markov Reviewed-by: Lasse Nielsen --- CHANGELOG.md | 107 ++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 56 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b8f7c1bcc2..55f8cdd503c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,71 +1,15 @@ ## 2.19.0 -#### Dart command line - -- **Breaking change** [#46100](https://github.com/dart-lang/sdk/issues/46100): - The standalone `dartanalyzer` tool has been removed as previously - announced. `dartanalyzer` is replaced by the `dart analyze` command. - ### Language -- **Breaking Change** [#48167](https://github.com/dart-lang/sdk/issues/48167): - Mixin of classes that don't extend `Object` is no longer supported: - ```dart - class Base {} - class Mixin extends Base {} - class C extends Base with Mixin {} - ``` - This should instead be written using a mixin declaration of `Mixin`: - ```dart - class Base {} - mixin Mixin on Base {} - class C extends Base with Mixin {} - ``` - This feature has not been supported in most compilation targets for some - time but is now completely removed. - ### Libraries -#### `dart:async` - -- The `Stream.fromIterable` stream can now be listened to more than once. - -### `dart:collection` - -- Deprecates `BidirectionalIterator`. - ### `dart:developer` - Deprecates `UserTag.MAX_USER_TAGS` in favor of `UserTag.maxUserTags`. -### Dart VM - -Implementation of `async`/`async*`/`sync*` is revamped in Dart VM, -both in JIT and AOT modes. This also affects Flutter except Flutter Web. - -Besides smaller code size and better performance of async methods, -the new implementation carries a few subtle changes in behavior: - -- If `async` method returns before reaching the first `await`, it now returns a completed Future. - Previously `async` methods completed resulting Future in separate microtasks. - -- Stack traces no longer have duplicate entries for `async` methods. - -- New implementation now correctly throws an error if `null` occurs as - an argument of a logical expression (`&&` and `||`) which also contains - an `await`. - -- New implementation avoids unnecessary extending the liveness of local - variables in `async`/`async*`/`sync*` methods, which means that unused - objects stored in local variables in such methods might be garbage - collected earlier than they were before - (see issue [#36983](https://github.com/dart-lang/sdk/issues/36983) for details). - - ### Tools -#### Dart command line - #### Linter Updated the Linter to `1.26.0`, which includes changes that @@ -131,8 +75,32 @@ them, you must set the lower bound on the SDK constraint for your package to } ``` +- **Breaking Change** [#48167](https://github.com/dart-lang/sdk/issues/48167): + Mixin of classes that don't extend `Object` is no longer supported: + ```dart + class Base {} + class Mixin extends Base {} + class C extends Base with Mixin {} + ``` + This should instead be written using a mixin declaration of `Mixin`: + ```dart + class Base {} + mixin Mixin on Base {} + class C extends Base with Mixin {} + ``` + This feature has not been supported in most compilation targets for some + time but is now completely removed. + ### Core libraries +#### `dart:async` + +- The `Stream.fromIterable` stream can now be listened to more than once. + +### `dart:collection` + +- Deprecates `BidirectionalIterator`. + #### `dart:html` - Add `connectionState` attribute and `connectionstatechange` listener to @@ -202,6 +170,29 @@ them, you must set the lower bound on the SDK constraint for your package to - Allow omitting the `unencodedPath` positional argument to `Uri.http` and `Uri.https` to default to an empty path. +### Dart VM + +Implementation of `async`/`async*`/`sync*` is revamped in Dart VM, +both in JIT and AOT modes. This also affects Flutter except Flutter Web. + +Besides smaller code size and better performance of async methods, +the new implementation carries a few subtle changes in behavior: + +- If `async` method returns before reaching the first `await`, it now returns a completed Future. + Previously `async` methods completed resulting Future in separate microtasks. + +- Stack traces no longer have duplicate entries for `async` methods. + +- New implementation now correctly throws an error if `null` occurs as + an argument of a logical expression (`&&` and `||`) which also contains + an `await`. + +- New implementation avoids unnecessary extending the liveness of local + variables in `async`/`async*`/`sync*` methods, which means that unused + objects stored in local variables in such methods might be garbage + collected earlier than they were before + (see issue [#36983](https://github.com/dart-lang/sdk/issues/36983) for details). + ### Tools #### Dart command line @@ -211,6 +202,10 @@ them, you must set the lower bound on the SDK constraint for your package to announced. `dart2js` is replaced by the `dart compile js` command, `dartdevc` is no longer exposed as a command-line tool. +- **Breaking change** [#46100](https://github.com/dart-lang/sdk/issues/46100): + The standalone `dartanalyzer` tool has been removed as previously + announced. `dartanalyzer` is replaced by the `dart analyze` command. + #### Linter Updated the Linter to `1.25.0`, which includes changes that