@GabrielFallen было бы здорово, если бы в WASM существовало что-то вроде Control.Concurrent.STM. Я знаю, что нет шансов, но все же
STM кранйне плохо сочетается с императивным программированием — невозможно проводить оптимизации, так что производительность падает ниже плинтуса. Поэтому STM прижилась только в Haskell и более-менее в Clojure (но там ей почти не пользуются), а в C++ так и не взлетела (несмотря на попытки поддержки со стороны процессоров), а в C# вообще забраковали на этапе прототипа.
при выполнении call_indirect динамически проверяется тип функции, которая вызывается. Они обходят это там в примерах с помощью вызова другой функции с таким же типом
STM кранйне плохо сочетается с императивным программированием — невозможно проводить оптимизации, так что производительность падает ниже плинтуса. Поэтому STM прижилась только в Haskell и более-менее в Clojure (но там ей почти не пользуются), а в C++ так и не взлетела (несмотря на попытки поддержки со стороны процессоров), а в C# вообще забраковали на этапе прототипа.
In-memory transactional DB =/= STM. 😉 Кроме того, на мой малопросвещённый взгляд кажется, что Mnesia в мире Erlang используют сильно реже, чем STM в мире Haskell...
Поучаствовал в Podlodka Podcast, рассказал о #WebAssembly. Кажется там было несколько неточностей ближе к концу (вроде назвал линейную память разделяемой и может было ещё что-то, пока не переслушивал сам), но в целом надеюсь, что должно быть интересно! :)