Песочница и бесстакетный питон?


Мне нужен скриптовый язык для описания очень сложных рабочих процессов.

  • Эти рабочие процессы необходимо приостановить всякий раз, когда требуется пользовательский ввод, и возобновлено после того, как оно дано (может быть месяцы спустя). Кажется, сериализуемые продолжения из Stackless были бы хорошим выбором.

  • Пользователи также должны иметь возможность редактировать сами рабочие процессы. Я не уверен, как сериализованные продолжения будут обрабатывать базовые изменения кода. Я думаю, что мне нужно спасти этого мерзавца. версия хэшируется вместе с продолжением,и только "обновить" продолжение на контрольных точках, где не требуется состояние.

  • Я предпочитаю синтаксис Python, так как читабельность-это очень высокий приоритет., и динамические характеристики являются ключевыми. Но я готов выслушать любые предложения.

  • В конце концов я, вероятно, напишу визуальный редактор блок-схем, который будет манипулировать базовым кодом.

Я внимательно посмотрел на Стаклесса и Пайпи. Стаклесс, кажется, не дает никаких обещаний песочница, в то время как PyPy, кажется, предлагает и без стека, и в песочнице, но я не могу найти никаких упоминаний о том, чтобы иметь и то, и другое одновременно.

Какие-нибудь решения? Если есть эксперт, который может помочь мне с хорошим решением, у меня есть счет paypal, и я готов его использовать.

1 2

1 ответ:

Ваше требование сериализации будет затруднено в большинстве языков с собственными библиотеками совместной работы. Возможно, потребуется реализовать совместные подпрограммы другим способом, чтобы обеспечить сериализацию графа объектов.

Lua имеет библиотеку Pluto, которая может сохранять потоки (co-routines): http://lua-users.org/wiki/PlutoLibrary

Что касается" безопасного " выполнения в песочнице, Lua является первым выбором. Вы можете иметь несколько состояний lua в одном приложении с нулевыми проблемами, и он поддерживает совместные процедуры в языке. Он также имеет преимущество быть довольно быстрым в своей форме VM, и с luajit является конкурентоспособным с Java JIT во многих случаях.