This "small" Clojure interpreter can be used from Clojure on the JVM and GraalVM and JavaScript/ClojureScript. It implements a subset of Clojure. The main goal is be able to execute snippets of Clojure in environments where you normally don't get to use Clojure's "eval" or where it isn't safe to do so.
Its main use is being the interpreter for https://github.com/borkdude/babashka, a native Clojure scripting tool which can be used to alleviate your bash pains, but it could potentially be interesting for other use cases too.
Malli (https://github.com/metosin/malli), a Clojure schema library, is using it for letting users express in code what they cannot do using the normal configuration language.
It would be really nice if you could expose the parser to Javascript as well. I could use this to integrate with some Javascript tooling in my CLJS frontend (e.g. purgecss extractors).
There is a parser lib which was extracted from sci: https://github.com/borkdude/edamame. I guess that could have a JS interface, but I'm not sure what it would look like to make it useful for you.
Hit me up on Clojurians Slack or Twitter so we can discuss your needs.
Its main use is being the interpreter for https://github.com/borkdude/babashka, a native Clojure scripting tool which can be used to alleviate your bash pains, but it could potentially be interesting for other use cases too.
Malli (https://github.com/metosin/malli), a Clojure schema library, is using it for letting users express in code what they cannot do using the normal configuration language.
Closh is investigating if sci can be used to compile closh to native code using GraalVM: https://github.com/dundalek/closh/tree/feature/sci.
Undocumented features (still figuring out the best API):
- Explicit allowing and denying of certain symbols.
- Limit evaluation of infinite sequences.
A pure Java API is certainly possible if this is useful to anyone.