From bfe0a6fa21f1124c60dd4cc4fd60cdd9c2ec6d4f Mon Sep 17 00:00:00 2001 From: JJ Date: Sat, 4 Nov 2023 20:17:25 -0700 Subject: compiler: add blank interop and tooling folders --- src/backend/c.rs | 0 src/backend/cps.rs | 0 src/backend/llvm.rs | 0 src/backend/wasm.rs | 0 src/interop/nim.rs | 0 src/interop/rust.rs | 0 src/interop/swift.rs | 0 src/tooling/build.pk | 2 ++ src/tooling/check.pk | 2 ++ src/tooling/doc.pk | 2 ++ src/tooling/fmt.pk | 2 ++ src/tooling/init.pk | 7 +++++++ src/tooling/lsp.pk | 2 ++ src/tooling/pkg.pk | 2 ++ src/tooling/test.pk | 1 + src/tooling/toolchain.pk | 12 ++++++++++++ 16 files changed, 32 insertions(+) create mode 100644 src/backend/c.rs create mode 100644 src/backend/cps.rs create mode 100644 src/backend/llvm.rs create mode 100644 src/backend/wasm.rs create mode 100644 src/interop/nim.rs create mode 100644 src/interop/rust.rs create mode 100644 src/interop/swift.rs create mode 100644 src/tooling/build.pk create mode 100644 src/tooling/check.pk create mode 100644 src/tooling/doc.pk create mode 100644 src/tooling/fmt.pk create mode 100644 src/tooling/init.pk create mode 100644 src/tooling/lsp.pk create mode 100644 src/tooling/pkg.pk create mode 100644 src/tooling/test.pk create mode 100644 src/tooling/toolchain.pk diff --git a/src/backend/c.rs b/src/backend/c.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/backend/cps.rs b/src/backend/cps.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/backend/llvm.rs b/src/backend/llvm.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/backend/wasm.rs b/src/backend/wasm.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/interop/nim.rs b/src/interop/nim.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/interop/rust.rs b/src/interop/rust.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/interop/swift.rs b/src/interop/swift.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/tooling/build.pk b/src/tooling/build.pk new file mode 100644 index 0000000..7bd5da0 --- /dev/null +++ b/src/tooling/build.pk @@ -0,0 +1,2 @@ +# Builds a puck project. +# Subcommands: --clean, --fetch, ... diff --git a/src/tooling/check.pk b/src/tooling/check.pk new file mode 100644 index 0000000..96d04d1 --- /dev/null +++ b/src/tooling/check.pk @@ -0,0 +1,2 @@ +# Syntactically and semantically checks code without compiling. +# This is a good test for Rust interop. diff --git a/src/tooling/doc.pk b/src/tooling/doc.pk new file mode 100644 index 0000000..89db169 --- /dev/null +++ b/src/tooling/doc.pk @@ -0,0 +1,2 @@ +# Produces documentation of a codebase. +# This is a good test for Rust interop: both to call into the parser, and to call into `rustdoc`. diff --git a/src/tooling/fmt.pk b/src/tooling/fmt.pk new file mode 100644 index 0000000..352d0d7 --- /dev/null +++ b/src/tooling/fmt.pk @@ -0,0 +1,2 @@ +# Standard formatter. Uses the main compiler as a library, pulls in the parsing functions, etc. +# This is a good test for Rust interop. diff --git a/src/tooling/init.pk b/src/tooling/init.pk new file mode 100644 index 0000000..1e7c189 --- /dev/null +++ b/src/tooling/init.pk @@ -0,0 +1,7 @@ +# Initializes a new Puck project in the current or passed directory. + +pub func main(args: varargs[str]) = + # Check if the directory is non-empty, and prompt the user + ... + +func init(path: Path): Result[Unit, ref Err] = ... diff --git a/src/tooling/lsp.pk b/src/tooling/lsp.pk new file mode 100644 index 0000000..dd999a9 --- /dev/null +++ b/src/tooling/lsp.pk @@ -0,0 +1,2 @@ +# The language server implementation. Calls into `puck check`. +# This is a good test for non-trivial code written in Puck. diff --git a/src/tooling/pkg.pk b/src/tooling/pkg.pk new file mode 100644 index 0000000..95df0d6 --- /dev/null +++ b/src/tooling/pkg.pk @@ -0,0 +1,2 @@ +# The standard Puck package manager. +# Subcommands: install, remove, search, update (lockfile) diff --git a/src/tooling/test.pk b/src/tooling/test.pk new file mode 100644 index 0000000..f1912b1 --- /dev/null +++ b/src/tooling/test.pk @@ -0,0 +1 @@ +# Runs tests inline and in the `tests/` directory of a project. diff --git a/src/tooling/toolchain.pk b/src/tooling/toolchain.pk new file mode 100644 index 0000000..c0f6e7e --- /dev/null +++ b/src/tooling/toolchain.pk @@ -0,0 +1,12 @@ +# Helper for switching between distro-provided versions of `puckc` and locally-managed toolchains. +# Hopefully, this helps eliminate the problems with distros packaging languages. +# Subcommands: install (nightly beta stable hash), default, show + +type Toolchain = union + Nightly, Stable, Beta, Hash(str) + +func main = ... + +func install(toolchain: Toolchain): Success[ref Err] +func default(toolchain: Toolchain): Success[ref Err] +func show(): str -- cgit v1.2.3-70-g09d2