content: # moon: The build system and package manager for MoonBit.
  # Copyright (C) 2024 International Digital Economy Academy
  #
  # This program is free software: you can redistribute it and/or modify
  # it under the terms of the GNU Affero General Public License as published by
  # the Free Software Foundation, either version 3 of the License, or
  # (at your option) any later version.
  #
  # This program is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU Affero General Public License for more details.
  #
  # You should have received a copy of the GNU Affero General Public License
  # along with this program.  If not, see <https://www.gnu.org/licenses/>.
  #
  # For inquiries, you can contact us via e-mail at jichuruanjian@idea.edu.cn.
  
  [workspace]
  members = ["xtask", "./crates/*", "crates/moonbuild-rupes-recta"]
  resolver = "2"
  default-members = ["./crates/*"]
  
  [workspace.package]
  rust-version = "1.80"
  edition = "2021"
  
  [workspace.dependencies]
  n2 = { git = "https://github.com/moonbitlang/n2.git", rev = "2cb2af63170acf3852c61326d5883a71f3576615" }
  arcstr = { version = "1.2", features = ["serde"] }
  moonbuild = { path = "./crates/moonbuild", version = "*" }
  moonbuild-rupes-recta = { path = "./crates/moonbuild-rupes-recta", version = "*" }
  mooncake = { path = "./crates/mooncake", version = "*" }
  moonutil = { path = "./crates/moonutil", version = "*" }
  anyhow = { version = "1.0.86" }
  bincode = "1.3.3"
  clap = { version = "4.5.4", features = ["derive", "string", "env"] }
  colored = "2.1.0"
  ctrlc = { version = "3.4.4", features = ["termination"] }
  dunce = "1.0.4"
  expect-test = "1.5.0"
  futures = { version = "0.3.29", features = ["std"], default-features = false }
  indexmap = { version = "2.2.6", features = ["serde"] }
  notify = "6.1.1"
  reqwest = { version = "0.11.22", features = [
      "multipart",
      "blocking",
      "json",
      "stream",
  ] }
  petgraph = { version = "0.6.4", features = [
      "graphmap",
  ], default-features = false }
  serde = { version = "1.0.163", features = ["derive"] }
  serde_json = { version = "1.0.97", features = ["preserve_order"] }
  serde_json_lenient = { version = "0.2.1", features = ["preserve_order"] }
  serde_yaml = "0.9.33"
  sysinfo = "0.29.9"
  tokio = { version = "1.34.0", features = [
      "rt-multi-thread",
      "macros",
      "signal",
      "process",
      "io-std",
  ] }
  walkdir = "2.5.0"
  which = "6.0.1"
  zip = { version = "0.6.6", features = ["deflate"], default-features = false }
  home = "0.5.0"
  semver = { version = "1.0.22", features = ["serde"] }
  sha2 = "0.10.8"
  chrono = { version = "0.4.31", features = [
      "clock",
      "std",
  ], default-features = false }
  hyper = "1.3.1"
  hyper-util = { version = "0.1.3", features = ["http1", "server", "tokio"] }
  hyper-staticfile = "0.10.0"
  http = "1.1.0"
  bytes = "1.6"
  dialoguer = { version = "0.11.0", features = [
      "password",
  ], default-features = false }
  self-replace = "1.3.7"
  tempfile = "3.10.1"
  console = { version = "0.15.8", default-features = false }
  dissimilar = "1.0.8"
  line-index = "0.1.1"
  text-size = "1.1.1"
  log = "0.4.20"
  env_logger = "0.10.0"
  thiserror = "1.0"
  test-log = "0.2"
  fs4 = { version = "0.12.0", features = ["sync"] }
  ariadne = { version = "0.5.1", features = ["auto-color"] }
  clap_complete = { version = "4.5.4" }
  schemars = "0.8"
  nucleo-matcher = "0.3.1"
  regex = { version = "1.10.3", default-features = false, features = ["std"] }
  rand = "0.8.5"
  base64 = "0.22.1"
  once_cell = "1.20.3"
  derive_builder = "0.20.2"
  pulldown-cmark = "0.13.0"
  shlex = "1.3.0"
  relative-path = "2.0.1"
  slotmap = "1.0.7"
  toml = "0.9.5"
  smallvec = "1.15.1"
  
  # Use tracing instead of log in the future
  tracing = "0.1.41"
  tracing-subscriber = { version = "0.3.20", features = ["fmt", "env-filter"] }
  tracing-chrome = "0.7.2"
  
  [profile.release]
  debug = false
  lto = true
  
  # stripping of debuginfo and similar auxiliary data from binaries during linking
  # refer to https://doc.rust-lang.org/rustc/codegen-options/index.html#strip
  strip = true
  
  # make optimization level to z, which means the minimum binary volume
  # refer to https://doc.rust-lang.org/rustc/codegen-options/index.html#opt-level
  opt-level = 'z'
  
  # Cargo has 16 parallel code generation units enabled by default, which improves compilation speed but hinders some optimizations
  # refer to https://doc.rust-lang.org/rustc/codegen-options/index.html#codegen-units
  codegen-units = 1
  
  # terminate the process upon panic, panic = 'abort' reduced by 0.6M, but it will lose stack information
  # panic = 'abort'
  
  [profile.rel-with-dbg]
  inherits = "release"
  debug = true
  opt-level = 2
  lto = false
  strip = false
  codegen-units = 16
  