|
95 | 95 |
|
96 | 96 | #### Dart VM
|
97 | 97 |
|
98 |
| -- **Breaking Change** [#45451](https://github.com/dart-lang/sdk/issues/45451) : |
| 98 | +- **Breaking Change** [#45451](https://github.com/dart-lang/sdk/issues/45451): |
99 | 99 | Support for `dart-ext:`-style native extensions has been removed as previously
|
100 | 100 | announced. Use `dart:ffi` to bind to native libraries instead.
|
101 | 101 |
|
| 102 | +- **Breaking Change** [#46754](https://github.com/dart-lang/sdk/issues/46754): |
| 103 | + Isolates spawned via the `Isolate.spawn()` API are now grouped, operate on the |
| 104 | + same managed heap and can therefore share various VM-internal data structures. |
| 105 | + |
| 106 | + This leads to ~100x faster isolate startup latency, ~10-100x lower |
| 107 | + per-isolate base memory overhead and ~8x faster inter-isolate communication. |
| 108 | + |
| 109 | + Making isolates operate on the same heap will also make them collaborate on |
| 110 | + garbage collections, which changes performance characteristics for GC-heavy |
| 111 | + applications that may - in rare cases - negatively affect pause times or |
| 112 | + throughput. |
| 113 | + |
| 114 | +- Allow closures both in inter-isolate messages as well as as entrypoints in |
| 115 | + `Isolate.spawn(<entrypoint>, ...)` calls. Closures and their enclosing context |
| 116 | + may need to be copied in this process. The enclosing context is - as with |
| 117 | + normal messages - verified to only contain objects that are sendable. |
| 118 | + |
| 119 | + Note of caution: The Dart VM's current representation of enclosing variables |
| 120 | + in closures can make closures hang on to more variables than strictly needed. |
| 121 | + Using such closures in inter-isolate communication can therefore lead to |
| 122 | + copying of larger transitive object graphs. If the extended transitive |
| 123 | + closure includes objects that are illegal to send, the sending will fail. |
| 124 | + See [#36983](https://github.com/dart-lang/sdk/issues/36983), which tracks this |
| 125 | + existing memory leak issue. |
| 126 | + |
102 | 127 | #### Linter
|
103 | 128 |
|
104 | 129 | Updated the Linter to `1.12.0`, which includes changes that
|
|
0 commit comments