Sandbox ET python stackless?
-
29-09-2019 - |
Question
Je besoin d'un langage de script pour décrire les flux de travail très compliqué.
-
Ces flux de travail doivent être mis en pause chaque fois que l'entrée d'utilisateur est requise, et repris après qu'il est donné (peut-être des mois plus tard). On dirait continuations sérialisables de Stackless serait un bon ajustement.
-
Les utilisateurs doivent également être en mesure de modifier eux-mêmes flux de travail. Je ne sais pas comment continuations sérialisé traiterait des changements de code sous-jacent. Je pense que je pourrais avoir besoin d'enregistrer le hachage version Git ainsi que la poursuite, et seulement « mise à niveau » continuation aux postes de contrôle où aucun état est nécessaire.
-
Je préfère la syntaxe Python depuis La lisibilité est une priorité très élevée, et les caractéristiques dynamiques sont essentielles. Je suis ouvert aux suggestions, cependant.
- Finalement, je vais probablement écrire un éditeur de diagramme visuel qui maniupulates le code sous-jacent.
Je l'ai regardé en profondeur Stackless et PyPy. Stackless ne semble pas offrir des promesses de sandboxing, alors que PyPy semble offrir à la fois stackless et sandbox, mais je ne trouve aucune mention d'avoir les deux en même temps.
Les solutions? S'il y a un expert là-bas qui peut me faire aller avec une bonne solution, j'ai un compte paypal et je suis prêt à l'utiliser.
La solution
Votre exigence de sérialisation sera difficile dans la plupart des langues avec des bibliothèques co-routine natifs. Vous pourriez avoir besoin de mettre en œuvre des co-routines d'une autre manière pour permettre sérialisation graphe d'objet.
Lua a la bibliothèque Pluton, qui peut persister fils (co-routines): http: // lua- users.org/wiki/PlutoLibrary
En ce qui concerne l'exécution « sûr » dans un bac à sable, Lua est un premier choix. Vous pouvez avoir plusieurs états lua dans une application unique avec zéro problèmes, et il prend en charge les co-routines dans la langue. Il a aussi l'avantage d'être assez rapide dans sa forme VM, et luajit est compétitive avec Java JIT dans de nombreux cas.