Commit a8f94ea
Merge js-string-builtins into wasm-3.0 (#1943)
* Initial commit
* Initial setup and overview
* Update proposal
* Adopts builtin modules approach
* Adds section of polyfilling
* Adds section on feature detection
* Adds cast/test builtins
* Adds future extension ideas for
- binding memory
- utf8/wtf8
- evolving the type signatures
* Address review feedback
* Rename concatenate to concat
* Editorial changes
- Eliminate usage of 'builtin module' in description. This is not essential to the proposal and
causes confusion around a similarly named JS proposal, which had different goals.
- Clarify some minor points.
- Make JS-API changes to WebIDL comprehensive.
- Reword feature detection section to actually propose change to WebAssembly.validate method
* Tighten up definitions of function builtins
- Function builtin behaviors is defined using 'create a host function'
- Clarify behavior around monkey patching using standard language
- Clarify edge cases around nullability
- Clarify edge cases around unsigned/signed integers
- Restrict 'substring' behavior to normal cases
- Use wasm helpers for when wasm instructions are needed
* Rework support for WTF-8
The existing WTF-8 operation in this proposal violated one of the goals of the
proposal: "don't create substantial new functionality" by introducing WTF-8
transcoding support to the web platform without prior precedent. The WTF-8
operation is removed because of this.
The naming for WTF-16 operations is reworked to refer to 'charCodes' instead
as that is what the JS String interface uses.
We could support UTF-8 transcoding by referring to the TextEncoder/TextDecoder
interfaces, so this commit adds support for that.
* Review comments
* Update substring range checking
* Fix mutability of array i8
Fixes #19.
* Add streaming-related functions
Fixes #19
* Clarify behavior of flags and function names
Fixes #17.
* Fix link to type-imports prposal in js-string-builtins/Overview.md
* Clarify feature detection scheme
Explain that users should validate modules that deliberately produce link errors to test for support for particular builtins.
* Add test for js-string-builtins
This commit adds a basic suite of tests for the js-string-builtins.
This is done by defining a polyfill module matching the overview,
and then comparing the host provided builtins against the polyfill
on representative inputs.
* Fix type signature of 'concat'
Fixes #24.
* Add section on string constants, including Struct.from
* Rework to use imported string constants idea
* Fixup typos
* Add missing start parameter to measureStringAsUTF8 overview
* Update Overview.md
* Many small improvements
- Syntax highlighting
- Added links
- Code font
- Consistency
- Grammer fixes
* Update proposals/js-string-builtins/Overview.md
* Fix nullability for string constants
* Expand section on string constants
* Revert unintentional change to builtins field
* Add note about empty imports object
* Initial outline of builtin support
* Expand specification of builtins
* Remove unneeded modification to embedding spec
* Initial string constants support
* Fix module constructor to handle options
* Don't freeze internal instantiation of builtins and string constants
* Move UTF-8 support to a future proposal
* Remove DS_Store
* Remove DS_Store
* Mark up options appropriately
* Make UnwrapString an abstract-op and use it to implement cast
* Consistently use "steps" instead of "algorithm" for builtins
* Add test
* Add stubs for the rest of the operations
* Add fromCharCode
* Switch to using the Call abstract op, and add fromCodePoint
* Add length
* Add charCodeAt and codePointAt
* Add concat
* Add substring
* Use angle quotes appropriately
* Add basic support for fromCharCodeArray
Needs more detail to properly integrate with GC array ops.
* Make fromCharCodeArray slightly less formal
This avoids having to refer to actual Wasm instructions,
since after all this is a host function.
* Add intoCharCodeArray
* Add equals and compare
* Review fixes for builtin steps
* Tweak wording for trapping in builtins
* Fix spec to separate builtin name used for imports and compile options
* Add note about patching the String builtins
* Add more tests
* Don't validate that every builtin set option is valid
* Fix null-handling for `equals` in test and polyfill
Equals specifically allows null inputs. Update the JS API tests
and the polyfill to match.
* Editorial: replace Type AO with new ECMA-262 type test convention
* actually remove Type
* support per-component polyfill fallbacks
* spec rework
* typo
* Editorial: Align with Web IDL specification
* [js-api] Fix incorrect return statement in 'validate builtin set names'
* [js-api] Remove copy-pasted if statements
* Revert changes to conf and README to prepare for merging
* [tests] Remove tentative from js-string tests
* Expand JS builtin functypes
* Add change history entry
* [js-api] Improve formatting
---------
Co-authored-by: Deepti Gandluri <dtig@users.noreply.github.com>
Co-authored-by: Martin Kustermann <kustermann@google.com>
Co-authored-by: Thomas Lively <tlively@google.com>
Co-authored-by: Ömer Sinan Ağacan <omeragacan@gmail.com>
Co-authored-by: Thomas Steiner <tomac@google.com>
Co-authored-by: Adam Klein <adamk@chromium.org>
Co-authored-by: Michael Ficarra <m.ficarra@f5.com>
Co-authored-by: Guy Bedford <guybedford@gmail.com>
Co-authored-by: autokagami <saschanaz+autokagami@outlook.com>1 parent 50774b5 commit a8f94ea
8 files changed
Lines changed: 1896 additions & 26 deletions
File tree
- document
- js-api
- web-api
- proposals/js-string-builtins
- test/js-api
- js-string
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
91 | | - | |
| 91 | + | |
92 | 92 | | |
93 | | - | |
| 93 | + | |
94 | 94 | | |
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
98 | | - | |
| 98 | + | |
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
102 | | - | |
| 102 | + | |
103 | 103 | | |
104 | | - | |
| 104 | + | |
105 | 105 | | |
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
109 | | - | |
| 109 | + | |
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
| |||
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
138 | | - | |
| 138 | + | |
139 | 139 | | |
140 | 140 | | |
141 | 141 | | |
| |||
Large diffs are not rendered by default.
0 commit comments