Skip to content

Commit 7e108dc

Browse files
mkustermanncommit-bot@chromium.org
authored andcommitted
[vm/concurrency] Add CHANGELOG.md entry for work on isolates
Issue #46754 Issue #36097 TEST=ci Change-Id: Ic0b1ecf88790576ae1f31b6a003b2175b9af1c66 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/213343 Commit-Queue: Martin Kustermann <[email protected]> Reviewed-by: Kevin Moore <[email protected]>
1 parent 8aa9716 commit 7e108dc

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

CHANGELOG.md

+26-1
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,35 @@
9595

9696
#### Dart VM
9797

98-
- **Breaking Change** [#45451](https://github.com/dart-lang/sdk/issues/45451) :
98+
- **Breaking Change** [#45451](https://github.com/dart-lang/sdk/issues/45451):
9999
Support for `dart-ext:`-style native extensions has been removed as previously
100100
announced. Use `dart:ffi` to bind to native libraries instead.
101101

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+
102127
#### Linter
103128

104129
Updated the Linter to `1.12.0`, which includes changes that

0 commit comments

Comments
 (0)