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] Versioning of external standard dependencies #566

Closed
rossberg opened this issue Sep 14, 2017 · 8 comments
Closed

[spec] Versioning of external standard dependencies #566

rossberg opened this issue Sep 14, 2017 · 8 comments
Assignees

Comments

@rossberg
Copy link
Member

rossberg commented Sep 14, 2017

The Wasm core spec currenlty depends on two external standards: IEEE 754 and Unicode. Both continue to evolve, so the question is how the spec should reference them:

  1. Without a specific version, always applying the latest.
  2. Pinned to an exact version.
  3. Pinned to a minimum version.

See this comment and surrounding discussion for a rough summary of the trade-offs.

@rossberg
Copy link
Member Author

The EcmaScript standard used to use option (3) for Unicode, but switched to option (1) later. My memory of respective discussions is vague, and I couldn't find anything in the meeting notes. However, I inquired other TC39 members about their recollection.

Allen Wirfs-Brock (editor of the ES6 spec) replied:

My recollection, is that with yearly releases of both ECMAScript and Unicode we got tired of debating each year whether we should update the Unicode version. So we decided to go with the “latest version” with the understanding that the editor would keep an eye out for breaking changes in the Unicode releases that might cause us to have to take other action.

He also remarked

Unicode now releases a new edition every year. So any non-essential dated reference is guaranteed to be obsolete after at most 12-months.It’s much easier editorially to follow the current ECMAScript approach. Use an updated reference and only worry about it in the unlikely event that Unicode changes in a way that actually impacts WebAssembly.

and pointed out that

“Version xxx or higher” implies that there is something about version xxx that is significant and different from version xxx-1.

Both the Unicode and the ISO guidelines recommend using an undated references in situations like this.

The last point seems particularly noteworthy.

@jfbastien
Copy link
Member

Both the Unicode and the ISO guidelines recommend using an undated references in situations like this.

Interesting. Is there a reference for this?

@rossberg rossberg self-assigned this Oct 12, 2017
@littledan
Copy link
Collaborator

See this thread for when ECMAScript made the reference undated. I'm not sure how important an undated reference is for IEEE 754; according to its website no working group meetings are planned after they published the 2008 standard (their second one).

@rossberg
Copy link
Member Author

Here is the reference I found regarding Unicode's recommendations: http://www.unicode.org/versions/index.html#Citations

The criteria are fairly vague. But I would interpret the recommendation to imply that a language standard like EcmaScript clearly falls into category (3), i.e., a completely unversioned reference is not actually appropriate. It's slightly less clear for Wasm, but even there (3) might be more fitting?

@littledan
Copy link
Collaborator

@rossberg What's the difference you see between ECMAScript and WebAssembly here? That JS makes reference to the character classes in Unicode in a way that Wasm doesn't?

@rossberg
Copy link
Member Author

@littledan, yes for example. Outside the text format, UTF-8 is really all that's relevant for Wasm, we don't even care what code points mean. For the text format, we care about a few individual characters (the ASCII subset). But both is probably enough to argue for category (3). But then, what would be an appropriate minimum version?

@sunfishcode
Copy link
Member

IEEE 754 is active again; a new version is expected to be published in 2018, and there may be further versions in the future. Versions occasionally introduce new features that WebAssembly may decide to support (eg. fusedMultiplyAdd in 2008 or minimum/etc. expected in 2018), though supporting these new features would require spec changes anyway.

@rossberg
Copy link
Member Author

CG meeting decided to float the Unicode reference and pin IEEE to 2008 and revisit when a new version comes out. That coincides with the status quo, so closing this issue.

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

4 participants