WebSocket.close()
would crash if called after WebSocket.cancel()
.pub
executable was run, even if a DART_SDK
environment variable is set.dart:html
, appendHtml
and insertAdjacentHtml
now take nodeValidator
and treeSanitizer
parameters, and the inputs are consistently sanitized. See [45818 announcement] 45818 announcementdart:core
dart:isolate
:Isolate.ping
and Isolate.kill
methods a named parameter named priority
.Isolate.AS_EVENT
priority.response
parameter to Isolate.ping
and Isolate.addOnExitListener
- r45092dart2js --output-type=dart
) utility as part of dart2jsdart:convert
dart:core
Uri.parse
added start
and end
positional arguments.dart:html
CssClassSet
method arguments must now be ‘tokens’, i.e. non-empty strings with no white-space characters. The implementation was incorrect for class names containing spaces. The fix is to forbid spaces and provide a faster implementation. Announcementdart:io
ProcessResult
now exposes a constructor.import
and Isolate.spawnUri
now supports the Data URI scheme on the VM.Running pub run foo
within a package now runs the foo
executable defined by the foo
package. The previous behavior ran bin/foo
. This makes it easy to run binaries in dependencies, for instance pub run test
.
On Mac and Linux, signals sent to pub run
and forwarded to the child command.
This is a bug fix release which merges a number of commits from bleeding_edge
.
dart2js: Addresses as issue with minified Javascript output with CSP enabled - r44453
Editor: Fixes accidental updating of files in the pub cache during rename refactoring - r44677
Editor: Fix for issue 23032 regarding skipped breakpoints on Windows - r44824
dart:mirrors: Fix MethodMirror.source
when the method is on the first line in a script - r44957, r44976
pub: Fix for issue 23084: Pub can fail to load transformers necessary for local development - r44876
Support for async
, await
, sync*
, async*
, yield
, yield*
, and await for
. See the the language tour for more details.
Enum support is fully enabled. See the language tour for more details.
The formatter is much more comprehensive and generates much more readable code. See its tool page for more details.
The analysis server is integrated into the IntelliJ plugin and the Dart editor. This allows analysis to run out-of-process, so that interaction remains smooth even for large projects.
Analysis supports more and better hints, including unused variables and unused private members.
There's a new model for shared server sockets with no need for a Socket
reference.
A new, much faster regular expression engine.
The Isolate API now works across the VM and dart2js
.
For more information on any of these changes, see the corresponding documentation on the Dart API site.
dart:async
:
Future.wait
added a new named argument, cleanUp
, which is a callback that releases resources allocated by a successful Future
.
The SynchronousStreamController
class was added as an explicit name for the type returned when the sync
argument is passed to new StreamController
.
dart:collection
: The new SplayTreeSet.from(Iterable)
constructor was added.
dart:convert
: Utf8Encoder.convert
and Utf8Decoder.convert
added optional start
and end
arguments.
dart:core
:
RangeError
added new static helper functions: checkNotNegative
, checkValidIndex
, checkValidRange
, and checkValueInInterval
.
int
added the modPow
function.
String
added the replaceFirstMapped
and replaceRange
functions.
dart:io
:
Support for locking files to prevent concurrent modification was added. This includes the File.lock
, File.lockSync
, File.unlock
, and File.unlockSync
functions as well as the FileLock
class.
Support for starting detached processes by passing the named mode
argument (a ProcessStartMode
) to Process.start
. A process can be fully attached, fully detached, or detached except for its standard IO streams.
HttpServer.bind
and HttpServer.bindSecure
added the v6Only
named argument. If this is true, only IPv6 connections will be accepted.
HttpServer.bind
, HttpServer.bindSecure
, ServerSocket.bind
, RawServerSocket.bind
, SecureServerSocket.bind
and RawSecureServerSocket.bind
added the shared
named argument. If this is true, multiple servers or sockets in the same Dart process may bind to the same address, and incoming requests will automatically be distributed between them.
Deprecation: the experimental ServerSocketReference
and RawServerSocketReference
classes, as well as getters that returned them, are marked as deprecated. The shared
named argument should be used instead. These will be removed in Dart 1.10.
Socket.connect
and RawSocket.connect
added the sourceAddress
named argument, which specifies the local address to bind when making a connection.
The static Process.killPid
method was added to kill a process with a given PID.
Stdout
added the nonBlocking
instance property, which returns a non-blocking IOSink
that writes to standard output.
dart:isolate
:
The static getter Isolate.current
was added.
The Isolate
methods addOnExitListener
, removeOnExitListener
, setErrorsFatal
, addOnErrorListener
, and removeOnErrorListener
now work on the VM.
Isolates spawned via Isolate.spawn
now allow most objects, including top-level and static functions, to be sent between them.
Code generation for SIMD on ARM and ARM64 is fixed.
A possible crash on MIPS with newer GCC toolchains has been prevented.
A segfault when using rethrow
was fixed (issue 21795).
Breakpoints can be set in the Editor using file suffixes (issue 21280).
IPv6 addresses are properly handled by HttpClient
in dart:io
, fixing a crash in pub (issue 21698).
Issues with the experimental async
/await
syntax have been fixed.
Issues with a set of number operations in the VM have been fixed.
ListBase
in dart:collection
always returns an Iterable
with the correct type argument.
dart:collection
: SplayTree
added the toSet
function.
dart:convert
: The JsonUtf8Encoder
class was added.
dart:core
:
The IndexError
class was added for errors caused by an index being outside its expected range.
The new RangeError.index
constructor was added. It forwards to new IndexError
.
RangeError
added three new properties. invalidProperty
is the value that caused the error, and start
and end
are the minimum and maximum values that the value is allowed to assume.
new RangeError.value
and new RangeError.range
added an optional message
argument.
The new String.fromCharCodes
constructor added optional start
and end
arguments.
dart:io
:
Support was added for the Application-Layer Protocol Negotiation extension to the TLS protocol for both the client and server.
SecureSocket.connect
, SecureServerSocket.bind
, RawSecureSocket.connect
, RawSecureSocket.secure
, RawSecureSocket.secureServer
, and RawSecureServerSocket.bind
added a supportedProtocols
named argument for protocol negotiation.
RawSecureServerSocket
added a supportedProtocols
field.
RawSecureSocket
and SecureSocket
added a selectedProtocol
field which contains the protocol selected during protocol negotiation.
pub
now generates binstubs for packages that are globally activated so that they can be put on the user's PATH
and used as normal executables. See the pub global activate
documentation.
When using dart2js
, deferred loading now works with multiple Dart apps on the same page.
dart:async
: Zone
, ZoneDelegate
, and ZoneSpecification
added the errorCallback
function, which allows errors that have been programmatically added to a Future
or Stream
to be intercepted.
dart:io
:
Breaking change: HttpClient.close
must be called for all clients or they will keep the Dart process alive until they time out. This fixes the handling of persistent connections. Previously, the client would shut down immediately after a request.
Breaking change: HttpServer
no longer compresses all traffic by default. The new autoCompress
property can be set to true
to re-enable compression.
dart:isolate
: Isolate.spawnUri
added the optional packageRoot
argument, which controls how it resolves package:
URIs.