Skip to content
This repository was archived by the owner on Nov 3, 2021. It is now read-only.
This repository was archived by the owner on Nov 3, 2021. It is now read-only.

[js-api] Globals of type anyref require slight adjustment to JS API spec #20

Closed

Description

@lars-t-hansen

At the moment, the JS API spec requires that if the value argument to the WebAssembly.Global constructor is undefined then the default value for the Global's type is stored. For a Global of type anyref this probably means that the value stored is null. But this is counter to the intent of anyref, which is that it can represent (through boxing) any host type faithfully.

This is not a compatibility issue since anyref is a new thing and the problem is not observable with older types, it's just a slight complication of the algorithm for Global's constructor. I'm not sure if this means the WebIDL spec for that constructor needs to change, ie, if the current behavior is a result of some WebIDL standard behavior. If it does need to change then compatibility may be slightly at risk, though no doubt a fix can be found.

Activity

  1. rossberg commented on Nov 27, 2018

    @rossberg
    Member

    Just to clarify, is your suggestion to only default to null if the value parameter is absent (as opposed to undefined)?

  2. lars-t-hansen commented on Nov 28, 2018

    @lars-t-hansen
    ContributorAuthor

    Yes, I think that pretty much sums it up.

  3. rossberg commented on Nov 28, 2018

    @rossberg
    Member

    Sounds good to me.

  4. titzer commented on Nov 28, 2018

    @titzer

    Generally OK with this. I guess this suggests an implementation strategy of internally checking arguments.length? (since this diverges from normal JS behavior for missing arguments, it's a slight wart).

  5. rossberg commented on Nov 28, 2018

    @rossberg
    Member

    You'll find enough precedence in the ES spec itself where a "not present" argument is treated differently from the value undefined. Random bad example: all the Date.prototype.set* functions.

  6. changed the title [-]Globals of type anyref require slight adjustment to JS API spec[/-] [+][js-api] Globals of type anyref require slight adjustment to JS API spec[/+] on Nov 15, 2019
  7. rossberg commented on Jan 16, 2020

    @rossberg
    Member

    This has been fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions