2010-11-08 9 views
2

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

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

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

  • Я предпочитаю синтаксис Python с читабельность является очень высоким приоритетом, и динамическими функциями являются ключевыми. Однако я открыт для предложений.

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

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

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

ответ

2

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

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

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

+0

Сериализация - это ключевая функция, которую я ищу. Он рекламируется множеством языков. Например, Java имеет JavaFlow. Но я обнаружил, что рекламируемые функции и практические функции могут быть разными. Я надеюсь, что у кого-то есть опыт использования указанных функций. –

+0

@Computer: попробуйте Pluto для Lua - он утверждает, что может сериализовать lua_states. http://lua-users.org/wiki/PlutoLibrary –

+0

Спасибо, я посмотрю. Знать какие-либо примеры использования? –