d9d627cdf0
This relates to the (abandoned) cl/7256. Introduces a Cargo workspace at //tvix that is primarily intended to be used as a workaround for the annoying Nix+Rust tooling while having a consistent set of dependencies. This is driven in part by a desire to adopt crate2nix and get more granular Nix builds for Tvix's Rust projects, and in part by a need to split //tvix/eval into something providing the CLI (REPL etc.), and a library providing eval, without significantly altering the structure of build targets. To accomplish this the workspace has been designed to allow projects to remain independent build targets. I want to avoid lumping all the projects together - something like //tvix/eval should always be independent of other parts of tvix. A helper function in //tvix/default.nix lets downstream naersk projects construct a sparse root for the project which combines the workspace's `Cargo.lock` with the project's own `Cargo.toml`. Note that cargo commands in the workspace itself require the build dependencies of _all_ projects to be present, which is currently a bit annoying to accomplish. This introduces some breakage: 1. It breaks usage of rust-analyser without being in a shell with the dependencies of *all* Tvix projects, as it is not capable of respecting only the subset of dependencies for a part of the workspace. 2. It is no longer possible to run tests using `cargo test`, as the test generation crate we use does not work with workspaces: https://github.com/frehberg/test-generator/issues/6 This still works in the Nix build as we construct a Cargo project that looks like it's not in a workspace there. Until somebody fixes that crate / writes a new macro / does something else with the test suite, the way to run the tests is through the Nix build. Long-term we'll probably want to get rid of cargo completely, it's just a big wart and most tooling works without it if correctly configured, but we don't have time for that now. Change-Id: I846bff7a8429a25c077fd1e9ef4e3c34a299a4a1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7533 Reviewed-by: flokli <flokli@flokli.de> Autosubmit: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
62 lines
1.7 KiB
TOML
62 lines
1.7 KiB
TOML
[package]
|
|
name = "tvix-eval"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[lib]
|
|
name = "tvix_eval"
|
|
|
|
[[bin]]
|
|
name = "tvix-eval"
|
|
required-features = [ "repl" ]
|
|
|
|
[dependencies]
|
|
smol_str = "0.1"
|
|
rustyline = { version = "10.0.0", optional = true }
|
|
dirs = "4.0.0"
|
|
path-clean = "0.1"
|
|
tabwriter = "1.2"
|
|
rowan = "*" # pinned by rnix
|
|
codemap = "0.1.3"
|
|
codemap-diagnostic = "0.1.1"
|
|
proptest = { version = "1.0.0", default_features = false, features = ["std", "alloc", "break-dead-code", "tempfile"], optional = true }
|
|
test-strategy = { version = "0.2.1", optional = true }
|
|
clap = { version = "3.2.22", optional = true, features = ["derive", "env"] }
|
|
serde = "1.0"
|
|
serde_json = "1.0"
|
|
regex = "1.6.0"
|
|
builtin-macros = { path = "./builtin-macros", package = "tvix-eval-builtin-macros" }
|
|
backtrace-on-stack-overflow = { version = "0.2.0", optional = true }
|
|
rnix = "0.11.0"
|
|
|
|
[dev-dependencies]
|
|
criterion = "0.3.6"
|
|
test-generator = "0.3.0"
|
|
pretty_assertions = "1.2.1"
|
|
itertools = "0.10.3"
|
|
tempdir = "0.3.7"
|
|
|
|
[features]
|
|
default = [ "repl", "impure", "arbitrary", "nix_tests", "backtrace_overflow" ]
|
|
|
|
# Enables running the Nix language test suite from the original C++
|
|
# Nix implementation (at version 2.3) against Tvix.
|
|
nix_tests = []
|
|
|
|
# Enables building the binary (tvix-eval REPL)
|
|
repl = [ "rustyline", "clap" ]
|
|
|
|
# Enables operations in the VM which depend on the ability to perform I/O
|
|
impure = []
|
|
|
|
# Enables Arbitrary impls for internal types (required to run tests)
|
|
arbitrary = [ "proptest", "test-strategy" ]
|
|
|
|
# For debugging use only; not appropriate for production use.
|
|
backtrace_overflow = [ "backtrace-on-stack-overflow" ]
|
|
|
|
[[bench]]
|
|
name = "eval"
|
|
harness = false
|