Executor types

Типы исполнителей фрагмнетов

Каждый фрагмент может поддерживать несколько типов исполнителей (задается в метаданных фрагмента):

  • LuaC (референсная реализация интерпретатора Lua 5.3)
  • LuaJit (высокопроизводительный трассирующий jit-компилятор Lua)
  • LuaJ (JVM-реализация Lua 5.1)
  • VmLuaJ (aналогично LuaJ, но запуск производится внутри процесса Runtime node)
  • CPython (референсная реализация интерпретатора Python 3.6)

InVm-исполнители (VmLuaJ) не могут исполнять недоверенные фрагменты (не прошедшие стадию PTS-верификации), т.к. запускаются без какой-либо изоляции и возможности экстренной остановки.

Характеристики производительности Lua-исполнителей:

Задержка запуска фрагмента, по возрастанию:

  • интерпретация в контексте JVM (LuaJ, disabled jit)
  • jit-based исполнение в контексте JVM (LuaJ, enabled jit)
  • интерпретация вне контеска JVM (LuaC)
  • jit-based исполнение вне контекста JVM (LuaJit)

Пропускная способность, по возрастанию:

  • (LuaJ, disabled jit) / LuaC. Требует замеров (предположительно, разница не существенна)
  • (LuaJ, enabled jit)
  • LuaJit