|
4 | 4 | out of multiple Core WebAssembly modules so that common modules can be shared
|
5 | 5 | with other components. This provides an alternative to *static linking* which
|
6 | 6 | forces common code to be copied into each component. This type of linking
|
7 |
| -should be able to leverage of existing support for native dynamic linking (of |
8 |
| -`.dll`s or `.so`s) which a single shared linear memory (hence |
| 7 | +should be able to leverage off existing support for native dynamic linking (of |
| 8 | +`.dll`s or `.so`s) with a single shared linear memory (hence |
9 | 9 | *shared-everything* dynamic linking).
|
10 | 10 |
|
11 | 11 | Shared-everything dynamic linking should be *complementary* to the
|
12 | 12 | shared-nothing dynamic linking of components described in the
|
13 | 13 | [explainer](../Explainer.md). In particular, dynamically-linked modules must not
|
14 | 14 | share linear memory across component instance boundaries. For example, we want
|
15 | 15 | the static dependency graph on the left to produce the runtime instance graph
|
16 |
| -on the right: create the runtime instance graph on the right: |
| 16 | +on the right: |
17 | 17 |
|
18 | 18 | <p align="center"><img src="./images/shared-everything-dynamic-linking.svg" width="600"></p>
|
19 | 19 |
|
20 | 20 | Here, `libc` defines and exports a linear memory that is imported by the other
|
21 |
| -moudle instances contained within the same component instance. Thus, at |
| 21 | +module instances contained within the same component instance. Thus, at |
22 | 22 | runtime, the composite application creates *three* instances of the `libc`
|
23 | 23 | module (creating *three* linear memories) yet contains only *one* copy of the
|
24 | 24 | `libc` code. This use case is tricky to implement in many module systems where
|
|
0 commit comments