К основному содержанию
T TON Adoption
← Словарь
NODE/03 · Term

Continuation

Первичная вычислительная сущность TVM: «продолжение» — указатель на отрезок кода + контекст исполнения. Заменяет привычные процедуры и функции — все control-flow примитивы TVM строятся на continuation'ах.

Синонимы: continuation tvm, продолжение tvm

Continuation — фундаментальная вычислительная сущность TVM, заменяющая привычные понятия «функция», «процедура», «return-address». Это структура, содержащая указатель на отрезок кода + контекст исполнения (стек, регистры).

Зачем

В TVM нет инструкции CALL в Z80/x86-смысле — есть только манипуляции с continuation’ами. IFJMPREF { ... }, CALLREF, RETALT и т.д. — все они работают на continuation-уровне. Это даёт:

  • Высшие функции в FunC/Tact/Tolk «бесплатно»: continuation == first-class value.
  • Try/catch через c2-альтернативный continuation.
  • Loop’ы через recursion или через WHILE { c1 } { c2 }-комбинаторы.

Особенность для приходящих с EVM

Для разработчиков, приходящих с EVM, это самый необычный концепт TVM. Рекомендуется сразу почитать TVM Whitepaper §4 («Control flow, continuations, exceptions»), прежде чем писать собственный нетривиальный контракт. Без понимания continuation’ов невозможно прочитать TASM моста или биржи.

См. также