diff --git a/packages/swift/5.8/build.sh b/packages/swift/5.8/build.sh
new file mode 100644
index 0000000..57e1ade
--- /dev/null
+++ b/packages/swift/5.8/build.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+# Binary install
+curl -L "https://swift.org/builds/swift-5.8-release/ubuntu2204/swift-5.8-RELEASE/swift-5.8-RELEASE-ubuntu22.04.tar.gz" -o swift.tar.gz
+tar xzf swift.tar.gz --strip-components=2
+rm swift.tar.gz
\ No newline at end of file
diff --git a/packages/swift/5.8/environment b/packages/swift/5.8/environment
new file mode 100644
index 0000000..c6ab089
--- /dev/null
+++ b/packages/swift/5.8/environment
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+# Put 'export' statements here for environment variables
+export PATH=$PWD/bin:$PATH
\ No newline at end of file
diff --git a/packages/swift/5.8/metadata.json b/packages/swift/5.8/metadata.json
new file mode 100644
index 0000000..9aed4d5
--- /dev/null
+++ b/packages/swift/5.8/metadata.json
@@ -0,0 +1,5 @@
+{
+ "language": "swift",
+ "version": "5.8",
+ "aliases": ["swift"]
+}
\ No newline at end of file
diff --git a/packages/swift/5.8/run b/packages/swift/5.8/run
new file mode 100644
index 0000000..0cd62ea
--- /dev/null
+++ b/packages/swift/5.8/run
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+# Setting clang cache to current dir to avoid permission error on /tmp
+swift -module-cache-path . "$@"
\ No newline at end of file
diff --git a/packages/swift/5.8/test.swift b/packages/swift/5.8/test.swift
new file mode 100644
index 0000000..3f2688f
--- /dev/null
+++ b/packages/swift/5.8/test.swift
@@ -0,0 +1 @@
+print("OK")
\ No newline at end of file