Update CHANGELOG.md for Dart 2.4.0 stable

Closes #37239
https://github.com/dart-lang/sdk/pull/37239

GitOrigin-RevId: 534651bc9dcf23672d829b92b07f985a3ccd529d
Change-Id: I7d53f304ebbb73ac09d3cb0157ffc2aa4e66471e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105727
Commit-Queue: Aadil Maan <aadilmaan@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 448c196..b9554f5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,4 @@
-## 2.3.3-dev.0.0
+## 2.4.0 - 2019-06-24
 
 ### Core libraries
 
@@ -7,34 +7,15 @@
 * `TransferableTypedData` class was added to facilitate faster cross-isolate
 communication of `Uint8List` data.
 
-#### Linter
+* **Breaking change**: `Isolate.resolvePackageUri` will always throw an
+  `UnsupportedError` when compiled with dart2js or DDC. This was the only
+  remaining API in `dart:isolate` that didn't automatically throw since we
+  dropped support for this library in [Dart 2.0.0][1]. Note that the API already
+  throws in dart2js if the API is used directly without manually setting up a
+  `defaultPackagesBase` hook.
 
-The Linter was updated to `0.1.91`, which includes the following changes:
+[1]: https://github.com/dart-lang/sdk/blob/master/CHANGELOG.md#200---2018-08-07
 
-* fixed missed cases in `prefer_const_constructors`
-* fixed `prefer_initializing_formals` to no longer suggest API breaking changes
-* updated `omit_local_variable_types` to allow explicit `dynamic`s
-* (internal) migration from deprecated analyzer APIs
-
-## 2.3.2-dev.0.1
-
-### Language
-
-*   **Breaking change:** Covariance of type variables used in super-interfaces
-    is now enforced (issue [35097][]).  For example, the following code was
-    previously accepted and will now be rejected:
-
-```dart
-class A<X> {};
-class B<X> extends A<void Function(X)> {};
-```
-
-* The identifier `async` can now be used in asynchronous and generator
-  functions.
-
-[35097]: https://github.com/dart-lang/sdk/issues/35097
-
-### Core libraries
 
 #### `dart:developer`
 * Exposed `result`, `errorCode` and `errorDetail` getters in
@@ -64,55 +45,10 @@
     interface, this is a breaking change, as implementing classes will need to
     implement the new getter.
 
-#### `dart:isolate`
-
-* **Breaking change**: `Isolate.resolvePackageUri` will always throw an
-  `UnsupportedError` when compiled with dart2js or DDC. This was the only
-  remaining API in `dart:isolate` that didn't automatically throw since we
-  dropped support for this library in [Dart 2.0.0][1]. Note that the API already
-  throws in dart2js if the API is used directly without setting up manually a
-  `defaultPackagesBase` hook.
-
-[1]: https://github.com/dart-lang/sdk/blob/master/CHANGELOG.md#200---2018-08-07
-
-### Dart VM
-
-### Tools
-
-#### Linter
-
-The Linter was updated to `0.1.90`, which includes the following changes:
-
-* fixed null-reference in `unrelated_type_equality_checks`
-* new lint: `unsafe_html`
-
-#### Pub
-
-* `pub publish` will no longer warn about missing dependencies for import
-   statements in `example/`.
-* OAuth2 authentication will explicitely ask for the `openid` scope.
-
-## 2.3.2-dev.0.0
-
-### Tools
-
-#### Linter
-
-Updated the linter to `0.1.89`, which includes the following changes:
-
-* Broadened `prefer_null_aware_operators` to work beyond local variables.
-* Added `prefer_if_null_operators`.
-* Fixed `prefer_contains` false positives.
-* Fixed `unnecessary_parenthesis` false positives.
-
-## 2.3.1-dev.0.0
-
-### Core libraries
-
 #### `dart:async`
-* **Breaking change:**
-  Fixed bug in `StreamIterator` that allowed constructor argument to be `null`
-  and allowed `await for` on a `null` stream. This is now a runtime error.
+
+* **Breaking change:** The `await for` allowed `null` as a stream due to a bug
+  in `StreamIterator` class. This bug has now been fixed.
 
 #### `dart:core`
 
@@ -137,10 +73,49 @@
   This change only affects implementers of the `RegExp` interface; current
   code using Dart regular expressions will not be affected.
 
-#### `dart:isolate`
+### Language
 
-* **Breaking change:** The `await for` allowed `null` as a stream due to a bug
-  in `StreamIterator` class. This bug has now been fixed.
+*   **Breaking change:** Covariance of type variables used in super-interfaces
+    is now enforced (issue [35097][]).  For example, the following code was
+    previously accepted and will now be rejected:
+
+```dart
+class A<X> {};
+class B<X> extends A<void Function(X)> {};
+```
+
+* The identifier `async` can now be used in asynchronous and generator
+  functions.
+
+[35097]: https://github.com/dart-lang/sdk/issues/35097
+
+### Tools
+
+#### Linter
+
+The Linter was updated to `0.1.91`, which includes the following changes:
+
+* Fixed missed cases in `prefer_const_constructors`
+* Fixed `prefer_initializing_formals` to no longer suggest API breaking changes
+* Updated `omit_local_variable_types` to allow explicit `dynamic`s
+* Fixed null-reference in `unrelated_type_equality_checks`
+* New lint: `unsafe_html`
+* Broadened `prefer_null_aware_operators` to work beyond local variables.
+* Added `prefer_if_null_operators`.
+* Fixed `prefer_contains` false positives.
+* Fixed `unnecessary_parenthesis` false positives.
+* New lint: `prefer_double_quotes`
+* Fixed `prefer_asserts_in_initializer_lists` false positives
+* Fixed `curly_braces_in_flow_control_structures` to handle more cases
+* New lint: `prefer_double_quotes`
+* New lint: `sort_child_properties_last`
+* Fixed `type_annotate_public_apis` false positive for `static const` initializers
+
+#### Pub
+
+* `pub publish` will no longer warn about missing dependencies for import
+   statements in `example/`.
+* OAuth2 authentication will explicitely ask for the `openid` scope.
 
 ## 2.3.2 - 2019-06-11