OLD | NEW |
1 ## 1.19.0 | 1 ## 1.19.0 |
2 | 2 |
3 ### Language changes | 3 ### Language changes |
4 | 4 |
5 * The language now allows a trailing comma after the last argument of a call and | 5 * The language now allows a trailing comma after the last argument of a call and |
6 the last parameter of a function declaration. This can make long argument or | 6 the last parameter of a function declaration. This can make long argument or |
7 parameter lists easier to maintain, as commas can be left as-is when | 7 parameter lists easier to maintain, as commas can be left as-is when |
8 reordering lines. For details, see SDK issue | 8 reordering lines. For details, see SDK issue |
9 [26644](https://github.com/dart-lang/sdk/issues/26644). | 9 [26644](https://github.com/dart-lang/sdk/issues/26644). |
10 | 10 |
(...skipping 12 matching lines...) Expand all Loading... |
23 see the [documentation](https://github.com/dart-lang/dev_compiler/blob/maste
r/doc/STATIC_SAFETY.md#disable-implicit-casts) | 23 see the [documentation](https://github.com/dart-lang/dev_compiler/blob/maste
r/doc/STATIC_SAFETY.md#disable-implicit-casts) |
24 for usage instructions and examples. | 24 for usage instructions and examples. |
25 | 25 |
26 * New feature - an option to disable implicit dynamic | 26 * New feature - an option to disable implicit dynamic |
27 (SDK issue [25573](https://github.com/dart-lang/sdk/issues/25573)), | 27 (SDK issue [25573](https://github.com/dart-lang/sdk/issues/25573)), |
28 see the [documentation](https://github.com/dart-lang/dev_compiler/blob/maste
r/doc/STATIC_SAFETY.md#disable-implicit-dynamic) | 28 see the [documentation](https://github.com/dart-lang/dev_compiler/blob/maste
r/doc/STATIC_SAFETY.md#disable-implicit-dynamic) |
29 for usage instructions and examples. | 29 for usage instructions and examples. |
30 | 30 |
31 * Breaking change - infer generic type arguments from the | 31 * Breaking change - infer generic type arguments from the |
32 constructor invocation arguments | 32 constructor invocation arguments |
33 (SDK issue [25220](https://github.com/dart-lang/sdk/issues/25220)) | 33 (SDK issue [25220](https://github.com/dart-lang/sdk/issues/25220)). |
34 | 34 |
35 ```dart | 35 ```dart |
36 var map = new Map<String, String>(); | 36 var map = new Map<String, String>(); |
37 | 37 |
38 // infer: Map<String, String> | 38 // infer: Map<String, String> |
39 var otherMap = new Map.from(map); | 39 var otherMap = new Map.from(map); |
40 ``` | 40 ``` |
41 | 41 |
42 * Breaking change - infer local function return type | 42 * Breaking change - infer local function return type |
43 (SDK issue [26414](https://github.com/dart-lang/sdk/issues/26414)) | 43 (SDK issue [26414](https://github.com/dart-lang/sdk/issues/26414)). |
44 | 44 |
45 ```dart | 45 ```dart |
46 void main() { | 46 void main() { |
47 // infer: return type is int | 47 // infer: return type is int |
48 f() { return 40; } | 48 f() { return 40; } |
49 int y = f() + 2; // type checks | 49 int y = f() + 2; // type checks |
50 print(y); | 50 print(y); |
51 } | 51 } |
52 ``` | 52 ``` |
53 | 53 |
54 * Breaking change - allow type promotion from a generic type parameter | 54 * Breaking change - allow type promotion from a generic type parameter |
55 (SDK issue [26414](https://github.com/dart-lang/sdk/issues/26965)) | 55 (SDK issue [26414](https://github.com/dart-lang/sdk/issues/26965)). |
56 | 56 |
57 ```dart | 57 ```dart |
58 void fn/*<T>*/(/*=T*/ object) { | 58 void fn/*<T>*/(/*=T*/ object) { |
59 if (object is String) { | 59 if (object is String) { |
60 // Treat `object` as `String` inside this block. | 60 // Treat `object` as `String` inside this block. |
61 // But it will require a cast to pass it to something that expects `T`. | 61 // But it will require a cast to pass it to something that expects `T`. |
62 print(object.substring(1)); | 62 print(object.substring(1)); |
63 } | 63 } |
64 } | 64 } |
65 ``` | 65 ``` |
66 | 66 |
| 67 * Breaking change - smarter inference for Future.then |
| 68 (SDK issue [25944](https://github.com/dart-lang/sdk/issues/25944)). |
| 69 Previous workarounds that use async/await or `.then/*<Future<SomeType>>*/` |
| 70 should no longer be necessary. |
| 71 |
| 72 ```dart |
| 73 // This will now infer correctly. |
| 74 Future<List<int>> t2 = f.then((_) => [3]); |
| 75 // This infers too. |
| 76 Future<int> t2 = f.then((_) => new Future.value(42)); |
| 77 ``` |
| 78 |
| 79 * Breaking change - smarter inference for async functions |
| 80 (SDK issue [25322](https://github.com/dart-lang/sdk/issues/25322)). |
| 81 |
| 82 ```dart |
| 83 void test() async { |
| 84 List<int> x = await [4]; // was previously inferred |
| 85 List<int> y = await new Future.value([4]); // now inferred too |
| 86 } |
| 87 ``` |
| 88 |
67 ### Dart VM | 89 ### Dart VM |
68 | 90 |
69 * The dependency on BoringSSL has been rolled forward. Going forward, builds | 91 * The dependency on BoringSSL has been rolled forward. Going forward, builds |
70 of the Dart VM including secure sockets will require a compiler with C++11 | 92 of the Dart VM including secure sockets will require a compiler with C++11 |
71 support, and to link against glibc 2.16 or newer. For details, see the | 93 support, and to link against glibc 2.16 or newer. For details, see the |
72 [Building wiki page](https://github.com/dart-lang/sdk/wiki/Building). | 94 [Building wiki page](https://github.com/dart-lang/sdk/wiki/Building). |
73 | 95 |
74 ### Tool Changes | 96 ### Tool Changes |
75 | 97 |
76 * `dartfmt` - upgraded to v0.2.9 | 98 * `dartfmt` - upgraded to v0.2.9 |
(...skipping 1087 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1164 they will keep the Dart process alive until they time out. This fixes the | 1186 they will keep the Dart process alive until they time out. This fixes the |
1165 handling of persistent connections. Previously, the client would shut down | 1187 handling of persistent connections. Previously, the client would shut down |
1166 immediately after a request. | 1188 immediately after a request. |
1167 | 1189 |
1168 * **Breaking change:** `HttpServer` no longer compresses all traffic by | 1190 * **Breaking change:** `HttpServer` no longer compresses all traffic by |
1169 default. The new `autoCompress` property can be set to `true` to re-enable | 1191 default. The new `autoCompress` property can be set to `true` to re-enable |
1170 compression. | 1192 compression. |
1171 | 1193 |
1172 * `dart:isolate`: `Isolate.spawnUri` added the optional `packageRoot` argument, | 1194 * `dart:isolate`: `Isolate.spawnUri` added the optional `packageRoot` argument, |
1173 which controls how it resolves `package:` URIs. | 1195 which controls how it resolves `package:` URIs. |
OLD | NEW |