| OLD | NEW |
| 1 # Mojo EDK (embedder development kit) | 1 # Mojo EDK (embedder development kit) |
| 2 | 2 |
| 3 The Mojo EDK is a "library" that provides implementations of the basic Mojo | 3 The Mojo EDK is a "library" that provides implementations of the basic Mojo |
| 4 system primitives (e.g., message pipes). It is not meant for ordinary | 4 system primitives (e.g., message pipes). It is not meant for ordinary |
| 5 applications, but for _embedders_ who in turn expose the basic Mojo primitives | 5 applications, but for _embedders_ who in turn expose the basic Mojo primitives |
| 6 to other applications/content. | 6 to other applications/content. |
| 7 | 7 |
| 8 For example, this is used by `mojo_shell` to implement the Mojo primitives, | 8 For example, this is used by `mojo_shell` to implement the Mojo primitives, |
| 9 which it in turn exposes to Mojo applications, and by Flutter, which exposes | 9 which it in turn exposes to Mojo applications, and by Flutter, which exposes |
| 10 Mojo primitives to Flutter applications. (`mojo_shell` and Flutter are embedders | 10 Mojo primitives to Flutter applications. (`mojo_shell` and Flutter are embedders |
| 11 of the Mojo system implementation.) | 11 of the Mojo system implementation.) |
| 12 | 12 |
| 13 Note: The embedder API is not stable (neither at the source nor at the binary | 13 Note: The embedder API is not stable (neither at the source nor at the binary |
| 14 level) and will evolve over time. | 14 level) and will evolve over time. |
| 15 | 15 |
| 16 ## Organization | 16 ## Organization |
| 17 | 17 |
| 18 ### Subdirectories | 18 ### Subdirectories |
| 19 | 19 |
| 20 * [//mojo/edk/base_edk](base_edk): The embedder API requires various things to | 20 * [//mojo/edk/base_edk](base_edk): The embedder API requires various things to |
| 21 be implemented or injected by the embedder. This contains implementations of | 21 be implemented or injected by the embedder. This contains implementations of |
| 22 these things for use with [//base](../../base). (This may also be usable with | 22 these things for use with [//base](../../base). (This may also be usable with |
| 23 other sufficiently-similar derivatives of Chromium's | 23 other sufficiently-similar derivatives of Chromium's |
| 24 [//base](https://chromium.googlesource.com/chromium/src/+/master/base/).) | 24 [//base](https://chromium.googlesource.com/chromium/src/+/master/base/).) |
| 25 * [//mojo/edk/embedder](embedder): The header files in this directory constitute | 25 * [//mojo/edk/embedder](embedder): The header files in this directory constitute |
| 26 the public API available to embedders. (The .cc files are private and mostly | 26 the public API available to embedders. (The .cc files are private and mostly |
| 27 serve to bridge between the public API and the private API in | 27 serve to bridge between the public API and the private API in |
| 28 [system](system).) | 28 [system](system).) |
| 29 * [//mojo/edk/platform](platform): This contains platform abstractions and |
| 30 declarations of embedder-dependent things. Some of these must be provided by |
| 31 the embedder, either by implementing an interface or by implementing a class |
| 32 outright. |
| 29 * [//mojo/edk/system](system): This contains the bulk of the actual | 33 * [//mojo/edk/system](system): This contains the bulk of the actual |
| 30 implementation, and is entirely private. | 34 implementation, and is entirely private. |
| 31 * [//mojo/edk/system/test](system/test): This contains private test helpers used | 35 * [//mojo/edk/system/test](system/test): This contains private test helpers used |
| 32 by the EDK's internal tests. | 36 by the EDK's internal tests. |
| 33 * [//mojo/edk/test](test): In principle, this contains test helpers for use by | 37 * [//mojo/edk/test](test): In principle, this contains test helpers for use by |
| 34 embedders (but see the **TODO** below). | 38 embedders (but see the **TODO** below). |
| 35 * [//mojo/edk/util](util): This contains basic helpers built on top of the C++ | 39 * [//mojo/edk/util](util): This contains basic helpers built on top of the C++ |
| 36 library and also some POSIX APIs, notably pthreads. These are used by all the | 40 library and also some POSIX APIs, notably pthreads. These are used by all the |
| 37 other parts of the EDK, and are also available for embedders to use. (Outside | 41 other parts of the EDK, and are also available for embedders to use. (Outside |
| 38 its tests, it should not depend on other parts of the EDK.) | 42 its tests, it should not depend on other parts of the EDK.) |
| 39 | 43 |
| 40 ### TODO(vtl) | 44 ### TODO(vtl) |
| 41 | 45 |
| 42 * [//mojo/edk/test](test) currently contains things that aren't meant for | 46 * [//mojo/edk/test](test) currently contains things that aren't meant for |
| 43 embedders. (They can't be moved to [//mojo/edk/system/test](system/test) | 47 embedders. (They can't be moved to [//mojo/edk/system/test](system/test) |
| 44 because of their dependencies, but they should be moved elsewhere instead.) | 48 because of their dependencies, but they should be moved elsewhere instead.) |
| 45 * There should be a "platform" directory. Many of the things in | 49 * There should be a "platform" directory. Many of the things in |
| 46 [//mojo/edk/embedder](embedder) (especially in the `platform` target) should | 50 [//mojo/edk/embedder](embedder) (especially in the `platform` target) should |
| 47 be moved here (though some of the implementations should be moved to | 51 be moved here (though some of the implementations should be moved to |
| 48 [//mojo/edk/base_edk](base_edk). | 52 [//mojo/edk/base_edk](base_edk). |
| 49 | 53 |
| 50 ## See also | 54 ## See also |
| 51 | 55 |
| 52 * [//mojo/public](../public): the Mojo public SDK | 56 * [//mojo/public](../public): the Mojo public SDK |
| OLD | NEW |