Я (со)автор небольшой библиотеки под названием clojail, которая была своего рода переосмыслением clj- песочница. Он также использует песочницу Java, но также предоставляет функции для изолирования вещей, специфичных для Clojure. tryclj и 4clojure использовать его.
Я не понимаю, что вы имеете в виду под остальным. Песочница JVM хороша тем, что может предотвратить ввод-вывод. Clojail идет дальше, разрешая тайм-ауты для предотвращения долгого выполнения кода. Если вы говорите, что «люди могут создавать потоки, а я не смогу их убить», clojail убивает потоки, созданные внутри «песочницы», и обычно делает все возможное, чтобы предотвратить бегство бродячих потоков. Песочница JVM (и специфичные для clojail вещи) по-прежнему предотвращает запуск опасного кода в потоках.
В общем, проверьте clojail. Это может быть то, что вам нужно. Этого достаточно для большинства целей, и это единственная игра в городе (за исключением clj-sandbox, которая не поддерживается) для тюрем. Это не всегда лучшее решение, но обычно самое простое.
Следующий шаг, если clojail не делает то, что вам нужно, — это развертывание собственного механизма тюремного заключения, который включает использование песочницы JVM и выделение JVM. Это имеет огромные накладные расходы, поэтому я бы по возможности избегал этого. Определенно больше не в 4KB Luatown. ;)
person
Rayne
schedule
09.06.2012