forge
ExploreLog in

Tahinli/forge

public
0 watching
★ 0
4.0 KiB
1[workspace]
2resolver = "3"
3members = [
4 "crates/forge-core",
5 "crates/forge-git",
6 "crates/forge-ssh",
7 "crates/forge-web",
8 "crates/forge-ci",
9 "crates/forge-runner",
10]
11
12[workspace.package]
13version = "0.1.0"
14edition = "2024"
15license = "AGPL-3.0-or-later"
16
17[workspace.dependencies]
18tower = { version = "0.5.3", features = ["util"] }
19tower-http = { version = "0.7.1", features = ["compression-br", "compression-gzip"] }
20gix = { version = "0.89.0", default-features = false, features = ["revision", "blob-diff", "max-performance-safe", "sha1"] }
21comrak = "0.56.0"
22emojis = "0.9.0"
23ammonia = "4.2.3"
24syntect = { version = "5.3.0", default-features = false, features = ["default-fancy"] }
25hmac = "0.13.0"
26sha1 = "0.11.0"
27image = { version = "0.25.10", default-features = false, features = ["png", "jpeg", "webp", "gif"] }
28# internal crates
29forge-core = { path = "crates/forge-core" }
30forge-ci = { path = "crates/forge-ci" }
31forge-git = { path = "crates/forge-git" }
32forge-ssh = { path = "crates/forge-ssh" }
33forge-runner = { path = "crates/forge-runner" }
34
35# async runtime and HTTP plumbing
36tokio = { version = "1.53.3", features = ["full"] }
37futures-util = "0.3.34"
38bytes = "1.12.1"
39http = "1.5.0"
40http-body-util = "0.1.5"
41async-compression = { version = "0.4.50", features = ["tokio", "gzip"] }
42tokio-util = "0.7.20"
43http-body = "1.1.0"
44
45# errors, serialization, data
46thiserror = "2.0.21"
47globset = "0.4.20"
48ipnet = "2.12.2"
49serde = { version = "1.0.229", features = ["derive"] }
50serde_json = "1.0.154"
51toml = "1.1.8"
52ulid = "3.0.0"
53time = { version = "0.3.55", features = ["formatting", "parsing", "macros"] }
54unicode-normalization = "0.1.25"
55form_urlencoded = "1.2.2"
56jiff = { version = "0.2.38", default-features = false, features = ["std", "tzdb-bundle-always"] }
57
58# crypto
59argon2 = "0.6.0"
60rand = "0.10.3"
61sha2 = "0.11.1"
62hex = "0.4.3"
63subtle = "2.6.1"
64base64 = "0.23.1"
65getrandom = "0.4.3"
66rpassword = "7.5.4"
67chacha20poly1305 = "0.11.0"
68
69# storage
70turso = "0.8.3"
71object_store = { version = "0.14.2", default-features = false, features = ["fs"] }
72multer = "3.1.0"
73
74# outgoing mail (forge-web): SMTP over rustls, no native TLS
75lettre = { version = "0.11.23", default-features = false, features = ["smtp-transport", "builder", "tokio1-rustls", "ring", "webpki-roots", "pool"] }
76
77# web framework
78topcoat = { version = "0.10.0", default-features = false, features = ["router", "view", "runtime", "cookie", "asset", "serve", "sse", "discover", "multipart"] }
79
80# ssh server
81russh = "0.64.1"
82
83# observability
84tracing = "0.1.44"
85tracing-subscriber = "0.3.23"
86
87# OCI image pulls and layer unpacking (forge-runner)
88oci-client = "0.18.0"
89tar = "0.4.46"
90flate2 = "1.1.10"
91zstd = "0.14.2"
92
93# CLI and test servers (forge-runner)
94clap = { version = "4.6.7", features = ["derive"] }
95hyper = { version = "1.12.0", features = ["server", "http1"] }
96hyper-util = { version = "0.1.21", features = ["tokio"] }
97
98# sandbox (forge-runner): in-process containers, no systemd, no youki CLI, no C libraries.
99# The seccomp profile is built with the pure-Rust seccompiler (json feature resolves syscall names)
100# and installed by forge-runner's own executor, so libcontainer's libseccomp feature stays off.
101libcontainer = { version = "0.7.0", default-features = false, features = ["v2"] }
102seccompiler = { version = "0.5.0", features = ["json"] }
103oci-spec = "0.10.0"
104nix = { version = "0.31.3", features = ["signal", "process", "mount", "sched", "user", "resource", "fs"] }
105
106# build and test
107grass = "0.13.4"
108tempfile = "3.27.0"
109reqwest = { version = "0.13.5", default-features = false, features = ["rustls", "form", "stream"] }
110scraper = "0.27.0"
111similar = "3.2.0"
112
113# security advisories (forge-core): semver matching and OSV zip dumps
114semver = "1.0.28"
115zip = { version = "9.0.3", default-features = false, features = ["deflate"] }
116
117[profile.dev.package.sha2]
118# self-update hashes the ~1 GB debug binary at boot; unoptimized sha2 takes ~26 s.
119opt-level = 3
120
121[profile.release]
122lto = true
123codegen-units = 1
124
125[profile.dist]
126inherits = "release"
127lto = "thin"
128codegen-units = 16