OLD | NEW |
1 ## 1.20.0 | 1 ## 1.20.0 |
2 | 2 |
3 ### Dart VM | 3 ### Dart VM |
4 | 4 |
5 * We have improved the way that the VM locates the native code library for a | 5 * We have improved the way that the VM locates the native code library for a |
6 native extension (e.g. `dart-ext:` import). We have updated this | 6 native extension (e.g. `dart-ext:` import). We have updated this |
7 [article on native extensions](https://www.dartlang.org/articles/dart-vm/nativ
e-extensions) | 7 [article on native extensions](https://www.dartlang.org/articles/dart-vm/nativ
e-extensions) |
8 to reflect the VM's improved behavior. | 8 to reflect the VM's improved behavior. |
9 | 9 |
10 * Linux builds of the VM will now use the tcmalloc library for memory | 10 * Linux builds of the VM will now use the tcmalloc library for memory |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 // this override is legal, it will check at runtime if we actually | 66 // this override is legal, it will check at runtime if we actually |
67 // got a MyView. | 67 // got a MyView. |
68 addChild(@checked MyView v) {} | 68 addChild(@checked MyView v) {} |
69 } | 69 } |
70 main() { | 70 main() { |
71 dynamic mv = new MyView(); | 71 dynamic mv = new MyView(); |
72 mv.addChild(new View()); // runtime error | 72 mv.addChild(new View()); // runtime error |
73 } | 73 } |
74 ``` | 74 ``` |
75 | 75 |
| 76 * New feature - use `@virtual` to allow field overrides in strong mode |
| 77 (SDK issue [27384](https://github.com/dart-lang/sdk/issues/27384)). |
| 78 |
| 79 ```dart |
| 80 import 'package:meta/meta.dart' show virtual; |
| 81 class Base { |
| 82 @virtual int x; |
| 83 } |
| 84 class Derived extends Base { |
| 85 int x; |
| 86 |
| 87 // Expose the hidden storage slot: |
| 88 int get superX => super.x; |
| 89 set superX(int v) { super.x = v; } |
| 90 } |
| 91 ``` |
| 92 |
76 * Breaking change - infer list and map literals from the context type as well as | 93 * Breaking change - infer list and map literals from the context type as well as |
77 their values, consistent with generic methods and instance creation | 94 their values, consistent with generic methods and instance creation |
78 (SDK issue [27151](https://github.com/dart-lang/sdk/issues/27151)). | 95 (SDK issue [27151](https://github.com/dart-lang/sdk/issues/27151)). |
79 | 96 |
80 ```dart | 97 ```dart |
81 import 'dart:async'; | 98 import 'dart:async'; |
82 main() async { | 99 main() async { |
83 var b = new Future<B>.value(new B()); | 100 var b = new Future<B>.value(new B()); |
84 var c = new Future<C>.value(new C()); | 101 var c = new Future<C>.value(new C()); |
85 var/*infer List<Future<A>>*/ list = [b, c]; | 102 var/*infer List<Future<A>>*/ list = [b, c]; |
(...skipping 1202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1288 they will keep the Dart process alive until they time out. This fixes the | 1305 they will keep the Dart process alive until they time out. This fixes the |
1289 handling of persistent connections. Previously, the client would shut down | 1306 handling of persistent connections. Previously, the client would shut down |
1290 immediately after a request. | 1307 immediately after a request. |
1291 | 1308 |
1292 * **Breaking change:** `HttpServer` no longer compresses all traffic by | 1309 * **Breaking change:** `HttpServer` no longer compresses all traffic by |
1293 default. The new `autoCompress` property can be set to `true` to re-enable | 1310 default. The new `autoCompress` property can be set to `true` to re-enable |
1294 compression. | 1311 compression. |
1295 | 1312 |
1296 * `dart:isolate`: `Isolate.spawnUri` added the optional `packageRoot` argument, | 1313 * `dart:isolate`: `Isolate.spawnUri` added the optional `packageRoot` argument, |
1297 which controls how it resolves `package:` URIs. | 1314 which controls how it resolves `package:` URIs. |
OLD | NEW |