From b584d7177fddaae957eadf54b2ce0359d32022cc Mon Sep 17 00:00:00 2001 From: Luke Wagner Date: Thu, 11 Jun 2015 18:30:09 -0500 Subject: Update API portability paragraph --- Portability.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Portability.md b/Portability.md index 2d6991a..e1d2ee0 100644 --- a/Portability.md +++ b/Portability.md @@ -38,11 +38,14 @@ characteristics: * An execution environment which offers forward progress guarantees to all threads of execution (even when executing in a non-parallel manner). -Developer-exposed APIs (such as POSIX) are expected to be portable at a -source-code level through WebAssembly libraries which will use -[feature detection](FeatureTest.md). These libraries aren't necessarily -standardized: WebAssembly will follow the -[extensible web manifesto](https://extensiblewebmanifesto.org)'s lead and expose -low-level capabilities that expose the possibilities of the underlying platform -as closely as possible. WebAssembly therefore standardizes a lower-level -abstraction layer, and expects libraries to offer portable APIs. +WebAssembly does not specify any APIs or syscalls, only an +[import mechanism](MVP.md#modules) where the set of available imports is defined +by the host environment. In a [Web](Web.md) environment, functionality is +accessed through the Web APIs defined by the [Web](https://whatwg.org) +[Platform](http://w3c.org). Non-Web environments can choose to implement +standard Web APIs, standard non-Web APIs (e.g. POSIX), or invent their own. +Portability at the C/C++ level can, however, still be achieved by programming to +a standard API (e.g., POSIX) and relying on the compiler and/or libraries +to map the standard interface to the host environment's available imports either +at compile-time (via `#ifdef`) or run-time (via [feature detection](FeatureTest.md) +and [dynamic loading](MVP.md#modules)). -- cgit v1.2.3 From e8f1b6952ca1e3fda3fc3f2f9882b3da19b0bee8 Mon Sep 17 00:00:00 2001 From: Luke Wagner Date: Fri, 12 Jun 2015 09:38:03 -0500 Subject: Relink 'Web Platform' to Wikipedia; w3c/whatwg was too narrow anyhow --- Portability.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Portability.md b/Portability.md index e1d2ee0..04fecb0 100644 --- a/Portability.md +++ b/Portability.md @@ -41,11 +41,12 @@ characteristics: WebAssembly does not specify any APIs or syscalls, only an [import mechanism](MVP.md#modules) where the set of available imports is defined by the host environment. In a [Web](Web.md) environment, functionality is -accessed through the Web APIs defined by the [Web](https://whatwg.org) -[Platform](http://w3c.org). Non-Web environments can choose to implement -standard Web APIs, standard non-Web APIs (e.g. POSIX), or invent their own. -Portability at the C/C++ level can, however, still be achieved by programming to -a standard API (e.g., POSIX) and relying on the compiler and/or libraries -to map the standard interface to the host environment's available imports either +accessed through the Web APIs defined by the +[Web Platform](https://en.wikipedia.org/wiki/Open_Web_Platform). Non-Web +environments can choose to implement standard Web APIs, standard non-Web APIs +(e.g. POSIX), or invent their own. Portability at the C/C++ level can, however, +still be achieved by programming to a standard API (e.g., POSIX) and relying +on the compiler and/or libraries to map the standard interface to the host +environment's available imports either at compile-time (via `#ifdef`) or run-time (via [feature detection](FeatureTest.md) and [dynamic loading](MVP.md#modules)). -- cgit v1.2.3 From ed9d5f66f35a9f95d6dde672fdc714e6dda1b984 Mon Sep 17 00:00:00 2001 From: Luke Wagner Date: Fri, 12 Jun 2015 09:41:02 -0500 Subject: Split doc into sections --- Portability.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/Portability.md b/Portability.md index 04fecb0..e83e24d 100644 --- a/Portability.md +++ b/Portability.md @@ -4,6 +4,8 @@ WebAssembly's [binary format](BinaryEncoding.md) is designed to be executable efficiently on a variety of operating systems and instruction set architectures, [on the Web](Web.md) and [off the Web](NonWeb.md). +## Execution + Execution environments which, despite [limited, local, non-determinism](Nondeterminism.md), don't offer the following characteristics may be able to execute WebAssembly modules @@ -38,15 +40,20 @@ characteristics: * An execution environment which offers forward progress guarantees to all threads of execution (even when executing in a non-parallel manner). +## API + WebAssembly does not specify any APIs or syscalls, only an [import mechanism](MVP.md#modules) where the set of available imports is defined by the host environment. In a [Web](Web.md) environment, functionality is accessed through the Web APIs defined by the -[Web Platform](https://en.wikipedia.org/wiki/Open_Web_Platform). Non-Web -environments can choose to implement standard Web APIs, standard non-Web APIs -(e.g. POSIX), or invent their own. Portability at the C/C++ level can, however, -still be achieved by programming to a standard API (e.g., POSIX) and relying -on the compiler and/or libraries to map the standard interface to the host -environment's available imports either -at compile-time (via `#ifdef`) or run-time (via [feature detection](FeatureTest.md) -and [dynamic loading](MVP.md#modules)). +[Web Platform](https://en.wikipedia.org/wiki/Open_Web_Platform). +[Non-Web](NonWeb.md) environments can choose to implement standard Web APIs, +standard non-Web APIs (e.g. POSIX), or invent their own. + +## Source-level + +Portability at the C/C++ level can be achieved by programming to +a standard API (e.g., POSIX) and relying on the compiler and/or libraries to map +the standard interface to the host environment's available imports either at +compile-time (via `#ifdef`) or run-time (via [feature detection](FeatureTest.md) +and dynamic [loading](MVP.md#modules)/[linking](FutureFeatures.md#dynamic-linking)). -- cgit v1.2.3 From e7d0d9625742c32888710c4a724fe5651e2826a3 Mon Sep 17 00:00:00 2001 From: Luke Wagner Date: Fri, 12 Jun 2015 11:15:29 -0500 Subject: Rename Execution section --- Portability.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Portability.md b/Portability.md index e83e24d..e94db71 100644 --- a/Portability.md +++ b/Portability.md @@ -4,7 +4,7 @@ WebAssembly's [binary format](BinaryEncoding.md) is designed to be executable efficiently on a variety of operating systems and instruction set architectures, [on the Web](Web.md) and [off the Web](NonWeb.md). -## Execution +## Assumptions for Efficient Execution Execution environments which, despite [limited, local, non-determinism](Nondeterminism.md), don't offer -- cgit v1.2.3