about summary refs log tree commit diff
path: root/tvix/Cargo.toml
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/Cargo.toml')
-rw-r--r--tvix/Cargo.toml38
1 files changed, 38 insertions, 0 deletions
diff --git a/tvix/Cargo.toml b/tvix/Cargo.toml
new file mode 100644
index 000000000000..6cd19831dc83
--- /dev/null
+++ b/tvix/Cargo.toml
@@ -0,0 +1,38 @@
+# This Cargo file is a workspace configuration as per
+# https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html
+#
+# We add this file to get a coherent set of dependencies across Tvix
+# crates by sharing a Cargo.lock. This is necessary because of the
+# currently limited support for Rust builds in Nix.
+#
+# Note that this explicitly does *not* mean that //tvix should be
+# considered "one project": This is simply a workaround for a
+# technical limitation and it should be our aim to remove this
+# workspace file and make the subprojects independent.
+#
+# Note also that CI targets for actual projects should *not* be tied
+# to //tvix, but to its subprojects. A potential file at
+# //tvix/default.nix should likely *not* expose anything other than
+# extra steps or other auxiliary targets.
+
+[workspace]
+resolver = "2"
+
+members = [
+  "build",
+  "castore",
+  "cli",
+  "eval",
+  "eval/builtin-macros",
+  "glue",
+  "nix-compat",
+  "serde",
+  "store",
+]
+
+# Add a profile to all targets that enables release optimisations, but
+# retains debug symbols. This is great for use with
+# benchmarking/profiling tools.
+[profile.release-with-debug]
+inherits = "release"
+debug = true