Simplify statement of rules by eliminating boilerplate. Remove IterativeComputation, which was adding too much complexity.
Implement rules in Scala using Scala scripting engine.
Adding import primer so that rule can use any data structures available on the classpath.
Expression output now needs to be an Option[Any]. Took out some needless constructor parameters. Added some documentation. Took out needless EvalCode functions that aren't going to be used.
Document more thoroughly; add sample security policy and make tests work with security policy.
Some minor fixes to the README.
Some renames to bring the main branch more in line with the scala-rules branch, before putting the clojure rules on a side branch.
Pass in list of imports. Whitelist a lot more packages. Simplify EvalCode. Up version number.
Specify a result key instead of an output map.
Allow security configuration to be passed in. Computations are now a function of Map[Symbol,Any] to Map[Symbol,Any].
Refresh java policy after pointing to the new policy file.
Security configuration should pass the URI of the security policy file rather than having EvalCode construct it.
Add tests for SequentialComputation exception handling; refactor tests into two classes, and break out common code.
Change the way of aborting a sequence of computations; introduce a new SequenceAbortingComputation and case classes AbortIfNoResults and AbortIfHasResults to abort a sequence based on the results of the inner computation.
Add actual logging and exception handling around compilation. Rule will inactivate itself if there is an exception when compiling.
Log when exceptions are thrown during computation.
Remove "empty checks" in rules to make sure there is some value for the input keys. Nonexistent keys will now throw exceptions.
Add debug logging for computations.
Test sandboxing of computation code.
Test that Java security policy file is effective.