Здравствуйте, WolfHound, Вы писали:
Прочитал
https://github.com/WebAssembly/design/blob/master/AstSemantics.md
Ох, как мне это развидеть?
1)Local and Memory types
https://github.com/WebAssembly/design/blob/master/AstSemantics.md#local-and-memory-types
Loads convert Memory types to Local types according to the following rules:
Тут явно торчат уши текущей реализации.
Когда реализация протекает в модель пиши пропало.
Если хочется проводить эти конвертации нужно делать это на этапе загрузки байткода.
В самом же байткоде должны быть совершенно конкретные типы.
2)Control flow structures
https://github.com/WebAssembly/design/blob/master/AstSemantics.md#control-flow-structures
Опять протечка реализации в модель.
Только в значительно более тяжёлой форме.
Данные извращения нужны исключительно для компиляции в жабаскрипт. И только по тому, что жабаскрипт не умеет goto.
Break and continue statements can only target blocks or loops in which they are nested. This guarantees that all resulting control flow graphs are reducible, which leads to the following advantages:
1)Simple and size-efficient binary encoding and compilation.
Грамотная стековая машина как минимум не хуже.
При этом гораздо гибче.
2)Any control flow—even irreducible—can be transformed into structured control flow with the Relooper algorithm, with guaranteed low code size overhead, and typically minimal throughput overhead (except for pathological cases of irreducible control flow). Alternative approaches can generate reducible control flow via node splitting, which can reduce throughput overhead, at the cost of increasing code size (potentially very significantly in pathological cases).
3)The signature-restricted proper tail-call feature would allow efficient compilation of arbitrary irreducible control flow.
Они эти пляски с бубном записали в преимущества?
Почему разработчики компиляторов должны выпиливать для своего кода всякие релуперы?
При том, что такая модель поможет только при начальной реализации, которая транслирует этот кода в жабаскрипт, а когда у них будет нормальный компилятор на клиенте, всё это будет не нужно. На все разработчики компиляторов до скончания веков будут вынуждены тратить уйму времени для того чтобы запихнуть свой код в эту модель.
По ссылке на signature-restricted proper tail-call таких слов нет. Хотя я, конечно, понял, что они пытаются этим сказать.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>