Venice is a Clojure inspired sandboxed Lisp dialect with excellent Java interoperability.
Venice is a Lisp dialect born from the need for a safe, sandboxed language that is suitable to serve as a scripting and expression language, to implement scriptable extension points and rules for applications, and to drive standalone applications.
Venice supports macros, tail-recursion, dynamic code loading, multimethods, protocols and many more. It comes with excellent Java interoperability, and a configurable sandbox that can prevent all sorts of dangerous JVM interactions like reading/writing files, invoking System.exit(0) or any other malicious action. Venice has been designed from the ground-up with a sandbox making it a first class citizen.
Venice comes with library of 800+ core functions. It's immutable persistent data structures together with Clojure style atoms, futures, promises, and agents greatly simplify writing concurrent code.
Because Venice does not depend on any runtime libraries (other than the JVM) you can easily add it as standalone .jar to your classpath.
Venice requires Java 8 or newer.
Want to try Venice in a REPL? Test it on Gitpod
- Getting started
- REPL
- Introduction to Functional Programming
- Execute Venice scripts
- Embedding Venice in Java
- Datatypes
- Custom Datatypes
- Lazy Sequences
- Functions
- Control Flow
- Filter-Map-Reduce
- Transducers
- Recursion
- Mutable Refs
- Destructuring
- Advanced string features
- Concurrency
- Java interoperability
- Namespaces
- Exception handling
- Multimethods and Protocols
- Macros
- Sandbox
- JSON
- CSV
- Shell Scripts
- Extension modules
- Tree walker
- Benchmarks
- Multi-File Apps
- Development Tools
- Build dependencies
- Performance comparison Venice - Clojure - Java