PackageTrack
Sign in Get early access

meta

Annotations used to express developer intentions that can't otherwise be deduced by statically analyzing source code.

1.19.0 13M downloads/mo #5 most downloaded on pub.dev dart-lang/sdk

What this package is like to depend on

Last release 1 months ago

09 Jul 2026

Release timing varies

gaps range from 2 weeks to 8 months

Some releases are documented

notes for 40 of 112 stable releases

Nothing withdrawn

no release was ever pulled

14 years old

119 releases · first in 2012

5 releases in the last 12 months

see the full history below

Release timeline

119 releases · Nov 2012 to Jul 2026
2013 2015 2017 2019 2021 2023 2025
Release Pre-release

Releases

latest 60 of 119
  1. 1.19.0 09 Jul 2026
    Release notes

    Language changes

    • The language now allows a trailing comma after the last argument of a call and the last parameter of a function declaration. This can make long argument or parameter lists easier to maintain, as commas can be left as-is when reordering lines. For details, see SDK issue 26644.

    Tool Changes

    • dartfmt - upgraded to v0.2.9+1

      • Support trailing commas in argument and parameter lists.
      • Gracefully handle read-only files.
      • About a dozen other bug fixes.
    • Pub

      • Added a --no-packages-dir flag to pub get, pub upgrade, and pub downgrade. When this flag is passed, pub will not generate a packages/ directory, and will remove that directory and any symlinks to it if they exist. Note that this replaces the unsupported --no-package-symlinks flag.

      • Added the ability for packages to declare a constraint on the Flutter SDK:

        environment:
          flutter: ^0.1.2
          sdk: >=1.19.0 <2.0.0
        

        A Flutter constraint will only be satisfiable when pub is running in the context of the flutter executable, and when the Flutter SDK version matches the constraint.

      • Added sdk as a new package source that fetches packages from a hard-coded SDK. Currently only the flutter SDK is supported:

        dependencies:
          flutter_driver:
            sdk: flutter
            version: ^0.0.1
        

        A Flutter sdk dependency will only be satisfiable when pub is running in the context of the flutter executable, and when the Flutter SDK contains a package with the given name whose version matches the constraint.

      • tar files on Linux are now created with 0 as the user and group IDs. This fixes a crash when publishing packages while using Active Directory.

      • Fixed a bug where packages from a hosted HTTP URL were considered the same as packages from an otherwise-identical HTTPS URL.

      • Fixed timer formatting for timers that lasted longer than a minute.

      • Eliminate some false negatives when determining whether global executables are on the user's executable path.

    • dart2js

      • dart2dart (aka dart2js --output-type=dart) has been removed (this was deprecated in Dart 1.11).

    Dart VM

    • The dependency on BoringSSL has been rolled forward. Going forward, builds of the Dart VM including secure sockets will require a compiler with C++11 support. For details, see the Building wiki page.

    Strong Mode

    • New feature - an option to disable implicit casts (SDK issue 26583), see the documentation for usage instructions and examples.

    • New feature - an option to disable implicit dynamic (SDK issue 25573), see the documentation for usage instructions and examples.

    • Breaking change - infer generic type arguments from the constructor invocation arguments (SDK issue 25220).

      var map = new Map<String, String>();
      
      // infer: Map<String, String>
      var otherMap = new Map.from(map);
      
    • Breaking change - infer local function return type (SDK issue 26414).

      void main() {
        // infer: return type is int
        f() { return 40; }
        int y = f() + 2; // type checks
        print(y);
      }
      
    • Breaking change - allow type promotion from a generic type parameter (SDK issue 26414).

      void fn/*<T>*/(/*=T*/ object) {
        if (object is String) {
          // Treat `object` as `String` inside this block.
          // But it will require a cast to pass it to something that expects `T`.
          print(object.substring(1));
        }
      }
      
    • Breaking change - smarter inference for Future.then (SDK issue 25944). Previous workarounds that use async/await or .then/*<Future<SomeType>>*/ should no longer be necessary.

      // This will now infer correctly.
      Future<List<int>> t2 = f.then((_) => [3]);
      // This infers too.
      Future<int> t2 = f.then((_) => new Future.value(42));
      
    • Breaking change - smarter inference for async functions (SDK issue 25322).

      void test() async {
        List<int> x = await [4]; // was previously inferred
        List<int> y = await new Future.value([4]); // now inferred too
      }
      
    • Breaking change - sideways casts are no longer allowed (SDK issue 26120).

    Open source →
    Release notes
    • The @RecordUse() and @mustBeConst annotations are no longer considered experimental.
    Open source →
  2. 1.18.3 04 Jun 2026
    Release notes
    • One new TargetKind is introduced: TargetKind.importDirective, which indicates an annotation is valid on an import directive.
    Open source →
  3. 1.18.2 17 Mar 2026
    Release notes
    • Change private types in the public API signatures to Object.
    • Update documentation to follow the "single line first paragraph" style.
    • Make visibleForTesting documentation match actual behavior: The annotated member can be used in the test/ directory of other packages.
    Open source →
  4. 1.18.1 27 Jan 2026
    Release notes

    Patch release, resolves two issues and improves performance:

    • Debugger: Fixes a bug that crashes the VM (SDK issue 26941)

    • VM: Fixes an optimizer bug involving closures, try, and await (SDK issue 26948)

    • Dart2js: Speeds up generated code on Firefox (https://codereview.chromium.org/2180533002)

    Open source →
    Release notes
    • Allow @awaitNotRequired to annotate a typedef.
    Open source →
  5. 1.18.0 15 Jan 2026
    Release notes

    Core library changes

    • dart:core
      • Improved performance when parsing some common URIs.
      • Fixed bug in Uri.resolve (SDK issue 26804).
    • dart:io
      • Adds file locking modes FileLock.BLOCKING_SHARED and FileLock.BLOCKING_EXCLUSIVE.
    Open source →
    Release notes
    • The @redeclare annotation is no longer considered experimental.
    • Two new TargetKinds are introduced: TargetKind.exportDirective, which indicates an annotation is valid on an export directive, and TargetKind.partOfDirective, which indicates an annotation is valid on a "part of" directive.
    • The TargetKind.directive value is deprecated in favor of the above new TargetKinds and the existing TargetKind.library.
    Open source →
  6. 1.17.0 14 May 2025
    Release notes

    Core library changes

    • dart:convert

      • Deprecate ChunkedConverter which was erroneously added in 1.16.
    • dart:core

      • Uri.replace supports iterables as values for the query parameters.
      • Uri.parseIPv6Address returns a Uint8List.
    • dart:io

      • Added NetworkInterface.listSupported, which is true when NetworkInterface.list is supported, and false otherwise. Currently, NetworkInterface.list is not supported on Android.

    Tool Changes

    • Pub

      • TAR files created while publishing a package on Mac OS and Linux now use a more portable format.

      • Errors caused by invalid arguments now print the full usage information for the command.

      • SDK constraints for dependency overrides are no longer considered when determining the total SDK constraint for a lockfile.

      • A bug has been fixed in which a lockfile was considered up-to-date when it actually wasn't.

      • A bug has been fixed in which pub get --offline would crash when a prerelease version was selected.

    • Dartium and content shell

      • Debugging Dart code inside iframes improved, was broken.
    Open source →
    Release notes
    • Introduce @awaitNotRequired to annotate Future-returning functions and Future-typed fields and top-level variables whose value does not necessarily need to be awaited. This annotation can be used to suppress unawaited_futures and discarded_futures lint diagnostics at call sites.

      For example, this log function returns a Future, but maybe the return value is typically not important, and is only useful in tests or while debugging:

      @awaitNotRequired Future<LogMessage> log(String message) { ... }
      
      void fn() {
        log('Message'); // Not important to wait for logging to complete.
      }
      

      Without the annotation on log, the analyzer may report a lint diagnostic at the call to log, such as unawaited_futures or discarded_futures regarding the danger of not awaiting the function call, depending on what lint rules are enabled.

    • Mark Required and required as @Deprecated.

    • Update SDK constraints to ^3.5.0.

    Open source →
  7. 1.16.0 19 Sep 2024
    Release notes

    Core library changes

    • dart:convert

      • Added BASE64URL codec and corresponding Base64Codec.urlSafe constructor.

      • Introduce ChunkedConverter and deprecate chunked methods on Converter.

    • dart:html

      There have been a number of BREAKING changes to align APIs with recent changes in Chrome. These include:

      • Chrome's ShadowRoot interface no longer has the methods getElementById, getElementsByClassName, and getElementsByTagName, e.g.,

        elem.shadowRoot.getElementsByClassName('clazz')
        

        should become:

        elem.shadowRoot.querySelectorAll('.clazz')
        
      • The clipboardData property has been removed from KeyEvent and Event. It has been moved to the new ClipboardEvent class, which is now used by copy, cut, and paste events.

      • The layer property has been removed from KeyEvent and UIEvent. It has been moved to MouseEvent.

      • The Point get page property has been removed from UIEvent. It still exists on MouseEvent and Touch.

      There have also been a number of other additions and removals to dart:html, dart:indexed_db, dart:svg, dart:web_audio, and dart:web_gl that correspond to changes to Chrome APIs between v39 and v45. Many of the breaking changes represent APIs that would have caused runtime exceptions when compiled to JavaScript and run on recent Chrome releases.

    • dart:io

      • Added SecurityContext.alpnSupported, which is true if a platform supports ALPN, and false otherwise.

    JavaScript interop

    For performance reasons, a potentially BREAKING change was added for libraries that use JS interop. Any Dart file that uses @JS annotations on declarations (top-level functions, classes or class members) to interop with JavaScript code will require that the file have the annotation @JS() on a library directive.

    @JS()
    library my_library;
    

    The analyzer will enforce this by generating the error:

    The @JS() annotation can only be used if it is also declared on the library directive.

    If part file uses the @JS() annotation, the library that uses the part should have the @JS() annotation e.g.,

    // library_1.dart
    @JS()
    library library_1;
    
    import 'package:js/js.dart';
    
    part 'part_1.dart';
    
    // part_1.dart
    part of library_1;
    
    @JS("frameworkStabilizers")
    external List<FrameworkStabilizer> get frameworkStabilizers;
    

    If your library already has a JS module e.g.,

    @JS('array.utils')
    library my_library;
    

    Then your library will work without any additional changes.

    Analyzer

    • Static checking of for in statements. These will now produce static warnings:

      // Not Iterable.
      for (var i in 1234) { ... }
      
      // String cannot be assigned to int.
      for (int n in <String>["a", "b"]) { ... }
      

    Tool Changes

    • Pub

      • pub serve now provides caching headers that should improve the performance of requesting large files multiple times.

      • Both pub get and pub upgrade now have a --no-precompile flag that disables precompilation of executables and transformed dependencies.

      • pub publish now resolves symlinks when publishing from a Git repository. This matches the behavior it always had when publishing a package that wasn't in a Git repository.

    • Dart Dev Compiler

      • The experimental dartdevc executable has been added to the SDK.

      • It will help early adopters validate the implementation and provide feedback. dartdevc is not yet ready for production usage.

      • Read more about the Dart Dev Compiler here.

    Open source →
    Release notes
    • Add TargetKinds to a few annotations to match custom-wired behavior that the Dart analyzer has been providing:

      • Require that @factory is only used on methods.
      • Require that @Immutable is only used on classes, extensions, and mixins.
      • Require that @mustBeOverridden and @mustCallSuper are only used on overridable members.
      • Require that @sealed is only used on classes.
    • Updated @doNotSubmit to (1) disallow same-library access (unlike other visibility annotation), (2) allow parameters marked with @doNotSubmit to be used in nested functions, and (3) disallowed @doNotSubmit on required parameters:

      import 'package:meta/meta.dart';
      
      @doNotSubmit
      void a() {}
      
      void b() {
        // HINT: invalid_use_of_do_not_submit: ...
        a();
      }
      
      import 'package:meta/meta.dart';
      
      void test({
        @doNotSubmit bool solo = false
      }) {
        void nested() {
          // OK
          if (solo) { /*...*/ }
        }
      }
      
      import 'package:meta/meta.dart';
      
      void test({
        // HINT: Cannot use on required parameters.
        @doNotSubmit required bool solo
      }) {}
      

      See https://github.com/dart-lang/sdk/issues/55558 for more information.

    • TargetKind.parameter is now allowed on a representation type, such as:

      // Ok, because `int _actual` is similar to a parameter declaration.
      extension type const FancyInt(@mustBeConst int _actual) {}
      
    • Renamed @ResourceIdentifier to @RecordUse.

    Open source →
  8. 1.15.0 07 May 2024
    Release notes

    Core library changes

    • dart:async

      • Made StreamView class a const class.
    • dart:core

      • Added Uri.queryParametersAll to handle multiple query parameters with the same name.
    • dart:io

      • Added SecurityContext.usePrivateKeyBytes, SecurityContext.useCertificateChainBytes, SecurityContext.setTrustedCertificatesBytes, and SecurityContext.setClientAuthoritiesBytes.
      • Breaking The named directory argument of SecurityContext.setTrustedCertificates has been removed.
      • Added support to SecurityContext for PKCS12 certificate and key containers.
      • All calls in SecurityContext that accept certificate data now accept an optional named parameter password, similar to SecurityContext.usePrivateKeyBytes, for use as the password for PKCS12 data.

    Tool changes

    • Dartium and content shell

      • The Chrome-based tools that ship as part of the Dart SDK - Dartium and content shell - are now based on Chrome version 45 (instead of Chrome 39).
      • Dart browser libraries (dart:html, dart:svg, etc) have not been updated.
        • These are still based on Chrome 39.
        • These APIs will be updated in a future release.
      • Note that there are experimental APIs which have changed in the underlying browser, and will not work with the older libraries. For example, Element.animate.
    • dartfmt - upgraded to v0.2.4

      • Better handling for long collections with comments.
      • Always put member metadata annotations on their own line.
      • Indent functions in named argument lists with non-functions.
      • Force the parameter list to split if a split occurs inside a function-typed parameter.
      • Don't force a split for before a single named argument if the argument itself splits.

    Service protocol changes

    • Fixed a documentation bug where the field extensionRPCs in Isolate was not marked optional.

    Experimental language features

    • Added support for configuration-specific imports. On the VM and dart2js, they can be enabled with --conditional-directives.

      The analyzer requires additional configuration:

      analyzer:
        language:
          enableConditionalDirectives: true
      

      Read about configuring the analyzer for more details.

    Open source →
    Release notes
    • Updated @mustBeOverridden to only flag missing overrides in concrete classes; in other words, abstract classes (including implicitly abstract, i.e sealed) and mixin declarations are no longer required to provide an implementation:

      import 'package:meta/meta.dart';
      
      abstract class Base {
        @mustBeOverridden
        void foo() {}
      }
      
      class Derived extends Base {
        // ERROR: Missing implementation of `foo`.
      }
      
      abstract class Abstract extends Base {
        // No error.
      }
      
      sealed class Sealed extends Base {
        // No error.
      }
      
      mixin Mixin on Base {
        // No error.
      }
      

      See https://github.com/dart-lang/sdk/issues/52965 for more information.

    • Introduce TargetKind.optionalParameter, to indicate that an annotation is valid on any optional parameter declaration.

    • Introduce TargetKind.overridableMember, to indicate that an annotation is valid on any instance member declaration.

    • Introduce TargetKind.instanceMember, to indicate that an annotation is valid on any instance member declaration.

    • Updated @doNotSubmit to (1) disallow same-library access (unlike other visibility annotation), (2) allow parameters marked with @doNotSubmit to be used in nested functions, and (3) disallowed @doNotSubmit on required parameters:

      import 'package:meta/meta.dart';
      
      @doNotSubmit
      void a() {}
      
      void b() {
        // HINT: invalid_use_of_do_not_submit: ...
        a();
      }
      
      import 'package:meta/meta.dart';
      
      void test({
        @doNotSubmit bool solo = false
      }) {
        void nested() {
          // OK
          if (solo) { /*...*/ }
        }
      }
      
      import 'package:meta/meta.dart';
      
      void test({
        // HINT: Cannot use on required parameters.
        @doNotSubmit required bool solo
      }) {}
      

      See https://github.com/dart-lang/sdk/issues/55558 for more information.

    Open source →
  9. 1.14.0 04 Apr 2024
    Release notes

    Core library changes

    • dart:async

      • Added Future.any static method.
      • Added Stream.fromFutures constructor.
    • dart:convert

      • Base64Decoder.convert now takes optional start and end parameters.
    • dart:core

      • Added current getter to StackTrace class.
      • Uri class added support for data URIs
        • Added two new constructors: dataFromBytes and dataFromString.
        • Added a data getter for data: URIs with a new UriData class for the return type.
      • Added growable parameter to List.filled constructor.
      • Added microsecond support to DateTime: DateTime.microsecond, DateTime.microsecondsSinceEpoch, and new DateTime.fromMicrosecondsSinceEpoch.
    • dart:math

      • Random added a secure constructor returning a cryptographically secure random generator which reads from the entropy source provided by the embedder for every generated random value.
    • dart:io

      • Platform added a static isIOS getter and Platform.operatingSystem may now return ios.
      • Platform added a static packageConfig getter.
      • Added support for WebSocket compression as standardized in RFC 7692.
      • Compression is enabled by default for all WebSocket connections.
        • The optionally named parameter compression on the methods WebSocket.connect, WebSocket.fromUpgradedSocket, and WebSocketTransformer.upgrade and the WebSocketTransformer constructor can be used to modify or disable compression using the new CompressionOptions class.
    • dart:isolate

      • Added experimental support for Package Resolution Configuration.
        • Added packageConfig and packageRoot instance getters to Isolate.
        • Added a resolvePackageUri method to Isolate.
        • Added named arguments packageConfig and automaticPackageResolution to the Isolate.spawnUri constructor.

    Tool changes

    • dartfmt

      • Better line splitting in a variety of cases.

      • Other optimizations and bug fixes.

    • Pub

      • Breaking: Pub now eagerly emits an error when a pubspec's "name" field is not a valid Dart identifier. Since packages with non-identifier names were never allowed to be published, and some of them already caused crashes when being written to a .packages file, this is unlikely to break many people in practice.

      • Breaking: Support for barback versions prior to 0.15.0 (released July

        1. has been dropped. Pub will no longer install these older barback versions.
      • pub serve now GZIPs the assets it serves to make load times more similar to real-world use-cases.

      • pub deps now supports a --no-dev flag, which causes it to emit the dependency tree as it would be if no dev_dependencies were in use. This makes it easier to see your package's dependency footprint as your users will experience it.

      • pub global run now detects when a global executable's SDK constraint is no longer met and errors out, rather than trying to run the executable anyway.

      • Pub commands that check whether the lockfile is up-to-date (pub run, pub deps, pub serve, and pub build) now do additional verification. They ensure that any path dependencies' pubspecs haven't been changed, and they ensure that the current SDK version is compatible with all dependencies.

      • Fixed a crashing bug when using pub global run on a global script that didn't exist.

      • Fixed a crashing bug when a pubspec contains a dependency without a source declared.

    Open source →
    Release notes
    • Introduce TargetKind.constructor, to indicate that an annotation is valid on any constructor declaration.

    • Introduce TargetKind.directive, to indicate that an annotation is valid on any directive.

    • Introduce TargetKind.enumValue, to indicate that an annotation is valid on any enum value declaration.

    • Introduce TargetKind.typeParameter, to indicate that an annotation is valid on any type parameter declaration.

    • Introduce @doNotSubmit to annotate members that should not be accessed in checked-in code, typically because they are intended to be used ephemerally during development.

      One example is package:test's solo: ... parameter, which skips all other tests in a test suite when set to true. This parameter is useful during development, but should be prevented from being submitted:

      import 'package:meta/meta.dart';
      
      void test(
        String name,
        void Function() body, {
        @doNotSubmit bool solo = false
      }) {
        // ...
      }
      
      import 'package:test/test.dart';
      
      void main() {
        test(
          'my test', () {
            // ...
          },
          // HINT: invalid_use_of_do_not_submit: ...
          solo: true,
        );
      }
      
    • Introduce @mustBeConst to annotate parameters which only accept constant arguments.

    Open source →
  10. 1.12.0 06 Feb 2024
    Release notes

    Language changes

    • Null-aware operators
      • ??: if null operator. expr1 ?? expr2 evaluates to expr1 if not null, otherwise expr2.
      • ??=: null-aware assignment. v ??= expr causes v to be assigned expr only if v is null.
      • x?.p: null-aware access. x?.p evaluates to x.p if x is not null, otherwise evaluates to null.
      • x?.m(): null-aware method invocation. x?.m() invokes m only if x is not null.

    Core library changes

    • dart:async

      • StreamController added setters for the onListen, onPause, onResume and onCancel callbacks.
    • dart:convert

      • LineSplitter added a split static method returning an Iterable.
    • dart:core

      • Uri class now perform path normalization when a URI is created. This removes most .. and . sequences from the URI path. Purely relative paths (no scheme or authority) are allowed to retain some leading "dot" segments. Also added hasAbsolutePath, hasEmptyPath, and hasScheme properties.
    • dart:developer

      • New log function to transmit logging events to Observatory.
    • dart:html

      • NodeTreeSanitizer added the const trusted field. It can be used instead of defining a NullTreeSanitizer class when calling setInnerHtml or other methods that create DOM from text. It is also more efficient, skipping the creation of a DocumentFragment.
    • dart:io

      • Added two new file modes, WRITE_ONLY and WRITE_ONLY_APPEND for opening a file write only. eaeecf2
      • Change stdout/stderr to binary mode on Windows. 4205b29
    • dart:isolate

      • Added onError, onExit and errorsAreFatal parameters to Isolate.spawnUri.
    • dart:mirrors

      • InstanceMirror.delegate moved up to ObjectMirror.
      • Fix InstanceMirror.getField optimization when the selector is an operator.
      • Fix reflective NoSuchMethodErrors to match their non-reflective counterparts when due to argument mismatches. (VM only)

    Tool changes

    • Documentation tools

      • dartdoc is now the default tool to generate static HTML for API docs. Learn more.

      • docgen and dartdocgen have been deprecated. Currently plan is to remove them in 1.13.

    • Formatter (dartfmt)

      • Over 50 bugs fixed.

      • Optimized line splitter is much faster and produces better output on complex code.

    • Observatory

      • Allocation profiling.

      • New feature to display output from logging.

      • Heap snapshot analysis works for 64-bit VMs.

      • Improved ability to inspect typed data, regex and compiled code.

      • Ability to break on all or uncaught exceptions from Observatory's debugger.

      • Ability to set closure-specific breakpoints.

      • 'anext' - step past await/yield.

      • Preserve when a variable has been expanded/unexpanded in the debugger.

      • Keep focus on debugger input box whenever possible.

      • Echo stdout/stderr in the Observatory debugger. Standalone-only so far.

      • Minor fixes to service protocol documentation.

    • Pub

      • Breaking: various commands that previously ran pub get implicitly no longer do so. Instead, they merely check to make sure the ".packages" file is newer than the pubspec and the lock file, and fail if it's not.

      • Added support for --verbosity=error and --verbosity=warning.

      • pub serve now collapses multiple GET requests into a single line of output. For full output, use --verbose.

      • pub deps has improved formatting for circular dependencies on the entrypoint package.

      • pub run and pub global run

        • Breaking: to match the behavior of the Dart VM, executables no longer run in checked mode by default. A --checked flag has been added to run them in checked mode manually.

        • Faster start time for executables that don't import transformed code.

        • Binstubs for globally-activated executables are now written in the system encoding, rather than always in UTF-8. To update existing executables, run pub cache repair.

      • pub get and pub upgrade

        • Pub will now generate a ".packages" file in addition to the "packages" directory when running pub get or similar operations, per the package spec proposal. Pub now has a --no-package-symlinks flag that will stop "packages" directories from being generated at all.

        • An issue where HTTP requests were sometimes made even though --offline was passed has been fixed.

        • A bug with --offline that caused an unhelpful error message has been fixed.

        • Pub will no longer time out when a package takes a long time to download.

      • pub publish

        • Pub will emit a non-zero exit code when it finds a violation while publishing.

        • .gitignore files will be respected even if the package isn't at the top level of the Git repository.

      • Barback integration

        • A crashing bug involving transformers that only apply to non-public code has been fixed.

        • A deadlock caused by declaring transformer followed by a lazy transformer (such as the built-in $dart2js transformer) has been fixed.

        • A stack overflow caused by a transformer being run multiple times on the package that defines it has been fixed.

        • A transformer that tries to read a nonexistent asset in another package will now be re-run if that asset is later created.

    VM Service Protocol Changes

    • BREAKING The service protocol now sends JSON-RPC 2.0-compatible server-to-client events. To reflect this, the service protocol version is now 2.0.

    • The service protocol now includes a "jsonrpc" property in its responses, as opposed to "json-rpc".

    • The service protocol now properly handles requests with non-string ids. Numeric ids are no longer converted to strings, and null ids now don't produce a response.

    • Some RPCs that didn't include a "jsonrpc" property in their responses now include one.

    Open source →
    Release notes
    • Introduce the @ResourceIdentifier experimental annotation for static methods whose constant literal arguments should be collected during compilation.
    • Indicate that @required and @Required are set to be deprecated for later removal.
    Open source →
  11. 1.11.0 10 Oct 2023
    Release notes

    Core library changes

    • dart:core

      • Iterable added an empty constructor. dcf0286
      • Iterable can now be extended directly. An alternative to extending IterableBase from dart:collection.
      • List added an unmodifiable constructor. r45334
      • Map added an unmodifiable constructor. r45733
      • int added a gcd method. a192ef4
      • int added a modInverse method. f6f338c
      • StackTrace added a fromString constructor. 68dd6f6
      • Uri added a directory constructor. d8dbb4a
      • List iterators may not throw ConcurrentModificationError as eagerly in release mode. In checked mode, the modification check is still as eager as possible. r45198
    • dart:developer - NEW

      • Replaces the deprecated dart:profiler library.
      • Adds new functions debugger and inspect. 6e42aec
    • dart:io

      • FileSystemEntity added a uri property. 8cf32dc
      • Platform added a static resolvedExecutable property. c05c8c6
    • dart:html

      • Element methods, appendHtml and insertAdjacentHtml now take nodeValidator and treeSanitizer parameters, and the inputs are consistently sanitized. r45818 announcement
    • dart:isolate

      • BREAKING The positional priority parameter of Isolate.ping and Isolate.kill is now a named parameter named priority.
      • BREAKING Removed the Isolate.AS_EVENT priority.
      • Isolate methods ping and addOnExitListener now have a named parameter response. r45092
      • Isolate.spawnUri added a named argument checked.
      • Remove the experimental state of the API.
    • dart:profiler - DEPRECATED

      • This library will be removed in 1.12. Use dart:developer instead.

    Tool changes

    • This is the first release that does not include the Eclipse-based Dart Editor. See dart.dev/tools for alternatives.
    • This is the last release that ships the (unsupported) dart2dart (aka dart2js --output-type=dart) utility as part of dart2js
    Open source →
    Release notes
    • Introduce TargetKind.extensionType to indicate that an annotation is valid on any extension type declaration.
    Open source →
  12. 1.10.0 06 Sep 2023
    Release notes

    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.

    Open source →
    Release notes
    • Introduce @redeclare to annotate extension type members that redeclare members from a superinterface.
    • Migrate the TargetKind enum to a class to ease the addition of new kinds.
    Open source →
  13. 1.9.1 22 Mar 2023
    Release notes

    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.

    Open source →
    Release notes
    • Update SDK constraints to >=2.12.0 <4.0.0.
    • Mark @reopen stable.
    Open source →
  14. 1.9.0 30 Jan 2023
    Release notes
    • Introduce @reopen to annotate class or mixin declarations that can safely extend classes marked base, final or interface.
    • Introduce @MustBeOverridden to annotate class or mixin members which must be overridden in all subclasses.
    • Deprecate @alwaysThrows, which can be replaced by using a return type of 'Never'.
    Open source →
  15. 1.8.0 18 May 2022
    Release notes
    • 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.

    Open source →
    Release notes
    • Add @UseResult.unless.
    • The mechanism behind noInline and tryInline from dart2js.dart has been changed. This should not affect the use of these annotations in practice.
    Open source →
  16. 1.7.0 07 Jul 2021
    Release notes

    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.

    Open source →
    Release notes
    • Restore TargetKindExtension and get displayString. We published analyzer 1.7.2 that is compatible with TargetKindExtension.
    Open source →
  17. 1.6.0 03 Jul 2021
    Release notes
    • Remove TargetKindExtension. Adding it was a breaking change, because there are clients, e.g. analyze 1.7.0, that also declare an extension on TargetKind, and also declare get displayString. This causes a conflict.
    Open source →
  18. 1.5.0 02 Jul 2021
    Release notes
    • Add TargetKindExtension.displayString.
    Open source →
  19. 1.4.0 25 May 2021
    Release notes
    • Introduce TargetKind.topLevelVariable that indicates that an annotation is valid on any top-level variable declaration.
    • Introduce @useResult to annotate methods, fields, or getters that return values that should be used - stored, passed as arguments, etc.
    • Updates for documentation.
    Open source →
  20. 1.3.0 02 Feb 2021
    Release notes
    • Stable release for null safety.
    Open source →
  21. 1.3.0-nullsafety.6 03 Nov 2020 pre-release
    Release notes
    • Update SDK constraints to >=2.12.0-0 <3.0.0 based on beta release guidelines.
    Open source →
  22. 1.3.0-nullsafety.5 23 Oct 2020 pre-release
    Release notes
    • Allow prerelease versions of the 2.12 SDK.
    Open source →
  23. 1.3.0-nullsafety.4 09 Oct 2020 pre-release
    Release notes
    • Introduce @internal to annotate elements that should not be used outside of the package in which the element is declared.
    Open source →
  24. 1.3.0-nullsafety.3 22 Sep 2020 pre-release
    Release notes
    • Allow 2.10 stable and 2.11.0 dev SDK versions.
    Open source →
  25. 1.3.0-nullsafety.2 22 Jul 2020 pre-release
    Release notes
    • Update for the 2.10 dev SDK.
    Open source →
  26. 1.3.0-nullsafety.1 17 Jul 2020 pre-release
    Release notes
    • Allow the <=2.9.10 stable SDK.
    Open source →
  27. 1.3.0-nullsafety 09 Jul 2020 pre-release
    Release notes
    • Opt into null safety.
    Open source →
  28. 1.2.4 18 Nov 2020

    Nothing published for this version

  29. 1.2.3 02 Sep 2020

    Nothing published for this version

  30. 1.2.2 09 Jul 2020
    Release notes
    • Removed unawaited because the attempt to move it from package:pedantic caused too many issues. If you see errors about unawaited being declared in two places, please update the version constraints for meta to 1.2.2 or later.
    Open source →
  31. 1.2.1 06 Jul 2020
    Release notes
    • Fixed a bug by adding an import of dart:async so that the code really is compatible with the lower bound of the SDK constraints.
    Open source →
  32. 1.2.0 06 Jul 2020
    Release notes
    • Introduce unawaited to mark invocations that return a Future where it's intentional that the future is not being awaited. (Moved from package:pedantic.)
    • Introduce @doNotStore to annotate methods, getters and functions to indicate that values obtained by invoking them should not be stored in a field or top-level variable.
    Open source →
  33. 1.1.8 30 Oct 2019
    Release notes
    • Introduce @nonVirtual to annotate instance members that should not be overridden in subclasses or when mixed in.
    Open source →
  34. 1.1.7 03 Jan 2019
    Release notes
    • Introduce @sealed to declare that a class or mixin is not allowed as a super-type.

      Only classes in the same package as a class or mixin annotated with @sealed may extend, implement or mix-in the annotated class or mixin. (SDK issue 27372).

    Open source →
  35. 1.1.6 18 Jul 2018
    Release notes
    • Set max SDK version to <3.0.0.
    Open source →
  36. 1.1.5 03 May 2018
    Release notes
    • Introduce @isTest and @isTestGroup to declare a function that is a test, or a test group.
    Open source →
  37. 1.1.2 28 Sep 2017
    Release notes
    • Rollback SDK constraint update for 2.0.0. No longer needed.
    Open source →
  38. 1.1.1 19 Jul 2017
    Release notes
    • Update SDK constraint to be 2.0.0 dev friendly.
    Open source →
  39. 1.1.0 10 Jul 2017
    Release notes
    • Introduce @alwaysThrows to declare that a function always throws (SDK issue 17999). This is first available in Dart SDK 1.25.0-dev.1.0.

      import 'package:meta/meta.dart';
      
      // Without knowing that [failBigTime] always throws, it looks like this
      // function might return without returning a bool.
      bool fn(expected, actual) {
        if (expected != actual)
          failBigTime(expected, actual);
        else
          return True;
      }
      
      @alwaysThrows
      void failBigTime(expected, actual) {
        throw new StateError('Expected $expected, but was $actual.');
      }
      
    Open source →
  40. 1.0.5 31 Mar 2017
    Release notes
    • Introduce @experimental to annotate a library, or any declaration that is part of the public interface of a library (such as top-level members, class members, and function parameters) to indicate that the annotated API is experimental and may be removed or changed at any-time without updating the version of the containing package, despite the fact that it would otherwise be a breaking change.
    Open source →
  41. 1.0.4 20 Sep 2016
    Release notes
    • Introduce @virtual to allow field overrides in strong mode (SDK issue 27384).

      import 'package:meta/meta.dart' show virtual;
      class Base {
        @virtual int x;
      }
      class Derived extends Base {
        int x;
      
        // Expose the hidden storage slot:
        int get superX => super.x;
        set superX(int v) { super.x = v; }
      }
      
    Open source →
  42. 1.0.3 14 Sep 2016
    Release notes
    • Introduce @checked to override a method and tighten a parameter type (SDK issue 25578).

      import 'package:meta/meta.dart' show checked;
      class View {
        addChild(View v) {}
      }
      class MyView extends View {
        // this override is legal, it will check at runtime if we actually
        // got a MyView.
        addChild(@checked MyView v) {}
      }
      main() {
        dynamic mv = new MyView();
        mv.addChild(new View()); // runtime error
      }
      
    Open source →
  43. 1.0.2 15 Aug 2016
    Release notes
    • Introduce @visibleForTesting annotation for declarations that may be referenced only in the library or in a test.
    Open source →
  44. 1.0.1 27 Jun 2016
    Release notes
    • Updated @factory to allow statics and methods returning null.
    Open source →
  45. 0.12.1 18 Apr 2016
    Release notes
    • Fixed markdown in dartdocs.
    Open source →
  46. 0.12.0 12 Apr 2016
    Release notes
    • Introduce @optionalTypeArgs annotation for classes whose type arguments are to be treated as optional.
    Open source →
  47. 0.11.0 06 Apr 2016
    Release notes
    • Added new Required constructor with a means to specify a reason to explain why a parameter is required.
    Open source →
  48. 0.10.0 03 Mar 2016
    Release notes
    • Introduce @factory annotation for methods that must either be abstract or must return a newly allocated object.
    • Introduce @literal annotation that indicates that any invocation of a constructor must use the keyword const unless one or more of the arguments to the constructor is not a compile-time constant.
    Open source →
  49. 0.9.0 26 Feb 2016
    Release notes
    • Introduce @protected annotation for members that must only be called from instance members of subclasses.
    • Introduce @required annotation for optional parameters that should be treated as required.
    • Introduce @mustCallSuper annotation for methods that must be invoked by all overriding methods.
    Open source →
  50. 0.8.8 30 Oct 2013

    Nothing published for this version

  51. 0.8.7 28 Oct 2013

    Nothing published for this version

  52. 0.8.6 24 Oct 2013

    Nothing published for this version

  53. 0.8.5 21 Oct 2013

    Nothing published for this version

  54. 0.8.4 19 Oct 2013

    Nothing published for this version

  55. 0.8.3 17 Oct 2013

    Nothing published for this version

  56. 0.8.2 14 Oct 2013

    Nothing published for this version

  57. 0.8.1 04 Oct 2013

    Nothing published for this version

  58. 0.8.0 03 Oct 2013

    Nothing published for this version

  59. 0.7.6 27 Sep 2013

    Nothing published for this version

  60. 0.7.6+4 01 Oct 2013

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive