Skip to content

Commit 910e3ca

Browse files
josephlrjfbastien
authored andcommitted
Delete unnecessary sections (#1158)
* Delete unnecessary sections As garbage collection, multiple return, and Memset/Memcpy Operators have dedicated tracking issues and all the links have been fixed, we can remove their sections. Most of the data being removed is still present in the tracking issues. The two sections on tail calls are not removed as they contain some information not in the tail calls tracking issue (#1144). * Create section for preserving old links This commit creates a section containing all proposals moved to tacking issues. It also does some general cleanup.
1 parent 49fd0c7 commit 910e3ca

File tree

1 file changed

+41
-56
lines changed

1 file changed

+41
-56
lines changed

FutureFeatures.md

Lines changed: 41 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,11 @@ The Community Group and Working Group have adopted [a process document for propo
3939
[1146]: https://github.com/WebAssembly/design/issues/1146
4040
[1148]: https://github.com/WebAssembly/design/issues/1148
4141

42-
43-
## Legacy Future Features
44-
45-
**Note:** these will soon move to tracking issues.
42+
## On Deck for Immediate Design
4643

4744
:star: = Essential features we want to prioritize adding shortly after
4845
the [MVP](MVP.md).
4946

50-
## On Deck for Immediate Design
51-
5247
### Great tooling support
5348
#### :star: :star: :star:
5449

@@ -133,10 +128,6 @@ Options under consideration:
133128
making it easier to support other languages, especially functional programming
134129
languages.
135130

136-
### GC/DOM Integration
137-
138-
See issue [1079][].
139-
140131
### Linear memory bigger than 4 GiB
141132

142133
The WebAssembly MVP will support the wasm32 mode of WebAssembly, with linear
@@ -175,34 +166,6 @@ programming languages that WebAssembly will support.
175166

176167
[eventually be part of C++]: http://wg21.link/n4499
177168

178-
### Signature-restricted Proper Tail Calls
179-
180-
See the [asm.js RFC][] for a full description of signature-restricted Proper
181-
Tail Calls (PTC).
182-
183-
Useful properties of signature-restricted PTCs:
184-
185-
* In most cases, can be compiled to a single jump.
186-
* Can express indirect `goto` via function-pointer calls.
187-
* Can be used as a compile target for languages with unrestricted PTCs; the code
188-
generator can use a stack in the linear memory to effectively implement a custom call
189-
ABI on top of signature-restricted PTCs.
190-
* An engine that wishes to perform aggressive optimization can fuse a graph of
191-
PTCs into a single function.
192-
* To reduce compile time, a code generator can use PTCs to break up ultra-large
193-
functions into smaller functions at low overhead using PTCs.
194-
* A compiler can exert some amount of control over register allocation via the
195-
ordering of arguments in the PTC signature.
196-
197-
[asm.js RFC]: http://discourse.specifiction.org/t/request-for-comments-add-a-restricted-subset-of-proper-tail-calls-to-asm-js
198-
199-
### General-purpose Proper Tail Calls
200-
201-
General-purpose Proper Tail Calls would have no signature restrictions, and
202-
therefore be more broadly usable than
203-
[Signature-restricted Proper Tail Calls](Semantics.md#signature-restricted-proper-tail-calls),
204-
though there would be some different performance characteristics.
205-
206169
### Asynchronous Signals
207170

208171
TODO
@@ -443,11 +406,6 @@ pass was otherwise necessary.
443406

444407
If globals are allowed array types, significant portions of memory could be moved out of linear memory which could reduce fragmentation issues. Languages like Fortran which limit aliasing would be one use case. C/C++ compilers could also determine that some global variables never have their address taken.
445408

446-
### Multiple Return
447-
448-
The stack based nature of WebAssembly lends itself to the possibility
449-
of supporting multiple return values from blocks / functions.
450-
451409
### Multiple Tables and Memories
452410

453411
The MVP limits modules to at most one memory and at most one table (the default
@@ -494,24 +452,51 @@ static signature validation check. This could be improved by allowing:
494452
* any other specific GC reference type, effectively allowing WebAssembly code
495453
to implement a variety of rooting API schemes.
496454

455+
## Proposals moved to tacking issues
456+
457+
These proposals have now moved to [tracking issues](#tracking-issues). The old
458+
links are preserved here for backwards compatibility.
459+
460+
### GC/DOM Integration
461+
462+
See issue [1079][].
463+
497464
### Memset and Memcpy Operators
498465

499-
Copying and clearing large memory regions is very common, and making these
500-
operations fast is architecture dependent. Although this can be done in the MVP
501-
via `i32.load` and `i32.store`, this requires more bytes of code and forces VMs
502-
to recognize the loops as well. The following operators can be added to improve
503-
performance:
466+
See issue [1114][].
467+
468+
### Tail Calls
469+
470+
See issue [1144][].
471+
472+
#### Signature-restricted Proper Tail Calls
473+
474+
See the [asm.js RFC][] for a full description of signature-restricted Proper
475+
Tail Calls (PTC).
476+
477+
Useful properties of signature-restricted PTCs:
478+
479+
* In most cases, can be compiled to a single jump.
480+
* Can express indirect `goto` via function-pointer calls.
481+
* Can be used as a compile target for languages with unrestricted PTCs; the code
482+
generator can use a stack in the linear memory to effectively implement a custom call
483+
ABI on top of signature-restricted PTCs.
484+
* An engine that wishes to perform aggressive optimization can fuse a graph of
485+
PTCs into a single function.
486+
* To reduce compile time, a code generator can use PTCs to break up ultra-large
487+
functions into smaller functions at low overhead using PTCs.
488+
* A compiler can exert some amount of control over register allocation via the
489+
ordering of arguments in the PTC signature.
504490

505-
* `move_memory`: Copy data from a source memory region to destination region;
506-
these regions may overlap: the copy is performed as if the source region was
507-
first copied to a temporary buffer, then the temporary buffer is copied to
508-
the destination region
509-
* `set_memory`: Set all bytes in a memory region to a given byte
491+
[asm.js RFC]: http://discourse.specifiction.org/t/request-for-comments-add-a-restricted-subset-of-proper-tail-calls-to-asm-js
492+
493+
#### General-purpose Proper Tail Calls
510494

511-
We expect that WebAssembly producers will use these operations when the region
512-
size is known to be large, and will use loads/stores otherwise.
495+
General-purpose Proper Tail Calls would have no signature restrictions, and
496+
therefore be more broadly usable than
497+
[Signature-restricted Proper Tail Calls](Semantics.md#signature-restricted-proper-tail-calls),
498+
though there would be some different performance characteristics.
513499

514-
TODO: determine how these operations interact w/ shared memory.
515500

516501
[future trapping]: FutureFeatures.md#trapping-or-non-trapping-strategies
517502
[future garbage collection]: https://github.com/WebAssembly/design/issues/1079

0 commit comments

Comments
 (0)