| OLD | NEW |
| 1 ## 1.23.0 | 1 ## 1.23.0 |
| 2 | 2 |
| 3 ### Language | 3 ### Language |
| 4 * Allow using URI strings in `part of` declarations to refer to the | 4 * Allow using URI strings in `part of` declarations to refer to the |
| 5 importing library. | 5 importing library. |
| 6 | 6 |
| 7 ### Core library changes | 7 ### Core library changes |
| 8 | 8 |
| 9 * `dart:core` | 9 * `dart:core` |
| 10 * Added `Uri.isScheme` function to check the scheme of a URI. | 10 * Added `Uri.isScheme` function to check the scheme of a URI. |
| 11 Example: `uri.isScheme("http")`. Ignores case when comparing. | 11 Example: `uri.isScheme("http")`. Ignores case when comparing. |
| 12 * Make `UriData.parse` validate its input better. | 12 * Make `UriData.parse` validate its input better. |
| 13 If the data is base-64 encoded, the data is normalized wrt. | 13 If the data is base-64 encoded, the data is normalized wrt. |
| 14 alphabet and padding, and it contains invalid base-64 data, | 14 alphabet and padding, and it contains invalid base-64 data, |
| 15 parsing fails. Also normalizes non-base-64 data. | 15 parsing fails. Also normalizes non-base-64 data. |
| 16 * `dart:io` | 16 * `dart:io` |
| 17 * Added functions `File.lastAccessed`, `File.lastAccessedSync`, | 17 * Added functions `File.lastAccessed`, `File.lastAccessedSync`, |
| 18 `File.setLastModified`, `File.setLastModifiedSync`, `File.setLastAccessed`, | 18 `File.setLastModified`, `File.setLastModifiedSync`, `File.setLastAccessed`, |
| 19 and `File.setLastAccessedSync`. | 19 and `File.setLastAccessedSync`. |
| 20 * Added `{Stdin,Stdout}.supportsAnsiEscapes`. | 20 * Added `{Stdin,Stdout}.supportsAnsiEscapes`. |
| 21 | 21 |
| 22 ### Dart VM | 22 ### Dart VM |
| 23 |
| 23 * Calls to `print()` and `Stdout.write*()` now correctly print unicode | 24 * Calls to `print()` and `Stdout.write*()` now correctly print unicode |
| 24 characters to the console on Windows. Calls to `Stdout.add*()` behave as | 25 characters to the console on Windows. Calls to `Stdout.add*()` behave as |
| 25 before. | 26 before. |
| 26 | 27 |
| 27 ### Tool changes | 28 ### Tool changes |
| 28 | 29 |
| 29 * Analysis | 30 * Analysis |
| 30 * `dartanalyzer` now follows the same rules as the analysis server to find | 31 * `dartanalyzer` now follows the same rules as the analysis server to find |
| 31 an analysis options file, stopping when an analysis options file is found: | 32 an analysis options file, stopping when an analysis options file is found: |
| 32 * Search up the directory hierarchy looking for an analysis options file. | 33 * Search up the directory hierarchy looking for an analysis options file. |
| 33 * If analyzing a project referencing the [Flutter](https://flutter.io/) | 34 * If analyzing a project referencing the [Flutter](https://flutter.io/) |
| 34 package, then use the | 35 package, then use the |
| 35 [default Flutter analysis options](https://github.com/flutter/flutter/blob
/master/packages/flutter/lib/analysis_options_user.yaml) | 36 [default Flutter analysis options](https://github.com/flutter/flutter/blob
/master/packages/flutter/lib/analysis_options_user.yaml) |
| 36 found in `package:flutter`. | 37 found in `package:flutter`. |
| 37 * If in a Bazel workspace, then use the analysis options in | 38 * If in a Bazel workspace, then use the analysis options in |
| 38 `package:dart.analysis_options/default.yaml` if it exists. | 39 `package:dart.analysis_options/default.yaml` if it exists. |
| 39 * Use the default analysis options rules. | 40 * Use the default analysis options rules. |
| 40 * In addition, specific to `dartanalyzer`: | 41 * In addition, specific to `dartanalyzer`: |
| 41 * an analysis options file can be specified on the command line via | 42 * an analysis options file can be specified on the command line via |
| 42 `--options` and that file will be used instead of searching for an | 43 `--options` and that file will be used instead of searching for an |
| 43 analysis options file. | 44 analysis options file. |
| 44 * any analysis option specified on the command line | 45 * any analysis option specified on the command line |
| 45 (e.g. `--strong` or `--no-strong`) takes precedence over any corresponding | 46 (e.g. `--strong` or `--no-strong`) takes precedence over any corresponding |
| 46 value specified in the analysis options file. | 47 value specified in the analysis options file. |
| 47 | 48 |
| 48 * Dartium, dart2js, and DDC | 49 * Dartium, dart2js, and DDC |
| 49 | 50 |
| 50 * Imports to `dart:io` are allowed, but the imported library is not supported | 51 * Imports to `dart:io` are allowed, but the imported library is not supported |
| 51 and will likely fail on most APIs at runtime. This change was made as a | 52 and will likely fail on most APIs at runtime. This change was made as a |
| (...skipping 11 matching lines...) Expand all Loading... |
| 63 * No longer produces "UID too large" errors on OS X. All packages are now | 64 * No longer produces "UID too large" errors on OS X. All packages are now |
| 64 uploaded with the user and group names set to "pub". | 65 uploaded with the user and group names set to "pub". |
| 65 * No longer fails with a stack overflow when uploading a package that uses | 66 * No longer fails with a stack overflow when uploading a package that uses |
| 66 Git submodules. | 67 Git submodules. |
| 67 * `pub get` and `pub upgrade` | 68 * `pub get` and `pub upgrade` |
| 68 * Produce more informative error messages if they're run directly in a | 69 * Produce more informative error messages if they're run directly in a |
| 69 package that uses Flutter. | 70 package that uses Flutter. |
| 70 * Properly unlock SDK and path dependencies if they have a new version | 71 * Properly unlock SDK and path dependencies if they have a new version |
| 71 that's also valid according to the user's pubspec. | 72 that's also valid according to the user's pubspec. |
| 72 | 73 |
| 74 * dartfmt |
| 75 * Make the precedence of cascades more visible. |
| 76 * Fix a couple of places where spurious newlines were inserted. |
| 77 * Correctly report unchanged formatting when reading from stdin. |
| 78 * Other small formatting tweaks. |
| 79 |
| 73 ## 1.22.0 | 80 ## 1.22.0 |
| 74 | 81 |
| 75 ### Language | 82 ### Language |
| 76 | 83 |
| 77 * Breaking change: | 84 * Breaking change: |
| 78 ['Generalized tear-offs'](https://github.com/gbracha/generalizedTearOffs/blo
b/master/proposal.md) | 85 ['Generalized tear-offs'](https://github.com/gbracha/generalizedTearOffs/blo
b/master/proposal.md) |
| 79 are no longer supported, and will cause errors. We updated the language spec | 86 are no longer supported, and will cause errors. We updated the language spec |
| 80 and added warnings in 1.21, and are now taking the last step to fully | 87 and added warnings in 1.21, and are now taking the last step to fully |
| 81 de-support them. They were previously only supported in the VM, and there | 88 de-support them. They were previously only supported in the VM, and there |
| 82 are almost no known uses of them in the wild. | 89 are almost no known uses of them in the wild. |
| 83 | 90 |
| 84 * The `assert()` statement has been expanded to support an optional second | 91 * The `assert()` statement has been expanded to support an optional second |
| 85 `message` argument | 92 `message` argument |
| 86 (SDK issue [27342](https://github.com/dart-lang/sdk/issues/27342)). | 93 (SDK issue [27342](https://github.com/dart-lang/sdk/issues/27342)). |
| 87 | 94 |
| 88 The message is displayed if the assert fails. It can be any object, and it | 95 The message is displayed if the assert fails. It can be any object, and it |
| 89 is accessible as `AssertionError.message`. It can be used to provide more | 96 is accessible as `AssertionError.message`. It can be used to provide more |
| 90 user friendly exception outputs. As an example, the following assert: | 97 user friendly exception outputs. As an example, the following assert: |
| 91 | 98 |
| 92 ```dart | 99 ```dart |
| 93 assert(configFile != null, "Tool config missing. Please see https://goo.gl/k
8iAi for details."); | 100 assert(configFile != null, "Tool config missing. Please see https://goo.gl/k
8iAi for details."); |
| 94 ``` | 101 ``` |
| 95 | 102 |
| (...skipping 1641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1737 they will keep the Dart process alive until they time out. This fixes the | 1744 they will keep the Dart process alive until they time out. This fixes the |
| 1738 handling of persistent connections. Previously, the client would shut down | 1745 handling of persistent connections. Previously, the client would shut down |
| 1739 immediately after a request. | 1746 immediately after a request. |
| 1740 | 1747 |
| 1741 * **Breaking change:** `HttpServer` no longer compresses all traffic by | 1748 * **Breaking change:** `HttpServer` no longer compresses all traffic by |
| 1742 default. The new `autoCompress` property can be set to `true` to re-enable | 1749 default. The new `autoCompress` property can be set to `true` to re-enable |
| 1743 compression. | 1750 compression. |
| 1744 | 1751 |
| 1745 * `dart:isolate`: `Isolate.spawnUri` added the optional `packageRoot` argument, | 1752 * `dart:isolate`: `Isolate.spawnUri` added the optional `packageRoot` argument, |
| 1746 which controls how it resolves `package:` URIs. | 1753 which controls how it resolves `package:` URIs. |
| OLD | NEW |