Skip to content
/ venice Public

Venice, a Clojure inspired sandboxed Lisp dialect with Java interoperability serving as a safe scripting language.

License

Notifications You must be signed in to change notification settings

jlangch/venice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gitpod Ready-to-Code Java Version CI

Release (latest by date) Release Date GitHub commits since latest release (by date)

Venice

Venice is a Clojure inspired sandboxed Lisp dialect with excellent Java interoperability.

Overview

Venice is a Lisp dialect born from the need for a safe, sandboxed, general-purpose language. It shares with Lisp the code-as-data philosophy and a powerful macro system.

Venice is mainly a functional programming language focusing on immutable, persistent data structures.

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 unwanted JVM and Venice interactions. Venice has been designed from the ground-up with a sandbox, making it a first class citizen.

Venice includes a comprehensive library of over 900 core functions. Its immutable persistent data structures, along with Clojure-style atoms, futures, promises, and agents, greatly simplify the process of writing concurrent code.

Venice seamlessly and transparently integrates with Java and any third-party libraries, giving you access to a vast array of libraries, frameworks, and tools.

Venice's strength is making complex scripting tasks easy. Have you ever felt limited by Bash or PowerShell scripts? With Venice, you can write concise and elegant platform independent scripts effortlessly.

Venice does not depend on any runtime libraries (other than the JVM). You can easily add it as a standalone JAR to your classpath.

Venice requires Java 8 or newer.

Would you like to try Venice in an interactive REPL environment? Test it on Gitpod

Cheat Sheet

Cheat Sheet: HTML PDF

Change Log

Change Log

Documentation

Getting the latest release

You can can pull it from the central Maven repositories:

<dependency>
  <groupId>com.github.jlangch</groupId>
  <artifactId>venice</artifactId>
  <version>1.12.31</version>
</dependency>

Building

From a command shell, run ./gradlew shadowJar in the project home dir, to invoke the Gradle task to build the Venice JAR.

On MacOS / Linux

Give gradlew execute permission after cloning the Venice git repository ...

venice% chmod +x ./gradlew

... and build the project

venice% ./gradlew clean shadowJar

On Windows

C:\Users\foo\venice> gradlew.bat clean shadowJar

Contributing

I accept Pull Requests via GitHub. There are some guidelines which will make applying PRs easier for me:

  • No tabs! Please use spaces for indentation.
  • Respect the existing code style for each file.
  • Create minimal diffs - disable on save actions like reformat source code or organize imports. If you feel the source code should be reformatted create a separate PR for this change.
  • Provide JUnit tests for your changes and make sure your changes don't break any existing tests by running gradle.

License

This code is licensed under the Apache License v2.

3rd Party Open Source

Stargazers over time

Stargazers over time