Pregunta

Necesito un lenguaje de secuencias de comandos para describir flujos de trabajo muy complicados.

  • Estos flujos de trabajo deben detenerse cuando se requiere la entrada del usuario y se reanudan después de que se dan (podría ser meses después). Parece que las continuaciones serializables de Stackless serían un buen ajuste.

  • Los usuarios también deben poder editar los flujos de trabajo ellos mismos. No estoy seguro de cómo las continuaciones serializadas manejarían los cambios de código subyacentes. Creo que podría necesitar guardar el hash de la versión Git junto con la continuación, y solo 'actualizar' una continuación en los puntos de control donde no se necesita ningún estado.

  • Prefiero la sintaxis de Python ya que la legibilidad es una prioridad muy alta, y las características dinámicas son clave. Sin embargo, estoy abierto a sugerencias.

  • Eventualmente, probablemente escribiré un editor visual de gráfico de flujo que maniupula el código subyacente.

He mirado en profundidad a Stackless y Pypy. Stackless no parece ofrecer ninguna promesa de sandboxing, mientras que Pypy parece ofrecer tanto Stackless como Sandboxed, pero no puedo encontrar ninguna mención de tener los dos al mismo tiempo.

¿Alguna solución? Si hay un experto por ahí que puede hacer que vaya con una buena solución, tengo una cuenta de PayPal y estoy dispuesto a usarla.

¿Fue útil?

Solución

Su requisito de serialización será difícil en la mayoría de los idiomas con bibliotecas nativas de co-rutina. Es posible que deba implementar co-rutinas de otra manera para permitir la serialización del gráfico de objetos.

Lua tiene la biblioteca Plutón, que puede persistir hilos (co-rutinas): http://lu-users.org/wiki/plutolibrary

En cuanto a la ejecución "segura" en una caja de arena, Lua es una primera opción. Puede tener múltiples estados de LUA en una sola aplicación con cero problemas, y admite coutines co-rutinas en el idioma. También tiene el beneficio de ser bastante rápido en su forma VM y con lujit es competitivo con Java JIT en muchos casos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top