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

[spec] clean up AddDisposableResource #150

Merged
merged 1 commit into from
Mar 22, 2023
Merged

Conversation

ljharb
Copy link
Member

@ljharb ljharb commented Feb 14, 2023

This AO is only ever called with a value and no method, or, with an undefined value and a method.

Another alternative, which might be cleaner, is making both method and value optional, and add an assertion that only one, not both, are present.

This AO is only ever called with a value and no method, or, with an undefined value and a method
@github-actions
Copy link

A preview of this PR can be found at https://tc39.es/proposal-explicit-resource-management/pr/150.

@rbuckton rbuckton merged commit 3b3345a into main Mar 22, 2023
@rbuckton rbuckton deleted the AddDisposableResource branch March 22, 2023 21:02
zloirock added a commit to zloirock/core-js that referenced this pull request Mar 23, 2023
ljharb added a commit to es-shims/DisposableStack that referenced this pull request Mar 24, 2023
Vylpes pushed a commit to Vylpes/Droplet that referenced this pull request Dec 25, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [core-js](https://github.com/zloirock/core-js) | dependencies | minor | [`3.12.0` -> `3.34.0`](https://renovatebot.com/diffs/npm/core-js/3.12.0/3.34.0) |

---

### Release Notes

<details>
<summary>zloirock/core-js (core-js)</summary>

### [`v3.34.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3340---20231206)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.33.3...v3.34.0)

-   [`Array` grouping proposal](https://github.com/tc39/proposal-array-grouping):
    -   Methods:
        -   `Object.groupBy`
        -   `Map.groupBy`
    -   Moved to stable ES, [November 2023 TC39 meeting](https://github.com/tc39/proposal-array-grouping/issues/60)
    -   Added `es.` namespace modules, `/es/` and `/stable/` namespaces entries
-   [`Promise.withResolvers` proposal](https://github.com/tc39/proposal-promise-with-resolvers):
    -   Method:
        -   `Promise.withResolvers`
    -   Moved to stable ES, [November 2023 TC39 meeting](https://twitter.com/robpalmer2/status/1729216597623976407)
    -   Added `es.` namespace module, `/es/` and `/stable/` namespaces entries
-   Fixed a web incompatibility issue of [`Iterator` helpers proposal](https://github.com/tc39/proposal-iterator-helpers), [proposal-iterator-helpers/287](https://github.com/tc39/proposal-iterator-helpers/pull/287) and some following changes, November 2023 TC39 meeting
-   Added [`Uint8Array` to / from base64 and hex stage 2 proposal](https://github.com/tc39/proposal-arraybuffer-base64):
    -   Methods:
        -   `Uint8Array.fromBase64`
        -   `Uint8Array.fromHex`
        -   `Uint8Array.prototype.toBase64`
        -   `Uint8Array.prototype.toHex`
-   Relaxed some specific cases of [`Number.fromString`](https://github.com/tc39/proposal-number-fromstring) validation before clarification of [proposal-number-fromstring/24](https://github.com/tc39/proposal-number-fromstring/issues/24)
-   Fixed `@@&#8203;toStringTag` property descriptors on DOM collections, [#&#8203;1312](https://github.com/zloirock/core-js/issues/1312)
-   Fixed the order of arguments validation in `Array` iteration methods, [#&#8203;1313](https://github.com/zloirock/core-js/issues/1313)
-   Some minor `atob` / `btoa` improvements
-   Compat data improvements:
    -   [`Promise.withResolvers`](https://github.com/tc39/proposal-promise-with-resolvers) marked as shipped from FF121

### [`v3.33.3`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3333---20231120)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.33.2...v3.33.3)

-   Fixed an issue getting the global object on Duktape, [#&#8203;1303](https://github.com/zloirock/core-js/issues/1303)
-   Avoid sharing internal `[[DedentMap]]` from [`String.dedent` proposal](https://github.com/tc39/proposal-string-dedent) between `core-js` instances before stabilization of the proposal
-   Some internal untangling
-   Compat data improvements:
    -   Added [Deno 1.38](https://deno.com/blog/v1.38) compat data mapping
    -   [`Array.fromAsync`](https://github.com/tc39/proposal-array-from-async) marked as [supported from Deno 1.38](https://github.com/denoland/deno/pull/21048)
    -   [`Symbol.{ dispose, asyncDispose }`](https://github.com/tc39/proposal-explicit-resource-management) marked as [supported from Deno 1.38](https://github.com/denoland/deno/pull/20845)
    -   Added Opera Android 79 compat data mapping
    -   Added Oculus Quest Browser 30 compat data mapping
    -   Updated Electron 28 and 29 compat data mapping

### [`v3.33.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3332---20231031)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.33.1...v3.33.2)

-   Simplified `structuredClone` polyfill, avoided second tree pass in cases of transferring
-   Added support of [`SuppressedError`](https://github.com/tc39/proposal-explicit-resource-management#the-suppressederror-error) to `structuredClone` polyfill
-   Removed unspecified unnecessary `ArrayBuffer` and `DataView` dependencies of `structuredClone` lack of which could cause errors in some entries in IE10-
-   Fixed handling of fractional number part in [`Number.fromString`](https://github.com/tc39/proposal-number-fromstring)
-   Compat data improvements:
    -   [`URL.canParse`](https://url.spec.whatwg.org/#dom-url-canparse) marked as [supported from Chromium 120](https://bugs.chromium.org/p/chromium/issues/detail?id=1425839)
    -   Updated Opera Android 78 compat data mapping
    -   Added Electron 29 compat data mapping

### [`v3.33.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3331---20231020)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.33.0...v3.33.1)

-   Added one more workaround of possible error with `Symbol` polyfill on global object, [#&#8203;1289](https://github.com/zloirock/core-js/issues/1289#issuecomment-1768411444)
-   Directly specified `type: commonjs` in `package.json` of all packages to avoid potential breakage in future Node versions, see [this issue](https://github.com/nodejs/TSC/issues/1445)
-   Prevented potential issue with lack of some dependencies after automatic optimization polyfills of some methods in the pure version
-   Some minor internal fixes and optimizations
-   Compat data improvements:
    -   [`String.prototype.{ isWellFormed, toWellFormed }`](https://github.com/tc39/proposal-is-usv-string) marked as [supported from FF119](https://bugzilla.mozilla.org/show_bug.cgi?id=1850755)
    -   Added React Native 0.73 Hermes compat data, mainly fixes of [some issues](https://github.com/facebook/hermes/issues/770)
    -   Added [NodeJS 21.0 compat data mapping](https://nodejs.org/ru/blog/release/v21.0.0)

### [`v3.33.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3330---20231002)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.32.2...v3.33.0)

-   Re-introduced [`RegExp` escaping stage 2 proposal](https://github.com/tc39/proposal-regex-escaping), September 2023 TC39 meeting:
    -   Added `RegExp.escape` method with the new set of symbols for escaping
    -   Some years ago, it was presented in `core-js`, but it was removed after rejecting the old version of this proposal
-   Added [`ArrayBuffer.prototype.{ transfer, transferToFixedLength }`](https://github.com/tc39/proposal-arraybuffer-transfer) and support transferring of `ArrayBuffer`s via [`structuredClone`](https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone) to engines with `MessageChannel`
-   Optimized [`Math.f16round`](https://github.com/tc39/proposal-float16array) polyfill
-   Fixed [some conversion cases](https://github.com/petamoriken/float16/issues/1046) of [`Math.f16round` and `DataView.prototype.{ getFloat16, setFloat16 }`](https://github.com/tc39/proposal-float16array)
-   Fully forced polyfilling of [the TC39 `Observable` proposal](https://github.com/tc39/proposal-observable) because of incompatibility with [the new WHATWG `Observable` proposal](https://github.com/WICG/observable)
-   Added an extra workaround of errors with exotic environment objects in `Symbol` polyfill, [#&#8203;1289](https://github.com/zloirock/core-js/issues/1289)
-   Some minor fixes and stylistic changes
-   Compat data improvements:
    -   V8 unshipped [`Iterator` helpers](https://github.com/tc39/proposal-iterator-helpers) because of [some Web compatibility issues](https://github.com/tc39/proposal-iterator-helpers/issues/286)
    -   [`Promise.withResolvers`](https://github.com/tc39/proposal-promise-with-resolvers) marked as [supported from V8 ~ Chrome 119](https://chromestatus.com/feature/5810984110784512)
    -   [`Array` grouping proposal](https://github.com/tc39/proposal-array-grouping) features marked as [supported from FF119](https://bugzilla.mozilla.org/show_bug.cgi?id=1792650#c9)
    -   [`value` argument of `URLSearchParams.prototype.{ has, delete }`](https://url.spec.whatwg.org/#dom-urlsearchparams-delete) marked as properly supported from V8 ~ Chrome 118
    -   [`URL.canParse`](https://url.spec.whatwg.org/#dom-url-canparse) and [`URLSearchParams.prototype.size`](https://url.spec.whatwg.org/#dom-urlsearchparams-size) marked as [supported from Bun 1.0.2](https://github.com/oven-sh/bun/releases/tag/bun-v1.0.2)
    -   Added Deno 1.37 compat data mapping
    -   Added Electron 28 compat data mapping
    -   Added Opera Android 78 compat data mapping

### [`v3.32.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3322---20230907)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.32.1...v3.32.2)

-   Fixed `structuredClone` feature detection `core-js@3.32.1` bug, [#&#8203;1288](https://github.com/zloirock/core-js/issues/1288)
-   Added a workaround of old WebKit + `eval` bug, [#&#8203;1287](https://github.com/zloirock/core-js/pull/1287)
-   Compat data improvements:
    -   Added Samsung Internet 23 compat data mapping
    -   Added Quest Browser 29 compat data mapping

### [`v3.32.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3321---20230819)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.32.0...v3.32.1)

-   Fixed some cases of IEEE754 rounding, [#&#8203;1279](https://github.com/zloirock/core-js/issues/1279), thanks [**@&#8203;petamoriken**](https://github.com/petamoriken)
-   Prevented injection `process` polyfill to `core-js` via some bundlers or `esm.sh`, [#&#8203;1277](https://github.com/zloirock/core-js/issues/1277)
-   Some minor fixes and stylistic changes
-   Compat data improvements:
    -   [`Promise.withResolvers`](https://github.com/tc39/proposal-promise-with-resolvers) marked as supported [from Bun 0.7.1](https://bun.sh/blog/bun-v0.7.1#bun-ismainthread-and-promise-withresolvers)
    -   Added Opera Android 77 compat data mapping
    -   Updated Electron 27 compat data mapping

### [`v3.32.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3320---20230728)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.31.1...v3.32.0)

-   [`Array` grouping proposal](https://github.com/tc39/proposal-array-grouping), July 2023 TC39 meeting updates:
    -   [Moved back to stage 3](https://github.com/tc39/proposal-array-grouping/issues/54)
    -   Added `/actual/` namespaces entries, unconditional forced replacement changed to feature detection
-   [`Promise.withResolvers` proposal](https://github.com/tc39/proposal-promise-with-resolvers), July 2023 TC39 meeting updates:
    -   [Moved to stage 3](https://github.com/tc39/proposal-promise-with-resolvers/pull/18)
    -   Added `/actual/` namespaces entries, unconditional forced replacement changed to feature detection
-   [`Set` methods stage 3 proposal](https://github.com/tc39/proposal-set-methods), July 2023 TC39 meeting updates:
    -   Throw on negative `Set` sizes, [proposal-set-methods/88](https://github.com/tc39/proposal-set-methods/pull/88)
    -   Removed `IsCallable` check in `GetKeysIterator`, [proposal-set-methods/101](https://github.com/tc39/proposal-set-methods/pull/101)
-   [Iterator Helpers stage 3 proposal](https://github.com/tc39/proposal-iterator-helpers):
    -   Avoid creating observable `String` wrapper objects, July 2023 TC39 meeting update, [proposal-iterator-helpers/281](https://github.com/tc39/proposal-iterator-helpers/pull/281)
    -   `Iterator` is not constructible from the active function object (works as an abstract class)
-   Async explicit resource management:
    -   Moved back into [the initial proposal](https://github.com/tc39/proposal-explicit-resource-management) -> moved to stage 3, [proposal-explicit-resource-management/154](https://github.com/tc39/proposal-explicit-resource-management/pull/154)
    -   Added `/actual/` namespace entries, unconditional forced replacement changed to feature detection
    -   Ignore return value of `[@@&#8203;dispose]()` method when hint is `async-dispose`, [proposal-explicit-resource-management/180](https://github.com/tc39/proposal-explicit-resource-management/pull/180)
    -   Added ticks for empty resources, [proposal-explicit-resource-management/163](https://github.com/tc39/proposal-explicit-resource-management/pull/163)
-   Added some methods from [`Float16Array` stage 3 proposal](https://github.com/tc39/proposal-float16array):
    -   There are some reason why I don't want to add `Float16Array` right now, however, make sense to add some methods from this proposal.
    -   Methods:
        -   `Math.f16round`
        -   `DataView.prototype.getFloat16`
        -   `DataView.prototype.setFloat16`
-   Added [`DataView` get / set `Uint8Clamped` methods stage 1 proposal](https://github.com/tc39/proposal-dataview-get-set-uint8clamped):
    -   Methods:
        -   `DataView.prototype.getUint8Clamped`
        -   `DataView.prototype.setUint8Clamped`
-   Used strict mode in some missed cases, [#&#8203;1269](https://github.com/zloirock/core-js/issues/1269)
-   Fixed [a Chromium 117 bug](https://bugs.chromium.org/p/v8/issues/detail?id=14222) in `value` argument of `URLSearchParams.prototype.{ has, delete }`
-   Fixed early WebKit ~ Safari 17.0 beta `Set` methods implementation by the actual spec
-   Fixed incorrect `Symbol.{ dispose, asyncDispose }` descriptors from [NodeJS 20.4](https://github.com/nodejs/node/issues/48699) / transpilers helpers / userland code
-   Fixed forced polyfilling of some iterator helpers that should return wrapped iterator in the pure version
-   Fixed and exposed [`AsyncIteratorPrototype` `core-js/configurator` option](https://github.com/zloirock/core-js#asynciterator-helpers), [#&#8203;1268](https://github.com/zloirock/core-js/issues/1268)
-   Compat data improvements:
    -   Sync [`Iterator` helpers proposal](https://github.com/tc39/proposal-iterator-helpers) features marked as [supported](https://chromestatus.com/feature/5102502917177344) from V8 ~ Chrome 117
    -   [`Array` grouping proposal](https://github.com/tc39/proposal-array-grouping) features marked as [supported](https://chromestatus.com/feature/5714791975878656) from V8 ~ Chrome 117
    -   Mark `Symbol.{ dispose, asyncDispose }` as supported from NodeJS 20.5.0 (as mentioned above, NodeJS 20.4.0 add it, but [with incorrect descriptors](https://github.com/nodejs/node/issues/48699))
    -   Added Electron 27 compat data mapping

### [`v3.31.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3311---20230706)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.31.0...v3.31.1)

-   Fixed a `structuredClone` bug with cloning views of transferred buffers, [#&#8203;1265](https://github.com/zloirock/core-js/issues/1265)
-   Fixed the order of arguments validation in `DataView` methods
-   Allowed cloning of [`Float16Array`](https://github.com/tc39/proposal-float16array) in `structuredClone`
-   Compat data improvements:
    -   [`Set` methods proposal](https://github.com/tc39/proposal-set-methods) marked as [supported from Safari 17.0](https://developer.apple.com/documentation/safari-release-notes/safari-17-release-notes#JavaScript)
    -   New `URL` features: [`URL.canParse`](https://url.spec.whatwg.org/#dom-url-canparse), [`URLSearchParams.prototype.size`](https://url.spec.whatwg.org/#dom-urlsearchparams-size) and [`value` argument of `URLSearchParams.prototype.{ has, delete }`](https://url.spec.whatwg.org/#dom-urlsearchparams-delete) marked as [supported from Safari 17.0](https://developer.apple.com/documentation/safari-release-notes/safari-17-release-notes#Web-API)
    -   `value` argument of `URLSearchParams.prototype.{ has, delete }` marked as supported from [Deno 1.35](https://github.com/denoland/deno/pull/19654)
    -   `AggregateError` and well-formed `JSON.stringify` marked as [supported React Native 0.72 Hermes](https://reactnative.dev/blog/2023/06/21/0.72-metro-package-exports-symlinks#more-ecmascript-support-in-hermes)
    -   Added Deno 1.35 compat data mapping
    -   Added Quest Browser 28 compat data mapping
    -   Added missing NodeJS 12.16-12.22 compat data mapping
    -   Updated Opera Android 76 compat data mapping

### [`v3.31.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3310---20230612)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.30.2...v3.31.0)

-   [Well-formed unicode strings proposal](https://github.com/tc39/proposal-is-usv-string):
    -   Methods:
        -   `String.prototype.isWellFormed` method
        -   `String.prototype.toWellFormed` method
    -   Moved to stable ES, [May 2023 TC39 meeting](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-15.md#well-formed-unicode-strings-for-stage-4)
    -   Added `es.` namespace modules, `/es/` and `/stable/` namespaces entries
-   [`Array` grouping proposal](https://github.com/tc39/proposal-array-grouping), [May 2023 TC39 meeting updates](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-16.md#arrayprototypegroup-rename-for-web-compatibility):
    -   Because of the [web compat issue](https://github.com/tc39/proposal-array-grouping/issues/44), [moved from prototype to static methods](https://github.com/tc39/proposal-array-grouping/pull/47). Added:
        -   `Object.groupBy` method
        -   `Map.groupBy` method (with the actual semantic - with a minor difference it was present [in the collections methods stage 1 proposal](https://github.com/tc39/proposal-collection-methods))
    -   Demoted to stage 2
-   [Decorator Metadata proposal](https://github.com/tc39/proposal-decorator-metadata), [May 2023 TC39 meeting updates](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-16.md#decorator-metadata-for-stage-3):
    -   Moved to stage 3
    -   Added `Function.prototype[Symbol.metadata]` (`=== null`)
    -   Added `/actual/` entries
-   [Iterator Helpers stage 3 proposal](https://github.com/tc39/proposal-iterator-helpers):
    -   Changed `Symbol.iterator` fallback from callable check to `undefined` / `null` check, [May 2023 TC39 meeting](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-16.md#iterator-helpers-should-symboliterator-fallback-be-a-callable-check-or-an-undefinednull-check), [proposal-iterator-helpers/272](https://github.com/tc39/proposal-iterator-helpers/pull/272)
    -   Removed `IsCallable` check on `NextMethod`, deferring errors to `Call` site, [May 2023 TC39 meeting](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-16.md#iterator-helpers-should-malformed-iterators-fail-early-or-fail-only-when-iterated), [proposal-iterator-helpers/274](https://github.com/tc39/proposal-iterator-helpers/pull/274)
-   Added [`Promise.withResolvers` stage 2 proposal](https://github.com/tc39/proposal-promise-with-resolvers):
    -   `Promise.withResolvers` method
-   [`Symbol` predicates stage 2 proposal](https://github.com/tc39/proposal-symbol-predicates):
    -   The methods renamed to end with `Symbol`, [May 2023 TC39 meeting](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-15.md#symbol-predicates):
        -   `Symbol.isRegistered` -> `Symbol.isRegisteredSymbol` method
        -   `Symbol.isWellKnown` -> `Symbol.isWellKnownSymbol` method
-   Added `value` argument of `URLSearchParams.prototype.{ has, delete }`, [url/735](https://github.com/whatwg/url/pull/735)
-   Fixed some cases of increasing buffer size in `ArrayBuffer.prototype.{ transfer, transferToFixedLength }` polyfills
-   Fixed awaiting async `AsyncDisposableStack.prototype.adopt` callback, [#&#8203;1258](https://github.com/zloirock/core-js/issues/1258)
-   Fixed `URLSearchParams#size` in ES3 engines (IE8-)
-   Added a workaround in `Object.{ entries, values }` for some IE versions bug with invisible integer keys on `null`-prototype objects
-   Added TypeScript definitions to `core-js-compat`, [#&#8203;1235](https://github.com/zloirock/core-js/issues/1235), thanks [**@&#8203;susnux**](https://github.com/susnux)
-   Compat data improvements:
    -   [`Set.prototype.difference`](https://github.com/tc39/proposal-set-methods) that was missed in Bun because of [a bug](https://github.com/oven-sh/bun/issues/2309) added in 0.6.0
    -   `Array.prototype.{ group, groupToMap }` marked as no longer supported in WebKit runtimes because of the mentioned above web compat issue. For example, it's disabled from Bun 0.6.2
    -   Methods from the [change `Array` by copy proposal](https://github.com/tc39/proposal-change-array-by-copy) marked as supported from FF115
    -   [`Array.fromAsync`](https://github.com/tc39/proposal-array-from-async) marked as supported from FF115
    -   [`URL.canParse`](https://url.spec.whatwg.org/#dom-url-canparse) marked as supported from FF115
    -   `value` argument of `URLSearchParams.prototype.{ has, delete }` marked as supported from [NodeJS 20.2.0](https://github.com/nodejs/node/pull/47885) and FF115
    -   Added Deno 1.34 compat data mapping
    -   Added Electron 26 compat data mapping
    -   Added Samsung Internet 22 compat data mapping
    -   Added Opera Android 75 and 76 compat data mapping
    -   Added Quest Browser 27 compat data mapping

### [`v3.30.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3302---20230507)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.30.1...v3.30.2)

-   Added a fix for a NodeJS 20.0.0 [bug](https://github.com/nodejs/node/issues/47612) with cloning `File` via `structuredClone`
-   Added protection from Terser unsafe `String` optimization, [#&#8203;1242](https://github.com/zloirock/core-js/issues/1242)
-   Added a workaround for getting proper global object in Figma plugins, [#&#8203;1231](https://github.com/zloirock/core-js/issues/1231)
-   Compat data improvements:
    -   Added NodeJS 20.0 compat data mapping
    -   Added Deno 1.33 compat data mapping
    -   [`URL.canParse`](https://url.spec.whatwg.org/#dom-url-canparse) marked as supported (fixed) from [NodeJS 20.1.0](https://github.com/nodejs/node/pull/47513) and [Deno 1.33.2](https://github.com/denoland/deno/pull/18896)

### [`v3.30.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3301---20230414)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.30.0...v3.30.1)

-   Added a fix for a NodeJS 19.9.0 `URL.canParse` [bug](https://github.com/nodejs/node/issues/47505)
-   Compat data improvements:
    -   [`JSON.parse` source text access proposal](https://github.com/tc39/proposal-json-parse-with-source) features marked as [supported](https://chromestatus.com/feature/5121582673428480) from V8 ~ Chrome 114
    -   [`ArrayBuffer.prototype.transfer` and friends proposal](https://github.com/tc39/proposal-arraybuffer-transfer) features marked as [supported](https://chromestatus.com/feature/5073244152922112) from V8 ~ Chrome 114
    -   [`URLSearchParams.prototype.size`](https://github.com/whatwg/url/pull/734) marked as supported from V8 ~ Chrome 113

### [`v3.30.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3300---20230404)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.29.1...v3.30.0)

-   Added [`URL.canParse` method](https://url.spec.whatwg.org/#dom-url-canparse), [url/763](https://github.com/whatwg/url/pull/763)
-   [`Set` methods proposal](https://github.com/tc39/proposal-set-methods):
    -   Removed sort from `Set.prototype.intersection`, [March 2023 TC39 meeting](https://github.com/babel/proposals/issues/87#issuecomment-1478610425), [proposal-set-methods/94](https://github.com/tc39/proposal-set-methods/pull/94)
-   Iterator Helpers proposals ([sync](https://github.com/tc39/proposal-iterator-helpers), [async](https://github.com/tc39/proposal-async-iterator-helpers)):
    -   Validate arguments before opening iterator, [March 2023 TC39 meeting](https://github.com/babel/proposals/issues/87#issuecomment-1478412430), [proposal-iterator-helpers/265](https://github.com/tc39/proposal-iterator-helpers/pull/265)
-   Explicit Resource Management proposals ([sync](https://github.com/tc39/proposal-explicit-resource-management), [async](https://github.com/tc39/proposal-async-explicit-resource-management)):
    -   `(Async)DisposableStack.prototype.move` marks the original stack as disposed, [#&#8203;1226](https://github.com/zloirock/core-js/issues/1226)
    -   Some simplifications like [proposal-explicit-resource-management/150](https://github.com/tc39/proposal-explicit-resource-management/pull/150)
-   [`Iterator.range` proposal](https://github.com/tc39/proposal-Number.range):
    -   Moved to Stage 2, [March 2023 TC39 meeting](https://github.com/babel/proposals/issues/87#issuecomment-1480266760)
-   [Decorator Metadata proposal](https://github.com/tc39/proposal-decorator-metadata):
    -   Returned to usage `Symbol.metadata`, [March 2023 TC39 meeting](https://github.com/babel/proposals/issues/87#issuecomment-1478790137), [proposal-decorator-metadata/12](https://github.com/tc39/proposal-decorator-metadata/pull/12)
-   Compat data improvements:
    -   [`URLSearchParams.prototype.size`](https://github.com/whatwg/url/pull/734) marked as supported from FF112, NodeJS 19.8 and Deno 1.32
    -   Added Safari 16.4 compat data
    -   Added Deno 1.32 compat data mapping
    -   Added Electron 25 and updated 24 compat data mapping
    -   Added Samsung Internet 21 compat data mapping
    -   Added Quest Browser 26 compat data mapping
    -   Updated Opera Android 74 compat data

### [`v3.29.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3291---20230313)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.29.0...v3.29.1)

-   Fixed dependencies of some entries
-   Fixed `ToString` conversion / built-ins nature of some accessors
-   [`String.prototype.{ isWellFormed, toWellFormed }`](https://github.com/tc39/proposal-is-usv-string) marked as supported from V8 ~ Chrome 111
-   Added Opera Android 74 compat data mapping

### [`v3.29.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3290---20230227)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.28.0...v3.29.0)

-   Added `URLSearchParams.prototype.size` getter, [url/734](https://github.com/whatwg/url/pull/734)
-   Allowed cloning resizable `ArrayBuffer`s in the `structuredClone` polyfill
-   Fixed wrong export in `/(stable|actual|full)/instance/unshift` entries, [#&#8203;1207](https://github.com/zloirock/core-js/issues/1207)
-   Compat data improvements:
    -   [`Set` methods proposal](https://github.com/tc39/proposal-set-methods) marked as supported from Bun 0.5.7
    -   `String.prototype.toWellFormed` marked as fixed from Bun 0.5.7
    -   Added Deno 1.31 compat data mapping

### [`v3.28.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3280---20230214)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.27.2...v3.28.0)

##### [3.28.0 - 2023.02.14](https://github.com/zloirock/core-js/releases/tag/v3.28.0)

### [`v3.27.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3272---20230119)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.27.1...v3.27.2)

-   [`Set` methods proposal](https://github.com/tc39/proposal-set-methods) updates:
    -   Closing of iterators of `Set`-like objects on early exit, [proposal-set-methods/85](https://github.com/tc39/proposal-set-methods/pull/85)
    -   Some other minor internal changes
-   Added one more workaround of a `webpack` dev server bug on IE global methods, [#&#8203;1161](https://github.com/zloirock/core-js/issues/1161)
-   Fixed possible `String.{ raw, cooked }` error with empty template array
-   Used non-standard V8 `Error.captureStackTrace` instead of stack parsing in new error classes / wrappers where it's possible
-   Added detection correctness of iteration to `Promise.{ allSettled, any }` feature detection, Hermes issue
-   Compat data improvements:
    -   [Change `Array` by copy proposal](https://github.com/tc39/proposal-change-array-by-copy) marked as supported from V8 ~ Chrome 110
    -   Added Samsung Internet 20 compat data mapping
    -   Added Quest Browser 25 compat data mapping
    -   Added React Native 0.71 Hermes compat data
    -   Added Electron 23 and 24 compat data mapping
    -   `self` marked as fixed in Deno 1.29.3, [deno/17362](https://github.com/denoland/deno/pull/17362)
-   Minor tweaks of minification settings for `core-js-bundle`
-   Refactoring, some minor fixes, improvements, optimizations

### [`v3.27.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3271---20221230)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.27.0...v3.27.1)

-   Fixed a Chakra-based MS Edge (18-) bug that unfreeze (O_o) frozen arrays used as `WeakMap` keys
-   Fixing of the previous bug also fixes some cases of `String.dedent` in MS Edge
-   Fixed dependencies of some entries

### [`v3.27.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3270---20221226)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.26.1...v3.27.0)

-   [Iterator Helpers](https://github.com/tc39/proposal-iterator-helpers) proposal:
    -   Built-ins:
        -   `Iterator`
            -   `Iterator.from`
            -   `Iterator.prototype.drop`
            -   `Iterator.prototype.every`
            -   `Iterator.prototype.filter`
            -   `Iterator.prototype.find`
            -   `Iterator.prototype.flatMap`
            -   `Iterator.prototype.forEach`
            -   `Iterator.prototype.map`
            -   `Iterator.prototype.reduce`
            -   `Iterator.prototype.some`
            -   `Iterator.prototype.take`
            -   `Iterator.prototype.toArray`
            -   `Iterator.prototype.toAsync`
            -   `Iterator.prototype[@&#8203;@&#8203;toStringTag]`
        -   `AsyncIterator`
            -   `AsyncIterator.from`
            -   `AsyncIterator.prototype.drop`
            -   `AsyncIterator.prototype.every`
            -   `AsyncIterator.prototype.filter`
            -   `AsyncIterator.prototype.find`
            -   `AsyncIterator.prototype.flatMap`
            -   `AsyncIterator.prototype.forEach`
            -   `AsyncIterator.prototype.map`
            -   `AsyncIterator.prototype.reduce`
            -   `AsyncIterator.prototype.some`
            -   `AsyncIterator.prototype.take`
            -   `AsyncIterator.prototype.toArray`
            -   `AsyncIterator.prototype[@&#8203;@&a