content: [workspace]
  resolver = "2"
  
  members = [
      "devtools/x",
      "devtools/x-core",
      "devtools/x-lint",
      # TODO: re-enable
      # "language/documentation/examples/diem-framework/crates/cli",
      # "language/documentation/examples/diem-framework/crates/crypto",
      # "language/documentation/examples/diem-framework/crates/crypto-derive",
      # "language/documentation/examples/diem-framework/crates/natives",
      "language/evm/exec-utils",
      "language/evm/extract-ethereum-abi",
      "language/evm/move-ethereum-abi",
      "language/evm/move-to-yul",
      "language/extensions/move-table-extension",
      "language/move-binary-format",
      "language/move-binary-format/serializer-tests",
      "language/move-borrow-graph",
      "language/move-bytecode-verifier",
      "language/move-bytecode-verifier/bytecode-verifier-tests",
      "language/move-bytecode-verifier/fuzz",
      "language/move-bytecode-verifier/invalid-mutations",
      "language/move-bytecode-verifier/transactional-tests",
      "language/move-command-line-common",
      "language/move-compiler",
      "language/move-compiler-v2",
      "language/move-compiler-v2/transactional-tests",
      "language/move-compiler/transactional-tests",
      "language/move-core/types",
      "language/move-ir-compiler",
      "language/move-ir-compiler/move-bytecode-source-map",
      "language/move-ir-compiler/move-ir-to-bytecode",
      "language/move-ir-compiler/move-ir-to-bytecode/syntax",
      "language/move-ir-compiler/transactional-tests",
      "language/move-ir/types",
      "language/move-model",
      "language/move-model/bytecode",
      "language/move-prover",
      "language/move-prover/boogie-backend",
      # "language/move-prover/lab", TODO: re-enable
      "language/move-prover/move-abigen",
      "language/move-prover/move-docgen",
      "language/move-prover/move-errmapgen",
      "language/move-prover/test-utils",
      "language/move-stdlib",
      "language/move-symbol-pool",
      "language/move-vm/integration-tests",
      "language/move-vm/paranoid-tests",
      "language/move-vm/runtime",
      "language/move-vm/test-utils",
      "language/move-vm/transactional-tests",
      "language/move-vm/types",
      "language/testing-infra/module-generation",
      "language/testing-infra/transactional-test-runner",
      "language/tools/move-bytecode-utils",
      "language/tools/move-bytecode-viewer",
      "language/tools/move-cli",
      "language/tools/move-coverage",
      "language/tools/move-disassembler",
      "language/tools/move-explain",
      "language/tools/move-package",
      "language/tools/move-resource-viewer",
      "language/tools/move-unit-test",
  ]
  
  # NOTE: default-members is the complete list of binaries that form the "production Move codebase". These members should
  # never include crates that require fuzzing features or test features. These are the crates we want built with no extra
  # test-only code included.
  #
  # For more, see the "Conditional compilation for tests" section in documentation/coding_guidelines.md.
  default-members = [
      "language/evm/extract-ethereum-abi",
      "language/evm/move-to-yul",
      "language/move-ir-compiler",
      "language/move-model",
      "language/move-prover",
      # "language/move-prover/lab", TODO: re-enable
      "language/move-compiler",
      "language/move-compiler-v2",
      "language/move-stdlib",
      "language/tools/move-disassembler",
      "language/tools/move-bytecode-viewer",
      "language/tools/move-cli",
      "language/tools/move-coverage",
      "language/tools/move-unit-test",
  ]
  
  # All workspace members should inherit these keys
  # for package declarations.
  [workspace.package]
  authors = ["The Move Contributors"]
  edition = "2021"
  homepage = "https://github.com/move-language/move-on-aptos"
  license = "Apache-2.0"
  publish = false
  repository = "https://github.com/move-language/move-on-aptos"
  rust-version = "1.78.0"
  
  # Dependencies that should be kept in sync through the whole workspace
  [workspace.dependencies]
  atty = "0.2.14"
  ambassador = "0.4.1"
  anyhow = "1.0.71"
  arbitrary = { version = "1.3.2", features = ["derive"] }
  async-trait = "0.1.53"
  base64 = "0.13.0"
  backtrace = "0.3.58"
  bcs = { git = "https://github.com/aptos-labs/bcs.git", rev = "d31fab9d81748e2594be5cd5cdf845786a30562d" }
  better_any = "0.1.1"
  bigdecimal = { version = "0.4.0", features = ["serde"] }
  bitvec = "1.0.1"
  byteorder = "1.4.3"
  bytes = { version = "1.4.0", features = ["serde"] }
  chrono = { version = "0.4.19", features = ["clock", "serde"] }
  claims = "0.7"
  clap = { version = "4.3.9", features = ["derive", "env", "unstable-styles"] }
  clap-verbosity-flag = "2.1.1"
  clap_complete = "4.4.1"
  codespan = "0.11.1"
  codespan-reporting = "0.11.1"
  colored = "2.0.0"
  crossbeam = "0.8.1"
  crossbeam-channel = "0.5.4"
  crossterm = "0.26.1"
  dashmap = { version = "5.5.3", features = ["inline"] }
  datatest-stable = "0.1.1"
  dearbitrary = { version = "1.0.4", features = ["derive"] }
  derivative = "2.2.0"
  difference = "2.0.0"
  digest = "0.9.0"
  dir-diff = "0.3.2"
  dirs-next = "2.0.0"
  either = "1.6.1"
  env_logger = "0.10.0"
  ethabi = "18.0.0"
  ethnum = "1.5.0"
  evm = { version = "0.33.1", features = ["tracing"] }
  evm-runtime = { version = "0.33.0", features = ["tracing"] }
  fail = "0.5.0"
  file_diff = "1.0.0"
  flexi_logger = "0.27.4"
  futures = "0.3.29"
  getrandom = "0.2.2"
  goldenfile = "1.5.2"
  hashbrown = "0.14.3"
  heck = "0.4.1"
  hex = { version = "0.4.3", features = ["serde"] }
  hex-literal = "0.3.4"
  hkdf = "0.10.0"
  hostname = "0.3.1"
  httpmock = "0.6.8"
  im = "15.0.0"
  indexmap = "1.9.3"
  internment = { version = "0.5.0", features = ["arc"] }
  itertools = "0.12"
  lazy_static = "1.4.0"
  libc = "0.2.147"
  libfuzzer-sys = "0.4.6"
  log = "0.4.17"
  lru = "0.7.5"
  maplit = "1.0.2"
  memory-stats = "1.0.0"
  named-lock = "0.2.0"
  num = "0.4.0"
  num-bigint = { version = "0.3.2", features = ["rand"] }
  num_cpus = "1.13.1"
  num-derive = "0.3.3"
  num-integer = "0.1.42"
  num-traits = "0.2.18"
  number_range = "0.3.2"
  once_cell = "1.10.0"
  ouroboros = "0.15.6"
  prettydiff = "0.6.2"
  primitive-types = { version = "0.10" }
  parking_lot = "0.12.0"
  paste = "1.0.7"
  pathsearch = "0.2.0"
  petgraph = "0.5.1"
  plotters = { version = "0.3.5", default-features = false }
  pprof = { version = "0.11", features = ["flamegraph", "protobuf-codec"] }
  pretty = "0.10.0"
  pretty_assertions = "1.2.1"
  proc-macro2 = "1.0.38"
  project-root = "0.2.2"
  prometheus = { version = "0.13.3", default-features = false }
  proptest = "1.4.0"
  proptest-derive = "0.4.0"
  quote = "1.0.18"
  rand = "0.7.3"
  rand_core = "0.5.1"
  rayon = "1.5.2"
  ref-cast = "1.0.6"
  regex = "1.9.3"
  reqwest = { version = "0.11.11", features = [
      "blocking",
      "cookies",
      "json",
      "stream",
  ] }
  sha-1 = "0.10.0"
  sha2 = "0.9.3"
  sha256 = "1.4.0"
  sha3 = "0.9.1"
  shell-words = "1.0.0"
  siphasher = "0.3.10"
  serde = { version = "1.0.193", features = ["derive", "rc"] }
  serde-big-array = "0.5.1"
  serde_bytes = "0.11.6"
  serde_json = { version = "1.0.81", features = [
      "preserve_order",
      "arbitrary_precision",
  ] } # Note: arbitrary_precision is required to parse u256 in JSON
  serde_repr = "0.1"
  serde_merge = "0.1.3"
  serde-name = "0.1.1"
  serde-generate = { git = "https://github.com/aptos-labs/serde-reflection", rev = "73b6bbf748334b71ff6d7d09d06a29e3062ca075" }
  serde-reflection = { git = "https://github.com/aptos-labs/serde-reflection", rev = "73b6bbf748334b71ff6d7d09d06a29e3062ca075" }
  serde_with = "3.4.0"
  serde_yaml = "0.8.24"
  shadow-rs = "0.16.2"
  simplelog = "0.9.0"
  smallbitvec = "2.5.1"
  smallvec = "1.8.0"
  syn = { version = "1.0.92", features = ["derive", "extra-traits"] }
  sysinfo = "0.28.4"
  tar = "0.4.40"
  tempfile = "3.3.0"
  tera = "1.16.0"
  termcolor = "1.1.2"
  thiserror = "1.0.37"
  threadpool = "1.8.1"
  thread_local = "1.1.7"
  time = { version = "0.3.24", features = ["serde"] }
  tiny-keccak = { version = "2.0.2", features = ["keccak", "sha3"] }
  toml_edit = "0.14.3"
  tracing = "0.1.37"
  tracing-subscriber = { version = "0.3.17", features = ["json", "env-filter"] }
  tokio = { version = "1.35.1", features = ["full"] }
  tokio-io-timeout = "1.2.0"
  tokio-metrics = "0.3.1"
  tokio-retry = "0.3.0"
  tokio-scoped = { version = "0.2.0" }
  tokio-stream = { version = "0.1.14", features = ["fs"] }
  tokio-test = "0.4.1"
  tokio-util = { version = "0.7.2", features = ["compat", "codec"] }
  toml = "0.7.4"
  topological-sort = "0.2.2"
  triomphe = "0.1.9"
  try_match = "0.4.2"
  tui = "0.19.0"
  typed-arena = "2.0.2"
  typenum = "1.17.0"
  uint = "0.9.4"
  url = { version = "2.4.0", features = ["serde"] }
  uuid = { version = "1.0.0", features = ["v4", "serde"] }
  variant_count = "1.1.0"
  walkdir = "2.3.3"
  whoami = "1.5.0"
  z3tracer = "0.8.0"
  
  # MOVE DEPENDENCIES
  move-abigen = { path = "language/move-prover/move-abigen" }
  move-binary-format = { path = "language/move-binary-format" }
  move-borrow-graph = { path = "language/move-borrow-graph" }
  move-bytecode-source-map = { path = "language/move-ir-compiler/move-bytecode-source-map" }
  move-bytecode-spec = { path = "language/move-bytecode-spec" }
  move-bytecode-verifier = { path = "language/move-bytecode-verifier" }
  move-bytecode-verifier-invalid-mutations = { path = "language/move-bytecode-verifier/invalid-mutations" }
  move-bytecode-viewer = { path = "language/tools/move-bytecode-viewer" }
  move-bytecode-utils = { path = "language/tools/move-bytecode-utils" }
  move-cli = { path = "language/tools/move-cli" }
  move-command-line-common = { path = "language/move-command-line-common" }
  move-coverage = { path = "language/tools/move-coverage" }
  move-compiler = { path = "language/move-compiler" }
  move-compiler-v2 = { path = "language/move-compiler-v2" }
  move-core-types = { path = "language/move-core/types" }
  move-decompiler = { path = "language/tools/move-decompiler" }
  move-docgen = { path = "language/move-prover/move-docgen" }
  move-disassembler = { path = "language/tools/move-disassembler" }
  move-errmapgen = { path = "language/move-prover/move-errmapgen" }
  move-ir-types = { path = "language/move-ir/types" }
  move-ir-compiler = { path = "language/move-ir-compiler" }
  move-ir-to-bytecode = { path = "language/move-ir-compiler/move-ir-to-bytecode" }
  move-linter = { path = "language/tools/move-linter" }
  move-model = { path = "language/move-model" }
  move-package = { path = "language/tools/move-package" }
  move-prover = { path = "language/move-prover" }
  move-prover-boogie-backend = { path = "language/move-prover/boogie-backend" }
  move-prover-bytecode-pipeline = { path = "language/move-prover/bytecode-pipeline" }
  move-prover-test-utils = { path = "language/move-prover/test-utils" }
  move-prover-lab = { path = "language/move-prover/lab" }
  aptos-move-stdlib = { path = "aptos-move/framework/move-stdlib" }
  aptos-table-natives = { path = "aptos-move/framework/table-natives" }
  move-resource-viewer = { path = "language/tools/move-resource-viewer" }
  move-stackless-bytecode = { path = "language/move-model/bytecode" }
  move-stackless-bytecode-test-utils = { path = "language/move-model/bytecode-test-utils" }
  move-symbol-pool = { path = "language/move-symbol-pool" }
  move-table-extension = { path = "language/extensions/move-table-extension" }
  move-transactional-test-runner = { path = "language/testing-infra/transactional-test-runner" }
  move-unit-test = { path = "language/tools/move-unit-test", features = ["table-extension"] }
  move-vm-metrics = { path = "language/move-vm/metrics" }
  move-vm-runtime = { path = "language/move-vm/runtime" }
  move-vm-test-utils = { path = "language/move-vm/test-utils", features = ["table-extension"] }
  move-vm-types = { path = "language/move-vm/types" }
  
  [profile.bench]
  debug = true
  
  [profile.dev]
  debug = true
  
  # use release settings to reduce memory pressure in the linking step in CI
  [profile.ci]
  inherits = "test"
  debug = 0 # for saving disk space during linking
  incremental = false
  codegen-units = 16
  