/ Cargo.toml
Cargo.toml
  1  [workspace]
  2  
  3  # Here we declare that this is a workspace, containing several crates
  4  # within it.
  5  #
  6  # Please keep this list topologically sorted by dependency relation, so
  7  # that every crate appears _before_ any other crate that depends on it.
  8  # This also applies to dev-dependencies.
  9  # We depend on this for publishing to crates.io. e.g.
 10  # see
 11  # https://blog.iany.me/2020/10/gotchas-to-publish-rust-crates-in-a-workspace/#cyclic-dependencies
 12  members = [
 13      "crates/oneshot-fused-workaround",
 14      "crates/slotmap-careful",
 15      "crates/test-temp-dir",
 16      "crates/fslock-guard",
 17      "crates/hashx",
 18      "crates/equix",
 19      "crates/tor-basic-utils",
 20      "crates/caret",
 21      "crates/fs-mistrust",
 22      "crates/safelog",
 23      "crates/retry-error",
 24      "crates/tor-error",
 25      "crates/tor-general-addr",
 26      "crates/tor-events",
 27      "crates/tor-geoip",
 28      "crates/tor-rtcompat",
 29      "crates/tor-rtmock",
 30      "crates/tor-async-utils",
 31      "crates/tor-config",
 32      "crates/tor-config-path",
 33      "crates/tor-rpc-connect",
 34      "crates/tor-log-ratelim",
 35      "crates/tor-rpcbase",
 36      "crates/tor-memquota",
 37      "crates/tor-units",
 38      "crates/tor-llcrypto",
 39      "crates/tor-protover",
 40      "crates/tor-bytes",
 41      "crates/tor-checkable",
 42      "crates/tor-cert",
 43      "crates/tor-key-forge",
 44      "crates/tor-hscrypto",
 45      "crates/tor-socksproto",
 46      "crates/tor-linkspec",
 47      "crates/tor-cell",
 48      "crates/tor-proto",
 49      "crates/tor-netdoc",
 50      "crates/tor-consdiff",
 51      "crates/tor-netdir",
 52      "crates/tor-relay-selection",
 53      "crates/tor-congestion",
 54      "crates/tor-persist",
 55      "crates/tor-chanmgr",
 56      "crates/tor-ptmgr",
 57      "crates/tor-guardmgr",
 58      "crates/tor-circmgr",
 59      "crates/tor-dirclient",
 60      "crates/tor-dirmgr",
 61      "crates/tor-keymgr",
 62      "crates/tor-hsclient",
 63      "crates/tor-hsservice",
 64      "crates/tor-hsrproxy",
 65      "crates/tor-relay-crypto",
 66      "crates/arti-client",
 67      "crates/arti-relay",
 68      "crates/arti-rpcserver",
 69      "crates/arti-config",
 70      "crates/arti",
 71      "crates/arti-bench",
 72      "crates/arti-testing",
 73  
 74      "crates/arti-rpc-client-core",
 75  
 76      "maint/fixup-features",
 77      "maint/keygen-openssh-test",
 78  
 79      "examples/gsoc2023/connection-checker",
 80      "examples/gsoc2023/dns-resolver",
 81      "examples/gsoc2023/obfs4-checker",
 82      "examples/gsoc2023/pt-proxy",
 83      "examples/hyper/hyper-http-client-example",
 84      "examples/hyper/hyper-http-hs-example",
 85      "examples/axum/axum-hello-world",
 86  ]
 87  
 88  resolver = "2"
 89  
 90  [profile.release]
 91  # By default we'd like to get good performance and a small download size.
 92  # (Assuming xz compression on the binary.)
 93  #
 94  # The biggest win is to run `strip --strip-debug` on the binary after
 95  # generating it, to throw out debugging symbols that we inherited from
 96  # other libraries.  Don't do `strip --strip-unused`, though, or you'll
 97  # break backtraces.  That saves about 21% download size.
 98  
 99  # Using LTO saves a further 14% of download size, and improves performance,
100  # at the cost of compile time.
101  lto = true
102  # Setting codegen-units=1 saves a further 7% download size.  It also
103  # improves performance at the cost of compile time.
104  codegen-units = 1
105  # Optimize for size.  [Actually this is even smaller than 'z' on rust
106  # 1.56.  It saves about 11% download size over the default value of '3'.]
107  opt-level = 's'
108  
109  [profile.release.package.slotmap-careful]
110  opt-level = 2
111  
112  [profile.quicktest]
113  # This profile is meant to be a compromise between "release" (which
114  # takes a long time to build) and "dev" (which can be too slow to actually
115  # use when connecting over the Tor network).
116  inherits = "release"
117  lto = "thin"
118  codegen-units = 16
119  opt-level = 2
120  incremental = true
121  
122  [profile.bench]
123  # For "cargo bench", which is only used by some crates.
124  # Inherits release build settings, but adds full debug symbols.
125  debug = 2
126  strip = "none"