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 Mismatch in Array.of #1322

Closed
stonechoe opened this issue Jan 25, 2024 · 1 comment
Closed

Spec Mismatch in Array.of #1322

stonechoe opened this issue Jan 25, 2024 · 1 comment

Comments

@stonechoe
Copy link
Contributor

Following code behaves differently depending on whether the native version is loaded, or if the polyfill is required and loaded:

let of = require("core-js-pure/es/array/of");

let handler = {
  has: () => {
    throw 42;
  },
};

let x = function () {
  return new Proxy({}, handler);
};

of.call(x, 0)

It throws with the polyfill, while it doesn't with the native implementation.
Although it is unusual to implement proxy to throw an exception, but even without throwing, it can still introduce silent bugs due to side effects.

This was referenced Jan 25, 2024
@zloirock
Copy link
Owner

zloirock commented Jan 25, 2024

From #1324:

You are right, it's a performance optimization. Without this optimization, some methods worked unacceptably slow. However, now most methods where it's used are available in most engines, and Proxy is enough popular. I will think make it sense to accept it or not.

Vylpes pushed a commit to Vylpes/Droplet that referenced this issue Apr 10, 2024
This PR contains the following updates:

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

---

### Release Notes

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

### [`v3.36.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3361---20240319)

[Compare Source](zloirock/core-js@v3.36.0...v3.36.1)

-   Changes [v3.36.0...v3.36.1](zloirock/core-js@v3.36.0...v3.36.1)
-   Fixed some validation cases in `Object.setPrototypeOf`, [#&#8203;1329](zloirock/core-js#1329), thanks [**@&#8203;minseok-choe**](https://github.com/minseok-choe)
-   Fixed the order of validations in `Array.from`, [#&#8203;1331](zloirock/core-js#1331), thanks [**@&#8203;minseok-choe**](https://github.com/minseok-choe)
-   Added a fix of [Bun `queueMicrotask` arity](oven-sh/bun#9249)
-   Added a fix of [Bun `URL.canParse` arity](oven-sh/bun#9250)
-   Added a fix of Bun `SuppressedError` [extra arguments support](oven-sh/bun#9283) and [arity](oven-sh/bun#9282)
-   Compat data improvements:
    -   [`value` argument of `URLSearchParams.prototype.{ has, delete }`](https://url.spec.whatwg.org/#dom-urlsearchparams-delete) marked as supported [from Bun 1.0.31](oven-sh/bun#9263)
    -   Added React Native 0.74 Hermes compat data, `Array.prototype.{ toSpliced, toReversed, with }` and `atob` marked as supported
    -   Added Deno 1.41.3 compat data mapping
    -   Added Opera Android 81 compat data mapping
    -   Added Samsung Internet 25 compat data mapping
    -   Added Oculus Quest Browser 32 compat data mapping
    -   Updated Electron 30 compat data mapping

### [`v3.36.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3360---20240214)

[Compare Source](zloirock/core-js@v3.35.1...v3.36.0)

-   [`ArrayBuffer.prototype.transfer` and friends proposal](https://github.com/tc39/proposal-arraybuffer-transfer):
    -   Built-ins:
        -   `ArrayBuffer.prototype.detached`
        -   `ArrayBuffer.prototype.transfer`
        -   `ArrayBuffer.prototype.transferToFixedLength`
    -   Moved to stable ES, [Febrary 2024 TC39 meeting](tc39/proposals@c84d3dd)
    -   Added `es.` namespace modules, `/es/` and `/stable/` namespaces entries
-   [`Uint8Array` to / from base64 and hex proposal](https://github.com/tc39/proposal-arraybuffer-base64):
    -   Methods:
        -   `Uint8Array.fromBase64`
        -   `Uint8Array.fromHex`
        -   `Uint8Array.prototype.toBase64`
        -   `Uint8Array.prototype.toHex`
    -   Moved to stage 3, [Febrary 2024 TC39 meeting](tc39/proposals@278ab28)
    -   Added `/actual/` namespace entries
    -   Skipped adding new methods of writing to existing arrays to clarification some moments
-   [`Promise.try` proposal](https://github.com/tc39/proposal-promise-try) has been resurrected and moved to stage 2, [Febrary 2024 TC39 meeting](tc39/proposal-promise-try#15)
-   Added an entry point for [the new TC39 proposals stage](https://tc39.es/process-document/) - `core-js/stage/2.7` - still empty
-   Fixed regression in `Set.prototype.intersection` feature detection
-   Fixed a missed check in `Array.prototype.{ indexOf, lastIndexOf, includes }`, [#&#8203;1325](zloirock/core-js#1325), thanks [**@&#8203;minseok-choe**](https://github.com/minseok-choe)
-   Fixed a missed check in `Array.prototype.{ reduce, reduceRight }`, [#&#8203;1327](zloirock/core-js#1327), thanks [**@&#8203;minseok-choe**](https://github.com/minseok-choe)
-   Fixed `Array.from` and some other methods with proxy targets, [#&#8203;1322](zloirock/core-js#1322), thanks [**@&#8203;minseok-choe**](https://github.com/minseok-choe)
-   Fixed dependencies loading for modules from `ArrayBuffer.prototype.transfer` and friends proposal in some specific cases in IE10-
-   Dropped context workaround from collection static methods entries since with current methods semantic it's no longer required
-   Added instance methods polyfills to entries of collections static methods that produce collection instances
-   Added missed `Date.prototype.toJSON` to `JSON.stringify` entries dependencies
-   Added debugging info in some missed cases
-   Compat data improvements:
    -   [`{ Map, Object }.groupBy`](https://github.com/tc39/proposal-array-grouping), [`Promise.withResolvers`](https://github.com/tc39/proposal-promise-with-resolvers), [`ArrayBuffer.prototype.transfer` and friends](https://github.com/tc39/proposal-arraybuffer-transfer) marked as supported from [Safari 17.4](https://developer.apple.com/documentation/safari-release-notes/safari-17\_4-release-notes#JavaScript)
    -   [New `Set` methods](https://github.com/tc39/proposal-set-methods) [fixed](https://bugs.chromium.org/p/v8/issues/detail?id=14559#c4) and marked as supported from V8 ~ Chrome 123
    -   Added [Deno 1.40](https://deno.com/blog/v1.40) compat data mapping
    -   `Symbol.metadata` marked as supported from [Deno 1.40.4](https://github.com/denoland/deno/releases/tag/v1.40.4)
    -   Updated Electron 30 compat data mapping

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4wLjAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4wLjAiLCJ0YXJnZXRCcmFuY2giOiJkZXZlbG9wIn0=-->

Reviewed-on: https://gitea.vylpes.xyz/RabbitLabs/Droplet/pulls/294
Reviewed-by: Vylpes <ethan@vylpes.com>
Co-authored-by: Renovate Bot <renovate@vylpes.com>
Co-committed-by: Renovate Bot <renovate@vylpes.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants