diff --git a/.github/workflows/package-pr.yaml b/.github/workflows/package-pr.yaml
index 18a8b66..1fda6be 100644
--- a/.github/workflows/package-pr.yaml
+++ b/.github/workflows/package-pr.yaml
@@ -94,7 +94,7 @@ jobs:
docker run --network container:api appropriate/curl -s --retry 10 --retry-connrefused http://localhost:2000/runtimes
echo Waiting for Index to start..
- docker run --network container:piston_fs_repo appropriate/curl -s --retry 30 --retry-connrefused http://localhost:8000/index
+ docker run --network container:piston_fs_repo appropriate/curl -s --retry 200 --retry-connrefused http://localhost:8000/index
echo Adjusting index
sed -i 's/piston_fs_repo/localhost/g' repo/index
diff --git a/packages/groovy/3.0.7/build.sh b/packages/groovy/3.0.7/build.sh
new file mode 100755
index 0000000..ae1ecc5
--- /dev/null
+++ b/packages/groovy/3.0.7/build.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+# Groovy depends on JDK8+
+mkdir -p java
+cd java
+curl "https://download.java.net/java/GA/jdk15.0.2/0d1cfde4252546c6931946de8db48ee2/7/GPL/openjdk-15.0.2_linux-x64_bin.tar.gz" -o java.tar.gz
+tar xzf java.tar.gz --strip-components=1
+rm java.tar.gz
+cd ..
+
+curl -L "https://dl.bintray.com/groovy/maven/apache-groovy-binary-3.0.7.zip" -o groovy.zip
+unzip -q groovy.zip
+rm groovy.zip
diff --git a/packages/groovy/3.0.7/environment b/packages/groovy/3.0.7/environment
new file mode 100644
index 0000000..842a62b
--- /dev/null
+++ b/packages/groovy/3.0.7/environment
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+# Groovy requires JAVA_HOME to be set
+export JAVA_HOME=$PWD/java
+export PATH=$PWD/groovy-3.0.7/bin:$PATH
diff --git a/packages/groovy/3.0.7/metadata.json b/packages/groovy/3.0.7/metadata.json
new file mode 100644
index 0000000..b790007
--- /dev/null
+++ b/packages/groovy/3.0.7/metadata.json
@@ -0,0 +1,5 @@
+{
+ "language": "groovy",
+ "version": "3.0.7",
+ "aliases": ["groovy", "gvy"]
+}
diff --git a/packages/groovy/3.0.7/run b/packages/groovy/3.0.7/run
new file mode 100644
index 0000000..e31d7d4
--- /dev/null
+++ b/packages/groovy/3.0.7/run
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+groovy "$@"
diff --git a/packages/groovy/3.0.7/test.groovy b/packages/groovy/3.0.7/test.groovy
new file mode 100644
index 0000000..e4eb9d8
--- /dev/null
+++ b/packages/groovy/3.0.7/test.groovy
@@ -0,0 +1 @@
+println 'OK'
diff --git a/packages/ocaml/4.12.0/build.sh b/packages/ocaml/4.12.0/build.sh
new file mode 100755
index 0000000..fd91cdd
--- /dev/null
+++ b/packages/ocaml/4.12.0/build.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+PREFIX=$(realpath $(dirname $0))
+
+mkdir -p build
+cd build
+
+curl -L "https://github.com/ocaml/ocaml/archive/4.12.0.tar.gz" -o ocaml.tar.gz
+tar xzf ocaml.tar.gz --strip-components=1
+rm ocaml.tar.gz
+
+./configure --prefix="$PREFIX"
+make -j$(nproc)
+make install -j$(nproc)
+
+cd ..
+rm -rf build
diff --git a/packages/ocaml/4.12.0/compile b/packages/ocaml/4.12.0/compile
new file mode 100644
index 0000000..c1d3e6a
--- /dev/null
+++ b/packages/ocaml/4.12.0/compile
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+ocamlc -o out "$@"
diff --git a/packages/ocaml/4.12.0/environment b/packages/ocaml/4.12.0/environment
new file mode 100644
index 0000000..116e7aa
--- /dev/null
+++ b/packages/ocaml/4.12.0/environment
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+export PATH=$PWD/bin:$PATH
diff --git a/packages/ocaml/4.12.0/metadata.json b/packages/ocaml/4.12.0/metadata.json
new file mode 100644
index 0000000..ddbfb89
--- /dev/null
+++ b/packages/ocaml/4.12.0/metadata.json
@@ -0,0 +1,5 @@
+{
+ "language": "ocaml",
+ "version": "4.12.0",
+ "aliases": ["ocaml", "ml"]
+}
diff --git a/packages/ocaml/4.12.0/run b/packages/ocaml/4.12.0/run
new file mode 100644
index 0000000..e2663b1
--- /dev/null
+++ b/packages/ocaml/4.12.0/run
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+shift
+./out "$@"
diff --git a/packages/ocaml/4.12.0/test.ml b/packages/ocaml/4.12.0/test.ml
new file mode 100644
index 0000000..ef98f8c
--- /dev/null
+++ b/packages/ocaml/4.12.0/test.ml
@@ -0,0 +1 @@
+print_string "OK\n";
diff --git a/readme.md b/readme.md
index 1f86d35..7d3173a 100644
--- a/readme.md
+++ b/readme.md
@@ -120,7 +120,7 @@ cd cli && npm i && cd -
echo "$GITHUB_TOKEN" | docker login https://docker.pkg.github.com -u "$GITHUB_USERNAME" --password-stdin
# Change out the $GITHUB_TOKEN and $GITHUB_USERNAME with appropritate values
-docker run -v $PWD:'/piston' --tmpfs /piston/jobs -dit -p 2000:2000 --privileged --name piston_api docker.pkg.github.com/engineer-man/piston/api:latest
+docker run -v $PWD:'/piston' --tmpfs /piston/jobs -dit -p 2000:2000 --name piston_api docker.pkg.github.com/engineer-man/piston/api:latest
```
@@ -143,6 +143,13 @@ cli/index.js ppman install python 3.9.1
# Run a python script
echo 'print("Hello world!")' > test.py
cli/index.js run python 3.9.1 test.py
+
+# Run the script using the latest version
+cli/index.js run python '*' test.py
+
+# Run using python 3.x
+cli/index.js run python 3.x test.py
+
```
If you are operating on a remote machine, add the `-u` flag like so:
@@ -251,21 +258,23 @@ Content-Type: application/json
# Supported Languages
-`awk`,
`bash`,
`brainfuck`,
-`c`,
-`cpp`,
`clojure`,
+`coffeescript`,
+`cow`,
`crystal`,
-`csharp`,
-`d`,
+`dart`,
`dash`,
`deno`,
+`dotnet`,
`elixir`,
`emacs`,
-`elisp`,
+`erlang`,
+`gawk`,
+`gcc`,
`go`,
+`groovy`,
`haskell`,
`java`,
`jelly`,
@@ -274,21 +283,26 @@ Content-Type: application/json
`lisp`,
`lolcode`,
`lua`,
+`mono`,
`nasm`,
-`nasm64`,
`nim`,
`node`,
+`ocaml`,
`osabie`,
`paradoc`,
+`pascal`,
`perl`,
`php`,
-`python2`,
-`python3`,
+`prolog`,
+`pure`,
+`python`,
+`rockstar`,
`ruby`,
`rust`,
`scala`,
`swift`,
`typescript`,
+`vlang`,
`zig`,