Песочница и бесстакетный питон?
Мне нужен скриптовый язык для описания очень сложных рабочих процессов.
-
Эти рабочие процессы необходимо приостановить всякий раз, когда требуется пользовательский ввод, и возобновлено после того, как оно дано (может быть месяцы спустя). Кажется, сериализуемые продолжения из Stackless были бы хорошим выбором.
-
Пользователи также должны иметь возможность редактировать сами рабочие процессы. Я не уверен, как сериализованные продолжения будут обрабатывать базовые изменения кода. Я думаю, что мне нужно спасти этого мерзавца. версия хэшируется вместе с продолжением,и только "обновить" продолжение на контрольных точках, где не требуется состояние.
-
Я предпочитаю синтаксис Python, так как читабельность-это очень высокий приоритет., и динамические характеристики являются ключевыми. Но я готов выслушать любые предложения.
- В конце концов я, вероятно, напишу визуальный редактор блок-схем, который будет манипулировать базовым кодом.
Я внимательно посмотрел на Стаклесса и Пайпи. Стаклесс, кажется, не дает никаких обещаний песочница, в то время как PyPy, кажется, предлагает и без стека, и в песочнице, но я не могу найти никаких упоминаний о том, чтобы иметь и то, и другое одновременно.
Какие-нибудь решения? Если есть эксперт, который может помочь мне с хорошим решением, у меня есть счет paypal, и я готов его использовать.
1 ответ:
Ваше требование сериализации будет затруднено в большинстве языков с собственными библиотеками совместной работы. Возможно, потребуется реализовать совместные подпрограммы другим способом, чтобы обеспечить сериализацию графа объектов.
Lua имеет библиотеку Pluto, которая может сохранять потоки (co-routines): http://lua-users.org/wiki/PlutoLibrary
Что касается" безопасного " выполнения в песочнице, Lua является первым выбором. Вы можете иметь несколько состояний lua в одном приложении с нулевыми проблемами, и он поддерживает совместные процедуры в языке. Он также имеет преимущество быть довольно быстрым в своей форме VM, и с luajit является конкурентоспособным с Java JIT во многих случаях.