220711

220711

Notes

In easy words, is about making a pseudo-ATM. First, make a giant object. This giant object has lots of APIs which look exactly like APIs. Give this object to a which includes third-party codes.

AB57BB

ATM = Real . Client = Third-party codes. Person behind the ATM = .

Progress

  • Used debug/main.js to find console printouts.

CFB4E5

Confirmed a demo script created on 2022-07-06 yields logs as above.

EFE641

Source of these console printouts.

Naïve plan -- Drop-and-Replace postMessage

What if we drop-and-replace postMessage with postViaSab? Make postViaSab that follows the same interface as postMessage but is internally made with . Wouldn't this yield much higher ? (No, it wouldn't.)

Shortcomings of

  • Fixed in Size
  • Thread-Unsafe
  • Synchronous

requires explicit and abstractions to overcome these shortcomings. Drop-and-replace will not be that easy. But what do I mean by this?

Currently, only has asynchronous data channels. batch processes requests between agents (i.e., it collects operations and sends them at once.) will have support for general tasks, extended tasks, etc. What kinds of data channels does have?

Would it be efficient to change all asynchronous data channels to synchronous ?

In easy words, implements a premium-tier fast lane that will handle priority tasks. It might block user interaction because is synchronous. This is why we need a proper .

Abstractions

The reason for such is to eradicate any compatibility issues. For example, one incompatible operation is Element.prototype.getClientBoundingRect(). in requires synchronous layout calculation because it depends on values that could only be found after . This calculation must process in a blocking condition. This blocking condition must happen in . cannot handle libraries because it lacks synchronous support.

We aim to build . However, a guest app should look as as if blocking APIs blocks a thread. Blocking in can be done in two ways. should use either of the above to attain .

  1. Synchronous XMLHttpRequest.
  2. . Use wait() and notify() for blocking constructs.

To automatically use for every third-party app, should abstract this process.

Final Goal

  • Replace all unofficial implementation of getClientBoundingRect in with Element.prototype.getClientBoundingRect().
  • Geolocation might be easier, because it is an asynchronous .
  • The hard part is transports and .

Codecs

We will need a codec to share data on . Candidates include and . We could also make our codec.

Personal Notes

  • Fortune Cookie: Collaborate with those who possess both intelligence and integrity.
Backlinks0

No backlinks found.