File tree 1 file changed +23
-0
lines changed 1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change 34
34
35
35
- Deprecates ` BidirectionalIterator ` .
36
36
37
+ ### Dart VM
38
+
39
+ Implementation of ` async ` /` async* ` /` sync* ` is revamped in Dart VM,
40
+ both in JIT and AOT modes. This also affects Flutter except Flutter Web.
41
+
42
+ Besides smaller code size and better performance of async methods,
43
+ the new implementation carries a few subtle changes in behavior:
44
+
45
+ - If ` async ` method returns before reaching the first ` await ` , it now returns a completed Future.
46
+ Previously ` async ` methods completed resulting Future in separate microtasks.
47
+
48
+ - Stack traces no longer have duplicate entries for ` async ` methods.
49
+
50
+ - New implementation now correctly throws an error if ` null ` occurs as
51
+ an argument of a logical expression (` && ` and ` || ` ) which also contains
52
+ an ` await ` .
53
+
54
+ - New implementation avoids unnecessary extending the liveness of local
55
+ variables in ` async ` /` async* ` /` sync* ` methods, which means that unused
56
+ objects stored in local variables in such methods might be garbage
57
+ collected earlier than they were before
58
+ (see issue [ #36983 ] ( https://github.com/dart-lang/sdk/issues/36983 ) for details).
59
+
37
60
## 2.18.0
38
61
39
62
### Language
You can’t perform that action at this time.
0 commit comments