chore(deps): update dependency dart to v3 - autoclosed #66
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
>=2.7.0 <3.0.0-><4.0.0Release Notes
dart-lang/sdk (dart)
v3.9.4Compare Source
Released on: 2025-09-30
Pub
dart pub get --examplewill now resolveexample/folders in theentire workspace, not only in the root package.
This fixes dart-lang/pub#4674 that made
flutter pub getcrash if the examples had not been resolved before resolving the workspace.
v3.9.3Compare Source
Released on: 2025-09-09
Tools
Development JavaScript compiler (DDC)
static calls are deeply nested within a closure.
When present this led to builds timing out or
taking several minutes rather than several seconds.
v3.9.2Compare Source
Released on: 2025-08-27
Tools
Development JavaScript compiler (DDC)
hot reload in a web development environment.
This led to possible side effects being triggered early or
crashes during the hot reload if the getter throws an exception.
v3.9.1Compare Source
Released on: 2025-08-20
This is a patch release that:
clicking 'Clear' on the Network Screen (issue dart-lang/sdk#61187).
a large amount of literals (issue flutter/flutter#172626).
tag_pattern,where the
pubspec.lockfile would not be stable whenrunning
dart pub get(issue dart-lang/pub#4644).v3.9.0Compare Source
Released on: 2025-08-13
Language
Dart 3.9 assumes null safety when computing type promotion, reachability, and
definite assignment. This makes these features produce more accurate results for
modern Dart programs. As a result of this change, more dead_code warnings may be
produced. To take advantage of these improvements, set your package's SDK
constraint lower bound to 3.9 or greater (
sdk: '^3.9.0').Tools
Analyzer
The dart command-line tool commands that use the analysis server now run
the AOT-compiled analysis server snapshot. These include
dart analyze,dart fix, anddart language-server.There is no functional difference when using the AOT-compiled analysis server
snapshot. But various tests indicate that there is a significant speedup in
the time to analyze a project.
In case of an incompatibility with the AOT-compiled snapshot, a
--no-use-aot-snapshotflag may be passed to these commands. (Please file anissue with the appropriate project if you find that you need to use this
flag! It will be removed in the future.) This flag directs the tool to revert
to the old behavior, using the JIT-compiled analysis server snapshot. To
direct the Dart Code plugin for VS Code to pass this flag, use the
dart.analyzerAdditionalArgssetting. To direct the DartIntelliJ plugin to pass this flag, use the
dart.server.additional.argumentsregistry property, similar to these steps.
Add the
switch_on_typelint rule.Add the
unnecessary_unawaitedlint rule.Support a new annotation,
@awaitNotRequired, which is used by thediscarded_futuresandunawaited_futureslint rules.Improve the
avoid_types_as_parameter_nameslint rule to include typeparameters.
The definition of an "obvious type" is expanded for the relevant lint rules,
to include the type of a parameter.
Many small improvements to the
discarded_futuresandunawaited_futureslint rules.
The code that calculates fixes and assists has numerous performance
improvements.
A new "Remove async" assist is available.
A new "Convert to normal parameter" assist is available for field formal
parameters.
New fixes are available for the following diagnostics:
for_in_of_invalid_typeimplicit_this_reference_in_initializerprefer_foreachundefined_operatoruse_if_null_to_convert_nulls_to_boolsNumerous fixes and improvements are included in the "create method," "create
getter," "create mixin," "add super constructor," and "replace final with
var" fixes.
Dependencies listed in
dependency_overridesin apubspec.yamlfile nowhave document links to pub.dev.
Improvements to type parameters and type arguments in the LSP type hierarchy.
Folding try/catch/finally blocks is now supported for LSP clients.
Improve code completion suggestions with regards to operators, extension
members, named parameters, doc comments, patterns, collection if-elements and
for-elements, and more.
Improve syntax highlighting of escape sequences in string literals.
Add "library cycle" information to the diagnostic pages.
(Thanks @FMorschel for many of the above
enhancements!)
Dart build
dart build -f exe <target>is nowdart build cli --target=<target>. Seedart build cli --helpfor more info.Dart Development Compiler (dartdevc)
Outstanding async code now checks and cancels itself after a hot restart if
it was started in a different generation of the application before the
restart. This includes outstanding
Futures created by callingJSPromise.toDartfrom thedart:js_interopand the underlying thedart:js_utilhelperpromiseToFuture. Dart callbacks will not be run, butcallbacks on the JavaScript side will still be executed.
Fixed a soundness issue that allowed direct invocation of the value returned
from a getter without any runtime checks when the getter's return type was a
generic type argument instantiated as
dynamicorFunction.A getter defined as:
Could trigger the issue with a direct invocation:
Dart native compiler
Added cross-compilation support for
target architectures of
arm(ARM32) andriscv64(RV64GC)when the target OS is Linux.
Pub
Git dependencies can now be version-solved based on git tags.
Use a
tag_patternin the descriptor and a version constraint, and allcommits matching the pattern will be considered during resolution. For
example:
Starting from language version 3.9 the
flutterconstraint upper bound is nowrespected in your root package. For example:
Results in
dart pub getfailing if invoked with a version ofthe Flutter SDK different from
3.33.0.The upper bound of the flutter constraint is still ignored in
packages used as dependencies.
See flutter/flutter#95472 for details.
v3.8.3Compare Source
Released on: 2025-07-31
This is a patch release that:
v3.8.2Compare Source
Released on: 2025-07-16
This is a patch release that:
v3.8.1Compare Source
Released on: 2025-05-28
This is a patch release that:
async function bodies (issue #60748).
v3.8.0Compare 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:
To learn more about null-aware collection elements,
check out the documentation
and the feature specification.
Libraries
dart:coreIterable.withIteratorconstructor.dart:ioHttpClientBearerCredentials.Stdout.supportsAnsiEscapesandStdin.supportsAnsiEscapestoreturn
trueforTERMcontainingtmuxvalues.dart:htmldart:html, likeHtmlElement, can nolonger be extended. Long ago, to support custom elements, element classes
exposed a
.createdconstructor that adhered to the v0.5 spec of webcomponents. 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
registerElementAPIs. See#53264 for details.
dart:ffiArray.elementswhich exposes anIterableover theArray's content.Tools
Analyzer
enables external elements to be referenced in documentation comments without
actually importing them. See the
documentation
for details.
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.
FutureBuilderwidget.ValueListenableBuilder.getter declaration.
omitting types:
omit_local_variable_types,omit_obvious_local_variable_types, andomit_obvious_property_types.invocation" error.
thisreferences in order to avoidname collisions.
in subclasses in other libraries.
showclause or removes names from ahideclause can now add or remove multiple names simultaneously, in order toresolve as many "undefined" errors as possible.
required arguments.
showorhideclauses, which are never necessary.autocompletion.
use_null_aware_elementslint rule.unnecessary_ignorelint rule.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-rtiand--use-old-rtiflags.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.yamlfile:This is similar to how trailing commas work in the old short style formatter
applied to code before language version 3.7.
Bug fixes
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
=>.Allow the target or property chain part of a split method chain on the RHS of
=,:, and=>.Allow the condition part of a split conditional expression on the RHS of
=,:, and=>.Don't indent conditional branches redundantly after
=,:, and=>.Indent conditional branches past the operators.
Block format record types in typedefs:
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.
v3.7.3Compare Source
Released on: 2025-04-16
This is a patch release that:
v3.7.2Compare Source
Released on: 2025-03-12
This is a patch release that:
js-stringbuiltin function with anon-nullable parameter type where it must use a nullable one (issue #59899).
v3.7.1Compare Source
Released on: 2025-02-26
This is a patch release that:
traffic to be dropped (issue #8888).
factory constructors containing generic local functions (issue #160338).
in formal parameters, causing the wildcard variables to appear in
variable lists while debugging (issue #60121).
v3.7.0Compare 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 canbe 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:
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,
Xcan bebound to
B. Without the feature, the type argument must be specifiedexplicitly:
f<B>(C()):The feature is described in more details in the
inference using bounds specification.
Other language changes
Nullusing
isoras, this type promotion is now properly accounted for inreachability 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
declaration.
prefer_relative_importsandalways_use_package_importslint rules.~/operation into/, when the~/operation is not available.
awaitif the expression is currentlynot assignable, but awaiting it would make it assignable.
forEachcall into a for-loop nowconsider the
prefer_final_in_for_eachandalways_specify_typeslintrules.
cascade_invocationslint rule violation.Expandedwidget,and with a
Flexiblewidget.else-block to read
else if.use_decorated_boxby swapping theContainerwithColoredBoxas suggested by the lint.the
showcombinator on an existing import.import directive with the given prefix.
hidecombinator.
showcombinator, and optionally a prefix.initializer of a late field.
prefer_const_declarationslint rule, preferring to addconstto a variabledeclaration rather than the initial value.
onkeyword in an extension declaration.override.
(Thanks @FMorschel for the above enhancements!
sort_constructors_firstlintrule.
function-typed parameters.
strict_top_level_inferencelint rule.unnecessary_underscoreslint rule.specify_nonobvious_property_typeslint rule.omit_obvious_property_typeslint rule.unnecessary_asynclint rule.unsafe_variancelint rule.package_api_docslint rule.unsafe_htmllint 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 formatcommand uses the language version ofeach 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 otherdartcommands) looks for apackage_config.jsonfile surrounding the files being formatted. This means that you need to run
dart pub getbefore formatting code in your package. If you have formatchecks in your continuous integration server, you'll want to make sure it runs
dart pub gettoo.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.yamlfile. If it finds one,it looks for YAML like so:
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.yamlfile, this can be used to globallyset the page width for an entire directory, package, or even collection of
packages. Since
analysis_options.yamlfiles already support anincludekey to reference other
analysis_options.yamlfiles, you can define a singleconfiguration 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:
The comments must be exactly
// dart format offand// 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:
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.yamlfile.This feature is mainly for code generators that generate and immediately
format code but don't know about any surrounding
analysis_options.yamlthat 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.yamlfor configuring theirpreferred page width (or do nothing and continue to use the default page width
of 80).
Breaking change: Remove support for
dart format --fix. Instead, usedart fix. It supports all of the fixes thatdart format --fixcould applyand many more.
Treat the
--stdin-namename 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-nameoption is set, thenthat 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=latestto parse the inputusing the latest language version supported by the formatter.
If
--stdin-nameand--language-versionare both omitted, then theformatter parses stdin using the latest supported language version.
Rename the
--line-lengthoption to--page-width. This is consistentwith 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-lengthname is still supported for backwards compatibility, butmay 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 willlikely 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 jsisused 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:buildandpackage:build_web_compilerdepend on it.The AOT snapshot can be used as follows to run DDC:
Libraries
dart:htmldart:htmlis marked deprecated and will be removed in an upcoming release.Users should migrate to using
dart:js_interopandpackage:web. See#59716.
dart:indexed_dbdart:indexed_dbis marked deprecated and will be removed in an upcomingrelease. Users should migrate to using
dart:js_interopandpackage:web.See #59716.
dart:ioHttpExceptionwill be thrown byHttpClientandHttpServerif aNUL(
0x00) appears in a received HTTP header value.dart:svgdart:svgis marked deprecated and will be removed in an upcoming release.Users should migrate to using
dart:js_interopandpackage:web. See#59716.
dart:web_audiodart:web_audiois marked deprecated and will be removed in an upcomingrelease. Users should migrate to using
dart:js_interopandpackage:web.See #59716.
dart:web_gldart:web_glis marked deprecated and will be removed in an upcoming release.Users should migrate to using
dart:js_interopandpackage:web. See#59716.
dart:jsdart:jsis marked deprecated and will be removed in an upcoming release.Users should migrate to using
dart:js_interop. See #59716.dart:js_utildart:js_utilis marked deprecated and will be removed in an upcomingrelease. Users should migrate to using
dart:js_interop. See #59716.v3.6.2Compare Source
Released on: 2025-01-30
HttpServerresponses were not correctly encodedif a "Content-Type" header was set (issue #59719).
dart formatto parse code at language version 3.6 so that digitseparators can be parsed correctly (issue #59815, dart_style issue
#1630).
between new and legacy inspector events (issue #59884).
dart fixon a folder that contains a library with multiplefiles and more than one needs a fix, the fix will now be applied correctly
only once to each file (issue #59572).
v3.6.1Compare Source
Released on: 2025-01-08
pub getwill now delete stray.dart_tool/package_config.jsonfiles in directories between theworkspace root and workspace directories. Preventing confusing behavior
when migrating a repository to pub workspaces (issue pub#4445).
the incorrect generic covariant field in a constant object (issue
#57084).
(issue #56552).
v3.6.0Compare Source
Released on: 2024-12-11
Language
Dart 3.6 adds digit separators to the language. To use them, set your
package's [SDK constraint][language version] lower bound to 3.6 or greater
(
sdk: '^3.6.0').Digit separators
Digits in number literals (decimal integer literals, double literals,
scientific notation literals, and hexadecimal literals) can now include
underscores between digits, as "digit separators." The separators do not change
the value of a literal, but can serve to make the number more readable.
Separators are not allowed at the start of a number (this would be parsed as an
identifier), at the end of a number, or adjacent to another character in a
number, like
.,x, or theein scientific notation.to perform type inference on the operand of a
throwexpression has beenchanged from the "unknown type" to
Object. This makes the type system moreself-consistent, because it reflects the fact that it's not legal to throw
null. This change is not expected to make any difference in practice.Libraries
dart:ioBreaking Change #52444: Removed the
Platform()constructor, whichhas been deprecated since Dart 3.1.
Breaking Change #53618:
HttpClientnow responds to a redirectthat is missing a "Location" header by throwing
RedirectException, insteadof
StateError.dart:js_interopJSArrayBuffer,JSDataView, and concrete typed arraytypes e.g.
JSInt8Array.lengthand[]/[]=operators toJSArray.toJSCaptureThissothisis passed in from JavaScript to thecallback as the first parameter.
frommethod onJSArrayto create aJSArrayfrom a givenJavaScript iterable or array-like object.
Tools
CFE
DOWN algorithms in the CFE are changed to match the specification
and the corresponding implementations in the Analyzer. The upper and
lower closures of type schemas are now computed just before they are
passed into the subtype testing procedure instead of at the very
beginning of the UP and DOWN algorithms.
Dart format
this.orsuper..asandifclauses.Wasm compiler (dart2wasm)
dart.library.jsis now false on conditional imports indart2wasm. Note that it was already a static error to import
dart:jsdirectly (see #55266).
Pub
Support for workspaces. This allows you to develop and resolve multiple
packages from the same repo together. See https://dart.dev/go/pub-workspaces
for more info.
New command
dart pub bump. Increments the version number of the currentpackage.
For example:
dart pub bump minorwill change the version from1.2.3to1.3.0.New validation:
dart pub publishwill warn if yourgit statusis notclean.
New flag
dart pub upgrade --unlock-transitive.dart pub upgrade --unlock-transitive pkg, will unlock and upgrade all thedependencies of
pkginstead of justpkg.Analyzer
use_truncating_divisionlint rule.omit_obvious_local_variable_typeslint rule.specify_nonobvious_local_variable_typeslint rule.avoid_futureor_voidlint rule."invert conditional expression".
v3.5.4Compare Source
v3.5.3Compare Source
issue resulting in a missing tab bar when DevTools is embedded in
IntelliJ and Android Studio (issue#56607).
DevTools is opened instead of only the first time (issue#56607).
embedded in IntelliJ and Android Studio (issue#56607).
v3.5.2Compare Source
ZLibDecoderwould incorrectly attempt to decompress datapast the end of the zlib footer (issue #56481).
dartfromPATHcould result in some commands notworking as expected (issues #56080, #56306, #56499).
setContextRootsrequests orbeing provided incorrect context roots in multi-package workspaces (issue
#56475).
v3.5.1Compare Source
include:inanalysis_options.yamlfile in a nestedfolder in the workspace (issue#56464).
dart compile wasmwhen optimizations areenabled (issue #56423).
dart2wasmcompiler in unsound-O3/-O4modes where aimplicit setter for a field of generic type will store
nullinstead of thefield value (issue #56374).
dart2wasmcompiler that can trigger in certain situationswhen using partial instantiations of generic tear-offs (constructors or static
methods) in constant expressions (issue #56440).
also known is UP, is provided the missing implementation for
StructuralParameterTypeobjects. In some corner cases cases thelacking implementation resulted in a crash of the compiler (issue #56457).
v3.5.0Compare Source
Language
Breaking Change #55418: The context used by the compiler to perform
type inference on the operand of an
awaitexpression has been changed tomatch the behavior of the analyzer. This change is not expected to make any
difference in practice.
Breaking Change #55436: The context used by the compiler to perform
type inference on the right hand side of an "if-null" expression (
e1 ?? e2)has been changed to match the behavior of the analyzer. change is expected to
have low impact on real-world code. But in principle it could cause
compile-time errors or changes in runtime behavior by changing inferred
types. The old behavior can be restored by supplying explicit types.
Libraries
dart:coreDateTimeon the web platform now storesmicroseconds. The web implementation is now practically compatible with the
native implementation, where it is possible to round-trip a timestamp in
microseconds through a
DateTimevalue without rounding the lowerdigits. This change might be breaking for apps that rely in some way on the
.microsecondcomponent always being zero, for example, expecting only threefractional second digits in the
toString()representation. Smalldiscrepancies in arithmetic due to rounding of web integers may still occur
for extreme values, (1)
microsecondsSinceEpochoutside the safe range,corresponding to dates with a year outside of 1685..2255, and (2) arithmetic
(
add,subtract,difference) where theDurationargument or resultexceeds 570 years.
dart:ioBreaking Change #55786:
SecurityContextis nowfinal. This meansthat
SecurityContextcan no longer be subclassed.SecurityContextsubclasses were never able to interoperate with other parts of
dart:io.A
ConnectionTaskcan now be created using an existingFuture<Socket>.Fixes #55562.
dart:typed_dataBreaking Change #53785: The unmodifiable view classes for typed data
have been removed. These classes were deprecated in Dart 3.4.
To create an unmodifiable view of a typed-data object, use the
asUnmodifiableView()methods added in Dart 3.3.Added superinterface
TypedDataListto typed data lists, implementing bothListandTypedData. Allows abstracting over all such lists without losingaccess to either the
Listor theTypedDatamembers.A
ByteDatais still only aTypedData, not a list.dart:js_interopBreaking Change #55508:
importModulenow accepts aJSAnyinsteadof a
Stringto support other JS values as well, likeTrustedScriptURLs.Breaking Change #55267:
isTruthyandnotnow returnJSBooleaninstead of
boolto be consistent with the other operators.Breaking Change
ExternalDartReferenceno longer implementsObject.ExternalDartReferencenow accepts a type parameterTwith a bound ofObject?to capture the type of the Dart object that is externalized.ExternalDartReferenceToObject.toDartObjectnow returns aT.ExternalDartReferenceToObjectandObjectToExternalDartReferenceare nowextensions on
TandExternalDartReference<T>, respectively, whereT extends Object?. See #55342 and #55536 for more details.Fixed some consistency issues with
Function.toJSacross all compilers.Specifically, calling
Function.toJSon the same function gives you a new JSfunction (see issue #55515), the maximum number of arguments that are
passed to the JS function is determined by the static type of the Dart
function, and extra arguments are dropped when passed to the JS function in
all compilers (see #48186).
Tools
Analyzer
unintended_html_in_doc_commentlint rule.invalid_runtime_check_with_js_interop_typeslint rule.document_ignoreslint rule.the switch becomes exhaustive.
constkeywords to child nodes, whereappropriate.
Pub
dart pub downgrade --tightento restrict lower bounds ofdependencies' constraints to the minimum that can be resolved.
Dart Runtime
The Dart VM only executes sound null safe code, running of unsound null
safe code using the option
--no-sound-null-safetyhas been removed.Dart_NewListOfandDart_IsLegacyTypefunctions areremoved from Dart C API.
Dart_DefaultCanonicalizeUrlis removed from the Dart C API.v3.4.4Compare Source
This is a patch release that:
Fixes an issue where pub would crash when failing to fetch advisories from
the server. (issue pub#4269).
Fixes an issue where
const bool.fromEnvironment('dart.library.ffi')is trueand conditional import condition
dart.library.ffiis true in dart2wasm.(issue #55948).
Fixes an issue where FFI calls with variadic arguments on MacOS Arm64
would mangle the arguments. (issue #55943).
v3.4.3Compare Source
This is a patch release that:
Fixes an issue where
DART_VM_OPTIONSwere not correctly parsed forstandalone Dart executables created with
dart compile exe(issue#55818).
Fixes a bug in dart2wasm that can result in a runtime error that says
array.new_fixed()has a constant larger than 10000 (issue #55873).Adds support for
--enable-experimentflag todart compile wasm(issue #55894).
Fixes an issue in dart2wasm compiler that can result in incorrect
nullability of type parameter (see #55895).
Disallows
dart:ffiimports in user code in dart2wasm (e.g. issue[#53910]) as dart2wasm's currently only supports a small subset of
dart:ffi(issue #55890).v3.4.2Compare Source
This is a patch release that:
Marks
dart compile wasmas no longer experimental.Fixes two bugs in exception handling in
asyncfunctions in dart2wasm(issues #55347, #55457).
Fixes restoration of
thisvariable insync*andasyncfunctions indart2wasm.
Implements missing control flow constructs (exceptions, switch/case with
yields) in
sync*in dart2wasm (issues #51342, #51343).Fixes a bug dart2wasm compiler that surfaces as a compiler crash when indexing
lists where the compiler proofs the list to be constant and the index is
out-of-bounds (issue #55817).
v3.4.1Compare Source
This is a patch release that:
Fixes a bug in the CFE which could manifest as compilation errors of Flutter
web apps when compiled with dart2wasm (issue #55714).
Fixes a bug in the pub client, such that
dart runwill not interfere withFlutter l10n (at least for most cases) (issue #55758).
v3.4.0[Compare Source](https://redirect.github.com/dart-lang/sdk/compar
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.
This PR was generated by Mend Renovate. View the repository job log.