diff --git a/source b/source index f9cfdf3563c..55435ae7ca9 100644 --- a/source +++ b/source @@ -2855,6 +2855,8 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute @@ -3905,6 +3909,17 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute +
Worklets
+ +
+

The following feature is defined in the Worklets specification:

+ + +
+
@@ -88451,6 +88466,121 @@ import "https://example.com/foo/../module2.js"; data-x="concept-module-script-module-record">module record.

+
Integration with the JavaScript agent formalism
+ +

JavaScript defines the concept of an agent. Until such a time that this standard + has a better handle on lifetimes, we define five types of agents that + user agents must allocate at the appropriate time.

+ +

In the future, when this specification has a better handle on lifetimes, we hope + to define exactly when agents and agent + clusters are created.

+ +

JavaScript is expected to define agents in more detail; in particular that they hold a set of realms: tc39/ecma262 issue #882.

+ +
+
Similar-origin window agent
+
+

An agent whose [[CanBlock]] is false and whose set of realms consists of all realms of Window objects whose + relevant settings object's responsible browsing context is in the same + unit of related similar-origin browsing contexts.

+ +

Two Window objects that are same origin can be in + different similar-origin window agents, for + instance if they are each in their own unit of related similar-origin browsing + contexts.

+
+ +
Dedicated worker agent
+

An agent whose [[CanBlock]] is true and whose set of realms consists of a single DedicatedWorkerGlobalScope object's Realm.

+ +
Shared worker agent
+

An agent whose [[CanBlock]] is true and whose set of realms consists a single SharedWorkerGlobalScope object's Realm.

+ +
Service worker agent
+

An agent whose [[CanBlock]] is false and whose set of realms consists of a single ServiceWorkerGlobalScope object's Realm.

+ +
Worklet agent
+
+

An agent whose [[CanBlock]] is false and whose set of realms consists of a single WorkletGlobalScope + object's Realm.

+ +

While conceptually it might be cleaner for worklets that end up with multiple + realms to put all those in the same agent, it is not observable in practice.

+
+
+ +

To determine the manifestation of JavaScript's agent cluster concept in user + agents, we define which agents can share memory with + another. Then all the agents that can can share memory + with each other form an agent cluster.

+ +

The can share memory with relation is symmetric.

+ +

A similar-origin window agent, dedicated worker agent, shared + worker agent, or service worker agent, agent, can share + memory with any dedicated worker agent whose single realm's global object's owner + set contains an item whose relevant Realm + belongs to agent.

+ +

We use item above as an owner set can contain Document + objects.

+ +

A worklet agent … currently worklets have + no clearly defined owner, see: w3c/css-houdini-drafts issue + #224.

+ +

The agent cluster concept is crucial for defining the JavaScript memory model, and + in particular among which agents the backing data of + SharedArrayBuffer objects can be shared.

+ +
+

The following pairs of global objects are each within the same agent cluster, and + thus can use SharedArrayBuffer instances to share memory with each other:

+ + + +

The following pairs of global objects are not within the same agent + cluster, and thus cannot share memory:

+ + +
+ @@ -119795,6 +119925,9 @@ INSERT INTERFACES HERE
[WHATWGWIKI]
The WHATWG Wiki. WHATWG.
+
[WORKLETS]
+
Worklets. I. Kilpatrick. W3C.
+
[WSP]
The WebSocket protocol, I. Fette, A. Melnikov. IETF.