Skip to content

Commit e2be77e

Browse files
josephlrjfbastien
authored andcommitted
Fixup links to future features (#1157)
This link standardizes how all the other design pages will refer to future features (either in `FutureFeatures.md` or in a tracking issue). All links to these upcoming features now use references at the bottom of the doc page (as opposed to inline links or references). Note that this change makes it very easy for the doc links to be updated when a tracking issue is started. As all the references have a standard format; a simple find/replace script will get everything. This commit also makes sure that references now point to a tracking issue if one exists. Note that this means a future CL can now delete some of the unnecessary sections from `FutureFeatures.md`. The only visible change from this commit is that certain broken links are now fixed, or links pointing to a doc section now point to the correct tracking issue.
1 parent 71c97d9 commit e2be77e

15 files changed

+78
-60
lines changed

BinaryEncoding.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ Note: Currently, the only sizes used are `varint7`, `varint32` and `varint64`.
5757

5858
In the MVP, the opcodes of [instructions](Semantics.md) are all encoded in a
5959
single byte since there are fewer than 256 opcodes. Future features like
60-
[SIMD](FutureFeatures.md#fixed-width-simd) and [atomics](FutureFeatures.md#threads)
60+
[SIMD][future simd] and [atomics][future threads]
6161
will bring the total count above 256 and so an extension scheme will be
6262
necessary, designating one or more single-byte values as prefixes for multi-byte
6363
opcodes.
@@ -811,8 +811,9 @@ for [future :unicorn:][future multiple tables] use and must be 0 in the MVP.
811811
| `f64.reinterpret/i64` | `0xbf` | | |
812812

813813
[future general]: FutureFeatures.md
814-
[future multiple return]: FutureFeatures.md#multiple-return
815-
[future threads]: FutureFeatures.md#threads
814+
[future multiple return]: https://github.com/WebAssembly/design/issues/1146
815+
[future threads]: https://github.com/WebAssembly/design/issues/1073
816+
[future simd]: https://github.com/WebAssembly/design/issues/1075
816817
[future types]: FutureFeatures.md#more-table-operators-and-types
817818
[future multiple tables]: FutureFeatures.md#multiple-tables-and-memories
818819
[future compression]: https://github.com/WebAssembly/decompressor-prototype/blob/master/CompressionLayer1.md

CAndC++.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ compilers need to support high-quality implementations.
4141
While [the MVP](MVP.md) will be fully functional, additional features enabling
4242
greater performance will be added soon after, including:
4343

44-
* [Support for multi-threaded execution with shared memory](FutureFeatures.md#threads).
44+
* Support for [multi-threaded execution with shared memory][future threads].
4545

46-
* [Zero-cost C++ exception handling](FutureFeatures.md#zero-cost-exception-handling).
46+
* [Zero-cost C++ exception handling][future exceptions].
4747
C++ exceptions can be implemented without this, but this feature will
4848
enable them to have lower runtime overhead.
4949

50-
* Support for [128-bit SIMD](FutureFeatures.md#fixed-width-simd). SIMD will be
50+
* Support for [128-bit SIMD][future simd]. SIMD will be
5151
exposed to C/C++ though explicit APIs such as [LLVM's vector extensions]
5252
and [GCC's vector extensions], auto-vectorization, and emulated APIs from
5353
other platforms such as `<xmmintrin.h>`.
@@ -128,4 +128,7 @@ across different implementations, and across different versions of the same
128128
implementation.
129129

130130
[future 64-bit]: FutureFeatures.md#linear-memory-bigger-than-4-gib
131+
[future threads]: https://github.com/WebAssembly/design/issues/1073
132+
[future simd]: https://github.com/WebAssembly/design/issues/1075
133+
[future exceptions]: https://github.com/WebAssembly/design/issues/1078
131134

FAQ.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ There are two main benefits WebAssembly provides:
2424
2. By avoiding the simultaneous asm.js constraints of [AOT][]-[compilability][]
2525
and good performance even on engines without
2626
[specific asm.js optimizations][], a new standard makes it *much easier* to
27-
add the [features :unicorn:][future features] required to reach native
27+
add the [features :unicorn:][future general] required to reach native
2828
levels of performance.
2929

3030
[experiments]: BinaryEncoding.md#why-a-binary-encoding-instead-of-a-text-only-representation
@@ -96,7 +96,7 @@ reusing a modular C++ library can be as simple as [using a module from JavaScrip
9696
Beyond the MVP, another [high-level goal](HighLevelGoals.md)
9797
is to improve support for languages other than C/C++. This includes [allowing WebAssembly code to
9898
allocate and access garbage-collected (JavaScript, DOM, Web API) objects
99-
:unicorn:][future dom].
99+
:unicorn:][future garbage collection].
100100
Even before GC support is added to WebAssembly, it is possible to compile a language's VM
101101
to WebAssembly (assuming it's written in portable C/C++) and this has already been demonstrated
102102
([1](http://ruby.dj), [2](https://kripken.github.io/lua.vm.js/lua.vm.js.html),
@@ -178,7 +178,7 @@ together in a number of configurations:
178178
today) allowing developers to reuse popular WebAssembly libraries just like
179179
JavaScript libraries today.
180180
* When WebAssembly
181-
[gains the ability to access garbage-collected objects :unicorn:][future dom],
181+
[gains the ability to access garbage-collected objects :unicorn:][future garbage collection],
182182
those objects will be shared with JavaScript, and not live in a walled-off
183183
world of their own.
184184

@@ -390,7 +390,7 @@ accessible through regular JavaScript. However, if a wasm VM is provided as an
390390
access to [proprietary platform-specific APIs](Portability.md#api) of e.g.
391391
Android / iOS.
392392

393-
[future features]: FutureFeatures.md
394-
[future dom]: FutureFeatures.md#gcdom-integration
393+
[future general]: FutureFeatures.md
394+
[future garbage collection]: https://github.com/WebAssembly/design/issues/1079
395395
[future floating point]: FutureFeatures.md#additional-floating-point-operators
396396
[future memory control]: FutureFeatures.md#finer-grained-control-over-memory

FeatureTest.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,6 @@ future feature.
103103
[future general]: FutureFeatures.md
104104
[future feature testing]: FutureFeatures.md#feature-testing
105105
[future integer]: FutureFeatures.md#additional-integer-operators
106-
[future threads]: FutureFeatures.md#threads
107-
[future simd]: FutureFeatures.md#fixed-width-simd
106+
[future threads]: https://github.com/WebAssembly/design/issues/1073
107+
[future simd]: https://github.com/WebAssembly/design/issues/1075
108108
[future memory control]: FutureFeatures.md#finer-grained-control-over-memory

FutureFeatures.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -421,15 +421,13 @@ arithmetic, or optimizing JavaScript Numbers to use int32 operators. Another fam
421421
includes compiling code that doesn't expect overflow to occur, but which wishes
422422
to have overflow detected and reported if it does happen. These use cases would
423423
ideally like to have overflow trap, and to allow them to
424-
[handle trap specially][]. Following the rule that explicitly signed and
424+
[handle trap specially][future trapping]. Following the rule that explicitly signed and
425425
unsigned operators trap whenever the result value can not be represented in the
426426
result type, it would be possible to add explicitly signed and unsigned versions
427427
of integer `add`, `sub`, and `mul`, which would trap on overflow. The main
428428
reason we haven't added these already is that they're not efficient for
429429
general-purpose use on several of today's popular hardware architectures.
430430

431-
[handle trap specially]: FutureFeatures.md#trapping-or-non-trapping-strategies
432-
433431
### Better feature testing support
434432

435433
The [MVP feature testing situation](FeatureTest.md) could be improved by
@@ -455,7 +453,7 @@ of supporting multiple return values from blocks / functions.
455453
The MVP limits modules to at most one memory and at most one table (the default
456454
ones) and there are only operators for accessing the default table and memory.
457455

458-
After the MVP and after [GC reference types](https://github.com/WebAssembly/design/issues/1079) have been added, the default
456+
After the MVP and after [GC reference types][future garbage collection] have been added, the default
459457
limitation can be relaxed so that any number of tables and memories could be
460458
imported or internally defined and memories/tables could be passed around as
461459
parameters, return values and locals. New variants of `load`, `store`
@@ -476,7 +474,7 @@ see [JavaScript's `WebAssembly.Table` API](JS.md#webassemblytable-objects)).
476474
It would be useful to be able to do everything from within WebAssembly so, e.g.,
477475
it was possible to write a WebAssembly dynamic loader in WebAssembly. As a
478476
prerequisite, WebAssembly would need first-class support for
479-
[GC references](https://github.com/WebAssembly/design/issues/1079) on the stack and in locals. Given that, the following
477+
[GC references][future garbage collection] on the stack and in locals. Given that, the following
480478
could be added:
481479

482480
* `get_table`/`set_table`: get or set the table element at a given dynamic
@@ -514,3 +512,6 @@ We expect that WebAssembly producers will use these operations when the region
514512
size is known to be large, and will use loads/stores otherwise.
515513

516514
TODO: determine how these operations interact w/ shared memory.
515+
516+
[future trapping]: FutureFeatures.md#trapping-or-non-trapping-strategies
517+
[future garbage collection]: https://github.com/WebAssembly/design/issues/1079

HighLevelGoals.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
* a [Minimum Viable Product (MVP)](MVP.md) for the standard with
1111
roughly the same functionality as [asm.js](http://asmjs.org), primarily
1212
aimed at [C/C++](CAndC++.md);
13-
* [additional features :unicorn:][future features],
14-
initially focused on key features like threads,
15-
zero cost exceptions, and SIMD,
16-
follow by additional features
13+
* [additional features :unicorn:][future general],
14+
initially focused on key features like [threads][future threads],
15+
[zero cost exceptions][future exceptions], and [SIMD][future simd],
16+
followed by additional features
1717
prioritized by feedback and experience, including support for languages
1818
other than C/C++.
1919
3. Design to execute within and integrate well with the *existing*
@@ -33,4 +33,7 @@
3333
* promote other compilers and tools targeting WebAssembly; and
3434
* enable other useful [tooling](Tooling.md).
3535

36-
[future features]: FutureFeatures.md
36+
[future general]: FutureFeatures.md
37+
[future threads]: https://github.com/WebAssembly/design/issues/1073
38+
[future simd]: https://github.com/WebAssembly/design/issues/1075
39+
[future exceptions]: https://github.com/WebAssembly/design/issues/1078

JITLibrary.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# JIT and Optimization Library
22

3-
WebAssembly's
4-
[Just-in-Time compilation (JIT)](FutureFeatures.md#platform-independent-just-in-time-jit-compilation)
3+
WebAssembly's [Just-in-Time compilation (JIT)][future jit control]
54
interface will likely be fairly low-level, exposing general-purpose primitives
65
rather than higher-level functionality. Still, there is a need for higher-level
76
functionality, and for greater flexibility than the WebAssembly spec can provide.
@@ -85,3 +84,5 @@ A significant range of approaches are possible:
8584
would allow a unique degree of flexibility.
8685

8786
* And many things in between.
87+
88+
[future jit control]: FutureFeatures.md#platform-independent-just-in-time-jit-compilation

Modules.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ with a set of import values to produce an **instance**, which is an immutable
66
tuple referencing all the state accessible to the running module. Multiple
77
module instances can access the same shared state which is the basis for
88
[dynamic linking](DynamicLinking.md) in WebAssembly. WebAssembly modules
9-
are also meant to integrate with ES6 modules in the [future :unicorn:][future ES6 modules].
9+
are also meant to integrate with ES6 modules in the [future :unicorn:][future modules].
1010

1111
A module contains the following sections:
1212

@@ -327,8 +327,7 @@ to the following nullary operators:
327327
In the future, operators like `i32.add` could be added to allow more expressive
328328
`base + offset` load-time calculations.
329329

330-
[future ES6 modules]: FutureFeatures.md#tracking-issues
330+
[future modules]: https://github.com/WebAssembly/design/issues/1087
331331
[future types]: FutureFeatures.md#more-table-operators-and-types
332-
[future dom]: FutureFeatures.md#gc/dom-integration
333332
[future multiple tables]: FutureFeatures.md#multiple-tables-and-memories
334333
[valid UTF-8]: https://encoding.spec.whatwg.org/#utf-8-decode-without-bom-or-fail

Nondeterminism.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,5 @@ have defined or constrained behavior in WebAssembly itself may nonetheless still
5252
have undefined behavior
5353
[at the source code level](CAndC++.md#undefined-behavior).
5454

55-
[future threads]: FutureFeatures.md#threads
56-
[future simd]: FutureFeatures.md#fixed-width-simd
55+
[future threads]: https://github.com/WebAssembly/design/issues/1073
56+
[future simd]: https://github.com/WebAssembly/design/issues/1075

Portability.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ characteristics:
3232
* Memory regions which can be efficiently addressed with 32-bit
3333
pointers or indices.
3434
* wasm64 additionally supports linear memory bigger than
35-
[4 GiB with 64-bit pointers or indices](FutureFeatures.md#linear-memory-bigger-than-4-gib).
35+
[4 GiB with 64-bit pointers or indices][future 64-bit].
3636
* Enforce secure isolation between WebAssembly modules and other modules or
3737
processes executing on the same machine.
3838
* An execution environment which offers forward progress guarantees to all
@@ -60,3 +60,5 @@ a standard API (e.g., POSIX) and relying on the compiler and/or libraries to map
6060
the standard interface to the host environment's available imports either at
6161
compile-time (via `#ifdef`) or run-time (via [feature detection](FeatureTest.md)
6262
and dynamic [loading](Modules.md)/[linking](DynamicLinking.md)).
63+
64+
[future 64-bit]: FutureFeatures.md#linear-memory-bigger-than-4-gib

0 commit comments

Comments
 (0)