| OLD | NEW |
| 1 ## 1.13.0 | 1 ## 1.13.0 |
| 2 | 2 |
| 3 * `dart:core` | 3 * `dart:core` |
| 4 * `Uri` added `removeFragment` method. | 4 * `Uri` added `removeFragment` method. |
| 5 * `String.allMatches` (implementing `Pattern.allMatches`) is now lazy, | 5 * `String.allMatches` (implementing `Pattern.allMatches`) is now lazy, |
| 6 as all `allMatches` implementations are intended to be. | 6 as all `allMatches` implementations are intended to be. |
| 7 | 7 |
| 8 * `dart:io` | 8 * `dart:io` |
| 9 * `HttpClient` no longer sends URI fragments in the requeust. This is not | 9 * `HttpClient` no longer sends URI fragments in the requeust. This is not |
| 10 allowed by the HTTP protocol. | 10 allowed by the HTTP protocol. |
| 11 The `HttpServer` still gracefully receives fragments, but discards them | 11 The `HttpServer` still gracefully receives fragments, but discards them |
| 12 before delivering the request. | 12 before delivering the request. |
| 13 | 13 |
| 14 * `dart:collection` |
| 15 * Added static `ensure()` methods to `UnmodifiableListView` and |
| 16 `UnmodifiableMapView`, which avoid re-wrapping lists and maps that are |
| 17 already unmodifiable. |
| 18 |
| 14 ## 1.12.0 | 19 ## 1.12.0 |
| 15 | 20 |
| 16 ### Language changes | 21 ### Language changes |
| 17 | 22 |
| 18 * Null-aware operators | 23 * Null-aware operators |
| 19 * `??`: if null operator. `expr1 ?? expr2` evaluates to `expr1` if not `null
`, otherwise `expr2`. | 24 * `??`: if null operator. `expr1 ?? expr2` evaluates to `expr1` if not `null
`, otherwise `expr2`. |
| 20 * `??=`: null-aware assignment. `v ??= expr` causes `v` to be assigned `expr
` only if `v` is `null`. | 25 * `??=`: null-aware assignment. `v ??= expr` causes `v` to be assigned `expr
` only if `v` is `null`. |
| 21 * `x?.p`: null-aware access. `x?.p` evaluates to `x.p` if `x` is not `null`,
otherwise evaluates to `null`. | 26 * `x?.p`: null-aware access. `x?.p` evaluates to `x.p` if `x` is not `null`,
otherwise evaluates to `null`. |
| 22 * `x?.m()`: null-aware method invocation. `x?.m()` invokes `m` only if `x` i
s not `null`. | 27 * `x?.m()`: null-aware method invocation. `x?.m()` invokes `m` only if `x` i
s not `null`. |
| 23 | 28 |
| (...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 534 they will keep the Dart process alive until they time out. This fixes the | 539 they will keep the Dart process alive until they time out. This fixes the |
| 535 handling of persistent connections. Previously, the client would shut down | 540 handling of persistent connections. Previously, the client would shut down |
| 536 immediately after a request. | 541 immediately after a request. |
| 537 | 542 |
| 538 * **Breaking change:** `HttpServer` no longer compresses all traffic by | 543 * **Breaking change:** `HttpServer` no longer compresses all traffic by |
| 539 default. The new `autoCompress` property can be set to `true` to re-enable | 544 default. The new `autoCompress` property can be set to `true` to re-enable |
| 540 compression. | 545 compression. |
| 541 | 546 |
| 542 * `dart:isolate`: `Isolate.spawnUri` added the optional `packageRoot` argument, | 547 * `dart:isolate`: `Isolate.spawnUri` added the optional `packageRoot` argument, |
| 543 which controls how it resolves `package:` URIs. | 548 which controls how it resolves `package:` URIs. |
| OLD | NEW |