Skip to content
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

[3.2] Update breaking changes page #5331

Merged
merged 5 commits into from
Nov 15, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 93 additions & 22 deletions src/resources/breaking-changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,45 @@ To be notified about future breaking changes, join the [Dart announce][] group.

## Not yet released to stable

### Libraries
{: .no_toc}

#### `dart:nativewrappers`

* [Marked classes belonging to `NativeWrapperClass` as `base`][51896] so that
none of their subtypes can be implemented.

#### `dart:typed_data`

* **Deprecated**: [Unmodifiable view classes for typed data][53218].


[51896]: https://github.com/dart-lang/sdk/issues/51896
[53218]: https://github.com/dart-lang/sdk/issues/53218

{% comment %}
Create new section from these headers for each release.
If no changes exist in a section (e.g. Language, `dart:async`, etc.),
don't include the section header.

## Released in x.x.x

### Language
{: .no_toc}

### Libraries
{: .no_toc}

#### (`dart:core`, `package:js`, etc)

### Tools
{: .no_toc}

#### (Dart VM, Pub, Linter, `dart2js`, etc)
{% endcomment %}

## Released in 3.2.0

### Language
{: .no_toc}

Expand All @@ -57,6 +96,10 @@ To be notified about future breaking changes, join the [Dart announce][] group.
### Libraries
{: .no_toc}

#### `dart:cli`

* **Experimental** **Deprecated**: [The `waitFor` function.][52121]

#### `dart:convert`

* [Changed return types of `utf8.encode()` and `Utf8Codec.encode()`][52801]
Expand All @@ -66,52 +109,80 @@ To be notified about future breaking changes, join the [Dart announce][] group.

* **Deprecated**: The `Service.getIsolateID` method.

#### `dart:ffi`

* [Changed `NativeCallable.nativeFunction` so calls now throw an error if
the receiver is already closed][53311], instead of returning `nullptr`.

#### `dart:io`

* [Eliminated trailing whitespace from HTTP headers][53005].
* [Inserted a space at the fold point of folded header values][53227]
that `HttpClientResponse.headers` and `HttpRequest.headers` return.

#### `dart:js_interop`

* **Experimental** **Removed**: `JSNumber.toDart` in favor of `toDartDouble` and
`toDartInt`.
* **Experimental** **Removed**: `Object.toJS` in favor of `Object.toJSBox.`
* **Experimental**: Restricted external JS interop APIs using `dart:js_interop`
to a set of allowed types.
* **Experimental**: Prohibited use of `isNull` and `isUndefined` on dart2wasm.
* **Experimental**: Changed `typeofEquals` and `instanceof` APIs to both return
bool instead of `JSBoolean`.
Also, `typeofEquals` now takes `String` instead of `JSString`.
* **Experimental**: Changed `JSAny` and `JSObject` types to only implementable,
not extendable, by user `@staticInterop` types.
* **Experimental**: Changed `JSArray.withLength` to take `int` instead of `JSNumber`.

### Tools
{: .no_toc}

#### Dart Dev Compiler (DDC) and Dart2js
#### Development JavaScript compiler (DDC)

* [Added interceptors for JavaScript `Symbol` and `BigInt` types][53106];
they should no longer be used with `package:js` classes.

#### Production JavaScript compiler (dart2js)

* [Added interceptors for JavaScript `Symbol` and `BigInt` types][53106];
they should no longer be used with `package:js` classes.

#### Analyzer

* **Language versioned**: [Private final field promotion][2020] might cause the following
analyzer warnings to trigger on existing code that previously passed analysis:

* [`unnecessary_non_null_assertion`](/tools/diagnostic-messages#unnecessary_non_null_assertion)
* [`invalid_null_aware_operator`](/tools/diagnostic-messages#invalid_null_aware_operator)
* [`unnecessary_cast`](/tools/diagnostic-messages#unnecessary_cast)

```dart
class C {
final num? _x = null;
void test() {
if (_x != null) {
print(_x! * 2); // unnecessary_non_null_assertion
print(_x?.abs()); // invalid_null_aware_operator
}
if (_x is int) {
print((_x as int).bitLength); // unnecessary_cast
}
}
}
```

[53167]: https://github.com/dart-lang/sdk/issues/53167
[52121]: https://github.com/dart-lang/sdk/issues/52121
[52801]: https://github.com/dart-lang/sdk/issues/52801
[53311]: https://github.com/dart-lang/sdk/issues/53311
[53005]: https://github.com/dart-lang/sdk/issues/53005
[53227]: https://github.com/dart-lang/sdk/issues/53227
[53106]: https://github.com/dart-lang/sdk/issues/53106
[2020]: https://github.com/dart-lang/language/issues/2020


{% comment %}
Create new section from these headers for each release.
If no changes exist in a section (e.g. Language, `dart:async`, etc.),
don't include the section header.

## Released in x.x.x

### Language
{: .no_toc}

### Libraries
{: .no_toc}

#### (`dart:core`, `package:js`, etc)

### Tools
{: .no_toc}

#### (Dart VM, Pub, Linter, `dart2js`, etc)
{% endcomment %}

## Released in 3.1.0

### Libraries
Expand Down