Coordination with the real world is and always has been the pain point with STM.
Coordination with the real world is and always has been the pain point with STM. It's fine if your STM universe lives entirely in a subset of your data on a single machine [1], or within a single database [2], or with a single decision-making unit [3]. Most languages have extremely poor support for separating interactions with the real world from interactions that occur entirely within one serializable context (a thread working with thread-local memory, for example). Can you safely replay arbitrary C, C++, etc.? No, because side-effecting code could run at any time and occur in any context. So that is one problem that has to be solved first. Suppose you've solved that problem. Well, now for a distributed system, you need to make STM talk to STM. Make one module talk to another over a network, or a filesystem, or another database, or a client browser. Do you have STM working in the JavaScript running on client's machines? And even if you managed that feat, do you have end-to-end STM from your datastore to your client's actions? Distributed STM that wasn't painful to use, either to write or in terms of performance, would be a sort of holy-grail of distributed computing. I don't think any language or toolchain is there yet. [1] Haskell, Clojure, et al STM engines. [2] SQL-compliant relational databases such as DB2, Oracle, SQL Server, as well as distributed databases like HyperDex that support true transactions. [3] Paxos, Raft, and other decision-making algorithms only ever externally appear to be consistent, but are internally complex and might have an internal tug-of-war.
Posted by AaronFriel on Jun 29, 2014, 10:37 PM
Tags
Related issues
- That Reddit post is feeding more conspiracy thinking than helping.
- Support BYOK/Custom Models for Inline Code Completions
- DNS-PERSIST-01 challenge support (planned for late Q1 2026)
- Yeah I can't really blame people for not realising they have shitty mics and shitty internet because it's really hard for them to tell!
- Onboarding guide for FluentAssertions
- Add WebTransport support
Raise real-world problems, find people facing the same issue, and discuss solutions.9,500 issues0 comments
support (Network)
That Reddit post is feeding more conspiracy thinking than helping.
Support BYOK/Custom Models for Inline Code Completions
DNS-PERSIST-01 challenge support (planned for late Q1 2026)
Yeah I can't really blame people for not realising they have shitty mics and shitty internet because it's really hard for them to tell!
Onboarding guide for FluentAssertions
Add WebTransport support
> solar electricity is already cheaper than natural gas Does that include transmission?
Support for WireGuard only peers
Coordination with the real world is and always has been the pain point with STM.
Coordination with the real world is and always has been the pain point with STM. It's fine if your STM universe lives entirely in a subset of your data on a single machine [1], or within a single database [2], or with a single decision-making unit [3]. Most languages have extremely poor support for separating interactions with the real world from interactions that occur entirely within one serializable context (a thread working with thread-local memory, for example). Can you safely replay arbitrary C, C++, etc.? No, because side-effecting code could run at any time and occur in any context. So that is one problem that has to be solved first. Suppose you've solved that problem. Well, now for a distributed system, you need to make STM talk to STM. Make one module talk to another over a network, or a filesystem, or another database, or a client browser. Do you have STM working in the JavaScript running on client's machines? And even if you managed that feat, do you have end-to-end STM from your datastore to your client's actions? Distributed STM that wasn't painful to use, either to write or in terms of performance, would be a sort of holy-grail of distributed computing. I don't think any language or toolchain is there yet. [1] Haskell, Clojure, et al STM engines. [2] SQL-compliant relational databases such as DB2, Oracle, SQL Server, as well as distributed databases like HyperDex that support true transactions. [3] Paxos, Raft, and other decision-making algorithms only ever externally appear to be consistent, but are internally complex and might have an internal tug-of-war.
Comments (0)
No comments yet. Start the discussion.