Better connection management and Pharo 9 compatibility
Version is based on updated BasysNetwork and TostSerializer.
- New Basys version provides better connection management and simplifies the implementation of specific networks:
- SeamlessRemotePeer is introduced to avoid extension methods
- Clever result deliver for requests.
No connection with remote side (or broken by any reason) is handled with special logic:- remote side does not fail and does not hang when it needs to return a result to a sender (no connection - no result)
- client side (a sender) fails as soon as no connection is detected. The result delivery strategy on client side periodically checks the connectivity state and fails when it's broken. No more an infinite waiting on the result semaphore. No connection means that nothing can be returned ever.
-
New TostSerializer simplifies the creation of new transporters.
Now SeamlessNetwork has a #transport variable with SeamlessTransport instance. The network simply asks the transport to send and receive requests using Tost API. -
Pharo 9 compatibility consists of two parts:
- missing transfer logic for FullBlockClosure and CompiledBlock (requires Pharo fix pharo-project/pharo#7321)
FullBlockClosure brings extra indirection in CompiledMethod structure. Now it can include multiple compiled codes for blocks. And it requires extra configuration how to transfer methods as a whole thing (by value) suitable for the remote execution. - missing transfer logic for variables.
Variables were unified under Variable hierarchy and now they are used directly in AST. It requires explicit value transfer strategy for all of them. For compatibility with old images it is duplicated in LiteralVariable and Slot