Skip to content

Update dependency dart to >=3.8.3 <4.0.0 #438

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jan 8, 2025

This PR contains the following updates:

Package Update Change
dart (source) minor >=3.6.0 <4.0.0 -> >=3.8.3 <4.0.0

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

dart-lang/sdk (dart)

v3.8.3

Compare Source

v3.8.2

Compare Source

v3.8.1

Compare Source

Released on: 2025-05-28

This is a patch release that:

  • Fixes an issue in DDC with late variables being incorrectly captured within
    async function bodies (issue #​60748).

v3.8.0

Compare Source

Released on: 2025-05-20

Language

Dart 3.8 adds null-aware elements to the language. To use them, set
your package's [SDK constraint][language version] lower bound to 3.8
or greater (sdk: '^3.8.0').

Null-aware elements

Null-aware elements make it easier to omit a value from a collection literal if
it's null. The syntax works in list literals, set literals, and map literals.
Within map literals, both null-aware keys and values are supported.
Here is an example a list literal written in both styles,
without using null-aware elements and using them:

String? lunch = isTuesday ? 'tacos!' : null;

var withoutNullAwareElements = [
  if (lunch != null) lunch,
  if (lunch.length != null) lunch.length!,
  if (lunch.length case var length?) length,
];

var withNullAwareElements = [
  ?lunch,
  ?lunch.length,
  ?lunch.length,
];

To learn more about null-aware collection elements,
check out the documentation
and the feature specification.

Libraries
dart:core
  • Added Iterable.withIterator constructor.
dart:io
  • Added HttpClientBearerCredentials.
  • Updated Stdout.supportsAnsiEscapes and Stdin.supportsAnsiEscapes to
    return true for TERM containing tmux values.
dart:html
  • Breaking change: Native classes in dart:html, like HtmlElement, can no
    longer be extended. Long ago, to support custom elements, element classes
    exposed a .created constructor that adhered to the v0.5 spec of web
    components. On this release, those constructors have been removed and with
    that change, the classes can no longer be extended. In a future change, they
    may be marked as interface classes as well. This is a follow up from an
    earlier breaking change in 3.0.0 that removed the registerElement APIs. See
    #​53264 for details.
dart:ffi
  • Added Array.elements which exposes an Iterable over the Array's content.
Tools
Analyzer
  • The analyzer now supports "doc imports," a new comment-based syntax which
    enables external elements to be referenced in documentation comments without
    actually importing them. See the
    documentation

    for details.
  • Code completion is improved to offer more valid suggestions. In particular,
    the suggestions are improved when completing text in a comment reference on a
    documentation comment for an extension, a typedef, or a directive (an import,
    an export, or a library). Additionally, instance members can now be suggested
    in a documentation comment reference.
  • Offer additional assist to wrap a Flutter widget with a FutureBuilder widget.
  • Add a quick assist to wrap with ValueListenableBuilder.
  • Add a quick fix to convert an (illegal) extension field declaration into a
    getter declaration.
  • Add a quick fix to help code comply with a few lint rules that encourage
    omitting types: omit_local_variable_types,
    omit_obvious_local_variable_types, and omit_obvious_property_types.
  • Add a quick fix to create an extension method to resolve an "undefined method
    invocation" error.
  • Renaming a closure parameter is now possible.
  • Renaming a field now adjusts implicit this references in order to avoid
    name collisions.
  • Renaming a field formal parameter now properly renames known super-parameters
    in subclasses in other libraries.
  • Renaming a method parameter now properly renames across the type hierarchy.
  • The "encapsulate field" quick assist now works on final fields.
  • The "inline method" refactoring now properly handles inner closures.
  • The quick fix that adds names to a show clause or removes names from a
    hide clause can now add or remove multiple names simultaneously, in order to
    resolve as many "undefined" errors as possible.
  • The "remove const" quick fix now operates on more types of code.
  • The "add missing required argument" quick fix can now add multiple missing
    required arguments.
  • Add a new warning that reports an import or export directive with multiple
    show or hide clauses, which are never necessary.
  • Add a quick fix for this warning.
  • Add LSP document links for lint rules in analysis options files.
  • Add LSP document links for dependency packages in pubspec files.
  • Fix various issues around patterns, like highlighting, navigation, and
    autocompletion.
  • Add the use_null_aware_elements lint rule.
  • Add the experimental unnecessary_ignore lint rule.
  • (Thanks @​FMorschel for many of the above
    enhancements!)
Dart Development Compiler (dartdevc)

In order to align with dart2js semantics, DDC will now throw a runtime error
when a redirecting factory is torn off and one of its optional non-nullable
parameters is provided no value. The implicit null passed to the factory will
not match the non-nullable type and this will now throw.

In the future this will likely be a compile-time error and will be entirely
disallowed.

Dart to Javascript Compiler (dart2js)

Removed the --experiment-new-rti and --use-old-rti flags.

Dart native compiler

Added cross-compilation support for the
Linux x64 and Linux ARM64 target platforms.

Dart format

In 3.7.0, we released a largely rewritten formatter supporting a new
"tall" style. Since then, we've gotten a lot of feedback and bug
reports and made a number of fixes in response to that.

Features

Some users strongly prefer the old behavior where a trailing comma will be
preserved by the formatter and force the surrounding construct to split. That
behavior is supported again (but off by default) and can enabled by adding this
to a surrounding analysis_options.yaml file:

formatter:
  trailing_commas: preserve

This is similar to how trailing commas work in the old short style formatter
applied to code before language version 3.7.

Bug fixes
  • Don't add a trailing comma in lists that don't allow it, even when there is
    a trailing comment (issue dart-lang/dart_style#1639).
Style changes

The following style changes are language versioned and only
affect code whose [language version][] is 3.8 or later.
Dart code at 3.7 or earlier is formatted the same as it was before.

  • Allow more code on the same line as a named argument or =>.

    // Before:
    function(
      name:
          (param) => another(
            argument1,
            argument2,
          ),
    );
    
    // After:
    function(
      name: (param) => another(
        argument1,
        argument3,
      ),
    );
  • Allow the target or property chain part of a split method chain on the RHS of
    =, :, and =>.

    // Before:
    variable =
        target.property
            .method()
            .another();
    
    // After:
    variable = target.property
        .method()
        .another();
  • Allow the condition part of a split conditional expression on the RHS of =,
    :, and =>.

    // Before:
    variable =
        condition
        ? longThenBranch
        : longElseBranch;
    
    // After:
    variable = condition
        ? longThenBranch
        : longElseBranch;
  • Don't indent conditional branches redundantly after =, :, and =>.

    // Before:
    function(
      argument:
          condition
              ? thenBranch
              : elseBranch,
    )
    
    // After:
    function(
      argument:
          condition
          ? thenBranch
          : elseBranch,
    )
  • Indent conditional branches past the operators.

    // Before:
    condition
        ? thenBranch +
            anotherOperand
        : elseBranch(
          argument,
        );
    
    // After:
    condition
        ? thenBranch +
              anotherOperand
        : elseBranch(
            argument,
          );
  • Block format record types in typedefs:

    // Before:
    typedef ExampleRecordTypedef =
        (
          String firstParameter,
          int secondParameter,
          String thirdParameter,
          String fourthParameter,
        );
    
    // After:
    typedef ExampleRecordTypedef = (
      String firstParameter,
      int secondParameter,
      String thirdParameter,
      String fourthParameter,
    );
  • Eagerly split argument lists whose contents are complex enough to be easier
    to read spread across multiple lines even if they would otherwise fit on a
    single line.

    The heuristic is that the argument list must contain at least three named
    arguments, some of which are nested and some of which are not.

    // Before:
    TabBar(tabs: [Tab(text: 'A'), Tab(text: 'B')], labelColor: Colors.white70);
    
    // After:
    TabBar(
      tabs: [
        Tab(text: 'A'),
        Tab(text: 'B'),
      ],
      labelColor: Colors.white70,
    );

v3.7.3

Compare Source

Released on: 2025-04-16

This is a patch release that:

  • Fixes a performance regression in the analysis server (issue #​60335).

v3.7.2

Compare Source

Released on: 2025-03-12

This is a patch release that:

  • Fixes a bug in dart2wasm that imports a js-string builtin function with a
    non-nullable parameter type where it must use a nullable one (issue #​59899).

v3.7.1

Compare Source

Released on: 2025-02-26

This is a patch release that:

  • Fixes a bug in the DevTools network profiler that was causing network
    traffic to be dropped (issue #​8888).
  • Fixes a bug in DDC that prevents code from compiling when it includes
    factory constructors containing generic local functions (issue #​160338).
  • Fixes a bug in the CFE that didn't correctly mark wildcard variables
    in formal parameters, causing the wildcard variables to appear in
    variable lists while debugging (issue #​60121).

v3.7.0

Compare Source

Released on: 2025-02-12

Language

Dart 3.7 adds wildcard variables and inference using
bounds
to the language. To use
them, set your package's [SDK constraint][language version] lower
bound to 3.7 or greater (sdk: '^3.7.0').

Wildcard variables

Local variables and parameters named _ are now non-binding and they can
be declared multiple times without collisions. You will no longer be able to use
these variables nor access their values. All wildcard variable declaration types
that have this behavior are described in the
wildcard variables specification.

Top-level variables, top-level function names, type names, member names, etc.
are unchanged. They can be named _ and used as they are today.

These are a few examples of where wildcard variables can be used:

Foo(_, this._, super._, void _()) {}

void main() {
  var _ = 1;
  int _ = 2;

  list.where((_) => true);
}
Inference using bounds

With the inference using bounds feature, Dart's type inference
algorithm generates constraints by combining existing constraints with
the declared type bounds, not just best-effort approximations.

This is especially important for F-bounded types, where inference
using bounds correctly infers that, in the example below, X can be
bound to B. Without the feature, the type argument must be specified
explicitly: f<B>(C()):

class A<X extends A<X>> {}

class B extends A<B> {}

class C extends B {}

void f<X extends A<X>>(X x) {}

void main() {
  f(B()); // OK.

  // OK with this feature. Without it, inference fails after detecting
  // that C is not a subtype of A<C>.
  f(C());

  f<B>(C()); // OK.
}

The feature is described in more details in the
inference using bounds specification.

Other language changes
  • Breaking Change #​56893: If a field is promoted to the type Null
    using is or as, this type promotion is now properly accounted for in
    reachability analysis. This makes the type system more self-consistent,
    because it mirrors the behavior of promoted local variables. This change is
    not expected to make any difference in practice.
Tools
Analyzer
  • Add a new 'Go to imports' command to find the import directives that export a
    declaration.
  • Assists and quick fixes that add an import now consider the
    prefer_relative_imports and always_use_package_imports lint rules.
  • Add a new fix that converts a ~/ operation into /, when the ~/
    operation is not available.
  • Add a fix that wraps an expression in await if the expression is currently
    not assignable, but awaiting it would make it assignable.
  • Assists and quick fixes that convert a forEach call into a for-loop now
    consider the prefer_final_in_for_each and always_specify_types lint
    rules.
  • Add an additional fix to correct a cascade_invocations lint rule violation.
  • Offer additional assists to wrap a Flutter widget with an Expanded widget,
    and with a Flexible widget.
  • Offer an assist to "inline" an else-block's inner if-statement with the
    else-block to read else if.
  • Add a fix to use_decorated_box by swapping the Container with
    ColoredBox as suggested by the lint.
  • Add an additional fix to import an unknown prefixed identifier by updating
    the show combinator on an existing import.
  • Add a fix to import an unknown prefixed identifier by adding an
    import directive with the given prefix.
  • Add a fix to import an unknown prefixed identifier by removing a hide
    combinator.
  • Add a fix to import an unknown identifier by adding an import directive with a
    show combinator, and optionally a prefix.
  • Code completion now suggests instance variables when completing inside the
    initializer of a late field.
  • Assists and quick fixes that add a const keyword now consider the
    prefer_const_declarations lint rule, preferring to add const to a variable
    declaration rather than the initial value.
  • Add a fix to add a missing on keyword in an extension declaration.
  • Add a fix to wrap an ambiguous property access or method call in an extension
    override.
    (Thanks @​FMorschel for the above enhancements!
  • The 'sort members' command now considers the sort_constructors_first lint
    rule.
  • The 'extract method' refactoring now uses generic method syntax for
    function-typed parameters.
  • Add quick fixes for more than 30 diagnostics.
  • Add the strict_top_level_inference lint rule.
  • Add the unnecessary_underscores lint rule.
  • Add the experimental specify_nonobvious_property_types lint rule.
  • Add the experimental omit_obvious_property_types lint rule.
  • Add the experimental unnecessary_async lint rule.
  • Add the experimental unsafe_variance lint rule.
  • Remove the package_api_docs lint rule.
  • Remove the unsafe_html lint rule.
Dart format

The formatter implements a new style better suited for the kind of
declarative code that many Dart users are writing today. The new style looks
similar to the style you get when you add trailing commas to argument lists,
except that now the formatter will add and remove those commas for you.

The dart format command uses the language version of
each input file to determine which style it gets. If the language version is 3.6
or lower, the code is formatted with the old style. If 3.7 or later, it gets the
new tall style.

You typically control the language version by setting a min SDK constraint in
your package's pubspec
. This means that when you update the SDK
constraint in your pubspec to move to 3.7, you are also opting in to the new
style.

In order to correctly determine the language version of each file it formats,
dart format (like other dart commands) looks for a package_config.json
file surrounding the files being formatted. This means that you need to run
dart pub get before formatting code in your package.
If you have format
checks in your continuous integration server, you'll want to make sure it runs
dart pub get too.

We don't intend to support both styles indefinitely. At some point in the
future when most of the ecosystem is on 3.7 or later, support for the old style
will be removed.

In addition to the new formatting style, a number of other changes are included,
some of them breaking:

  • Project-wide page width configuration. By long request, you can now
    configure your preferred formatting page width on a project-wide basis. When
    formatting a file, the formatter will look in the file's directory and any
    surrounding directories for an analysis_options.yaml file. If it finds one,
    it looks for YAML like so:

    formatter:
      page_width: 123

    If it finds a page width matching that schema, then the file is formatted
    using that width. Since the formatter will walk the surrounding directories
    until it finds an analysis_options.yaml file, this can be used to globally
    set the page width for an entire directory, package, or even collection of
    packages. Since analysis_options.yaml files already support an include
    key to reference other analysis_options.yaml files, you can define a single
    configuration and share it across a number of packages.

  • Opting out a region of code from formatting. In code formatted using the
    new style, you can use a pair of special marker comments to opt a region of
    code out of automated formatting:

    main() {
      this.isFormatted();
      // dart format off
      no   +   formatting
        +
          here;
      // dart format on
      formatting.isBackOnHere();
    }

    The comments must be exactly // dart format off and // dart format on.
    A file may have multiple regions, but they can't overlap or nest.

    This can be useful for highly structured data where custom layout helps the
    reader understand the data, like large lists of numbers.

  • Overriding the page width for a single file. In code formatted
    using the new tall style, you can use a special marker comment to control the
    page width that it's formatted using:

    // dart format width=30
    main() {
      someExpression +
          thatSplitsAt30;
    }

    This comment must appear before any code in the file and must match that
    format exactly. The width set by the comment overrides the width set by any
    surrounding analysis_options.yaml file.

    This feature is mainly for code generators that generate and immediately
    format code but don't know about any surrounding analysis_options.yaml
    that might be configuring the page width. By inserting this comment in the
    generated code before formatting, it ensures that the code generator's
    behavior matches the behavior of dart format.

    End users should mostly use analysis_options.yaml for configuring their
    preferred page width (or do nothing and continue to use the default page width
    of 80).

  • Breaking change: Remove support for dart format --fix. Instead, use
    dart fix. It supports all of the fixes that dart format --fix could apply
    and many more.

  • Treat the --stdin-name name as a path when inferring language version.
    When reading input on stdin, the formatter still needs to know its language
    version to know what style to apply. If the --stdin-name option is set, then
    that is treated as a file path and the formatter looks for a package config
    surrounding that file path to infer the language version from.

    If you don't want that behavior, pass in an explicit language version using
    --language-version=, or use --language-version=latest to parse the input
    using the latest language version supported by the formatter.

    If --stdin-name and --language-version are both omitted, then the
    formatter parses stdin using the latest supported language version.

  • Rename the --line-length option to --page-width. This is consistent
    with the public API, internal implementation, and docs, which all use "page
    width" to refer to the limit that the formatter tries to fit code into.

    The --line-length name is still supported for backwards compatibility, but
    may be removed at some point in the future. You're encouraged to move to
    --page-width. Use of this option (however it's named) is rare, and will
    likely be even rarer now that project-wide configuration is supported, so
    this shouldn't affect many users.

Dart to Javascript Compiler (dart2js)

The dart2js compiler which is invoked when the command dart compile js is
used has been switched to use an AOT snapshot instead of a JIT snapshot.

Dart Development Compiler (dartdevc)

The dartdevc compiler and kernel_worker utility have been switched to
use an AOT snapshot instead of a JIT snapshot,
the SDK build still includes a JIT snapshot of these tools as
package:build and package:build_web_compiler depend on it.
The AOT snapshot can be used as follows to run DDC:

<dart-sdk>/bin/dartaotruntime <dart-sdk>/bin/snapshots/dartdevc_aot.dart.snapshot <options>
Libraries
dart:html
  • dart:html is marked deprecated and will be removed in an upcoming release.
    Users should migrate to using dart:js_interop and package:web. See
    #​59716.
dart:indexed_db
  • dart:indexed_db is marked deprecated and will be removed in an upcoming
    release. Users should migrate to using dart:js_interop and package:web.
    See #​59716.
dart:io
  • HttpException will be thrown by HttpClient and HttpServer if a NUL
    (0x00) appears in a received HTTP header value.
dart:svg
  • dart:svg is marked deprecated and will be removed in an upcoming release.
    Users should migrate to using dart:js_interop and package:web. See
    #​59716.
dart:web_audio
  • dart:web_audio is marked deprecated and will be removed in an upcoming
    release. Users should migrate to using dart:js_interop and package:web.
    See #​59716.
dart:web_gl
  • dart:web_gl is marked deprecated and will be removed in an upcoming release.
    Users should migrate to using dart:js_interop and package:web. See
    #​59716.
dart:js
  • dart:js is marked deprecated and will be removed in an upcoming release.
    Users should migrate to using dart:js_interop. See #​59716.
dart:js_util
  • dart:js_util is marked deprecated and will be removed in an upcoming
    release. Users should migrate to using dart:js_interop. See #​59716.

v3.6.2

Compare Source

Released on: 2025-01-30

  • Fixes a bug where HttpServer responses were not correctly encoded
    if a "Content-Type" header was set (issue #​59719).
  • Fix dart format to parse code at language version 3.6 so that digit
    separators can be parsed correctly (issue #​59815, dart_style issue
    #​1630).
  • Fixes an issue where the DevTools analytics did not distinguish
    between new and legacy inspector events (issue #​59884).
  • When running dart fix on a folder that contains a library with multiple
    files and more than one needs a fix, the fix will now be applied correctly
    only once to each file (issue #​59572).

v3.6.1

Compare Source

Released on: 2025-01-08

  • When inside a pub workspace, pub get will now delete stray
    .dart_tool/package_config.json files in directories between the
    workspace root and workspace directories. Preventing confusing behavior
    when migrating a repository to pub workspaces (issue pub#4445).
  • Fixes crash during AOT and dart2wasm compilation which was caused by
    the incorrect generic covariant field in a constant object (issue
    #​57084).
  • Fixes analysis options discovery in the presence of workspaces
    (issue #​56552).

BASE (d73f7bd Generate GeneralizingAstVisitor, TimedAstVisitor, `Analy)


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copy link
Contributor Author

renovate bot commented Jan 8, 2025

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: frontend/pubspec.lock
Command failed: flutter pub get --no-precompile
The current Dart SDK version is 3.8.1.

Because financrr_frontend requires SDK version >=3.8.3 <4.0.0, version solving failed.
Failed to update packages.

@renovate renovate bot changed the title Update dependency dart to >=3.6.1 <4.0.0 Update dependency dart to >=3.6.2 <4.0.0 Jan 30, 2025
@renovate renovate bot force-pushed the renovate/dart-3.x branch from 2d0118d to b9b6ec5 Compare January 30, 2025 13:23
@renovate renovate bot force-pushed the renovate/dart-3.x branch from b9b6ec5 to 9c40562 Compare February 12, 2025 12:45
@renovate renovate bot changed the title Update dependency dart to >=3.6.2 <4.0.0 Update dependency dart to >=3.7.0 <4.0.0 Feb 12, 2025
@renovate renovate bot force-pushed the renovate/dart-3.x branch from 9c40562 to 77c3aee Compare February 26, 2025 19:06
@renovate renovate bot changed the title Update dependency dart to >=3.7.0 <4.0.0 Update dependency dart to >=3.7.1 <4.0.0 Feb 26, 2025
@renovate renovate bot force-pushed the renovate/dart-3.x branch from 77c3aee to 967258a Compare March 12, 2025 10:57
@renovate renovate bot changed the title Update dependency dart to >=3.7.1 <4.0.0 Update dependency dart to >=3.7.2 <4.0.0 Mar 12, 2025
@renovate renovate bot force-pushed the renovate/dart-3.x branch from 967258a to f67aa30 Compare April 17, 2025 12:27
@renovate renovate bot changed the title Update dependency dart to >=3.7.2 <4.0.0 Update dependency dart to >=3.7.3 <4.0.0 Apr 17, 2025
@renovate renovate bot force-pushed the renovate/dart-3.x branch 2 times, most recently from 32c3373 to f19111a Compare April 27, 2025 16:34
@renovate renovate bot added the pub label Apr 27, 2025
@renovate renovate bot force-pushed the renovate/dart-3.x branch from f19111a to d8f9792 Compare May 20, 2025 19:43
@renovate renovate bot changed the title Update dependency dart to >=3.7.3 <4.0.0 Update dependency dart to >=3.8.0 <4.0.0 May 20, 2025
@renovate renovate bot force-pushed the renovate/dart-3.x branch from d8f9792 to 4b9cf7c Compare June 1, 2025 07:34
@renovate renovate bot changed the title Update dependency dart to >=3.8.0 <4.0.0 Update dependency dart to >=3.8.1 <4.0.0 Jun 1, 2025
@renovate renovate bot force-pushed the renovate/dart-3.x branch from 4b9cf7c to 855d459 Compare July 20, 2025 11:57
@renovate renovate bot changed the title Update dependency dart to >=3.8.1 <4.0.0 Update dependency dart to >=3.8.2 <4.0.0 Jul 20, 2025
@renovate renovate bot force-pushed the renovate/dart-3.x branch from 855d459 to 6998007 Compare August 4, 2025 21:28
@renovate renovate bot changed the title Update dependency dart to >=3.8.2 <4.0.0 Update dependency dart to >=3.8.3 <4.0.0 Aug 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant