Работая над безсерверной архитектурой, мне нужен был встроенный язык сценариев для Go.
Я подумал об использовании встроенной виртуальной машины Lua. Мне нравится Lua, поскольку он был разработан как встроенный язык сценариев. Покопавшись в нескольких реализациях Go Lua VM, я остановился на Gopher Lua.
Хотя ВМ Shopify’s Lua мне тоже понравилась, но Gopher Lua быстрее, см. бенчмарк.
Альтернативный дизайн, который я рассматривал, заключался в использовании Docker для запуска бессерверных микросервисов, подключающихся к внешнему миру через HTTP JSON API. Таким образом, используя абстракцию API, такую как Swagger, микрофункции событий можно сделать независимыми от языка. Hyper Ledger следует этому подходу для смарт-контрактов.
Еще один аспект, который я рассматривал, — это JS (Java Script) против Lua. JS очень популярен, и веб-разработчики уже знакомы с ним. Итак, на основе бенчмарка Gopher Lua я попробовал свой:
Результат показывает, что стратегия Hyper Ledger по использованию языка Go является самой быстрой среди скриптовых языков Lua и JS; JS быстрее, чем Lua.
Таким образом, для компилируемых языков я буду придерживаться Go, а для скриптового языка — Java Script.