1.11.0

Core library changes

  • dart:core
    • Add unmodifiable constructor to List - r45334
  • dart:isolate Experimental
    • Make the priority parameter of Isolate.ping and Isolate.kill methods a named parameter.
    • Remove the Isolate.AS_EVENT priority.
    • Add extra response parameter to Isolate.ping and Isolate.addOnExitListener - r45092

1.10.0 – 2015-04-29

Core library changes

  • dart:convert

    • POTENTIALLY BREAKING Fix behavior of HtmlEscape. It no longer escapes no-break space (U+00A0) anywhere or forward slash (/, U+002F) in element context. Slash is still escaped using HtmlEscapeMode.UNKNOWN. r45003, r45153, r45189
  • dart:core

    • Uri.parse added start and end positional arguments.
  • dart:html

    • POTENTIALLY BREAKING 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. Announcement
  • dart:io

    • ProcessResult now exposes a constructor.
    • import and Isolate.spawnUri now supports the Data URI scheme on the VM.

Tool Changes

pub

  • 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.

1.9.3 – 2015-04-14

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

1.9.1 – 2015-03-25

Language changes

  • 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.

Tool changes

  • 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.

Core library changes

Highlights

  • 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.

Details

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.

1.8.5 – 2015-01-21

  • 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).

1.8.3 – 2014-12-10

  • 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.

1.8.0 – 2014-11-28

  • 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.

1.7.0 – 2014-10-15

Tool changes

  • 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.

Core library changes

  • 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.