content: [package]
  name = "websurfx"
  version = "1.24.11"
  edition = "2024"
  description = "An open-source alternative to Searx that provides clean, ad-free, and organic results with incredible speed while keeping privacy and security in mind."
  repository = "https://github.com/neon-mmd/websurfx"
  license = "AGPL-3.0"
  
  [dependencies]
  rayon = "1.10.0"
  arc-swap = "1.7.1"
  reqwest = { version = "0.12.19", default-features = false, features = [
      "rustls-tls",
      "brotli",
      "gzip",
      "http2",
      "socks",
  ] }
  tokio = { version = "1.47.1", features = [
      "rt-multi-thread",
      "macros",
      "fs",
      "io-util",
  ], default-features = false }
  serde = { version = "1.0.215", default-features = false, features = ["derive"] }
  serde_json = { version = "1.0.138", default-features = false }
  bincode = {version="1.3.3", default-features=false}
  maud = { version = "0.27.0", default-features = false, features = [
      "actix-web",
  ] }
  scraper = { version = "0.23.1", default-features = false }
  actix-web = { version = "4.11.0", features = [
      "cookies",
      "macros",
      "compress-brotli",
  ], default-features = false }
  actix-files = { version = "0.6.5", default-features = false }
  actix-cors = { version = "0.7.0", default-features = false }
  fake-useragent = { version = "0.1.3", default-features = false }
  env_logger = { version = "0.11.6", default-features = false }
  log = { version = "0.4.21", default-features = false }
  mlua = { version = "0.10.5", features = [
      "async",
      "luajit",
      "vendored",
  ], default-features = false }
  redis = { version = "0.32.5", features = [
      "tokio-comp",
      "connection-manager",
      "tcp_nodelay"
  ], default-features = false, optional = true }
  blake3 = { version = "1.8.2", default-features = false }
  error-stack = { version = "0.5.0", default-features = false, features = [
      "std",
  ] }
  async-trait = { version = "0.1.86", default-features = false }
  regex = { version = "1.11.1", features = ["perf"], default-features = false }
  futures = { version = "0.3.31", default-features = false, features = ["alloc"] }
  dhat = { version = "0.3.2", optional = true, default-features = false }
  mimalloc = { version = "0.1.43", default-features = false }
  actix-governor = { version = "0.8.0", default-features = false }
  moka = { version = "0.12.8", optional = true, default-features = false, features = [
      "future",
  ] }
  async-compression = { version = "0.4.27", default-features = false, features = [
      "brotli",
      "tokio",
  ], optional = true }
  chacha20poly1305 = { version = "0.10.1", default-features = false, features = [
      "alloc",
      "getrandom",
  ], optional = true }
  chacha20 = { version = "0.9.1", default-features = false, optional = true }
  base64 = { version = "0.22.1", default-features = false, features = [
      "std",
  ], optional = true }
  cfg-if = { version = "1.0.0", default-features = false, optional = true }
  keyword_extraction = { version = "1.5.0", default-features = false, features = [
      "tf_idf",
      "rayon",
  ] }
  stop-words = { version = "0.8.0", default-features = false, features = ["iso"] }
  thesaurus = { version = "0.5.2", default-features = false, optional = true, features = [
      "moby",
  ]}
  actix-multipart = { version = "0.7.2", default-features = false, features = [
      "derive",
      "tempfile",
  ]}
  
  [dev-dependencies]
  rusty-hook = { version = "^0.11.2", default-features = false }
  criterion = { version = "0.6.0", default-features = false }
  tempfile = { version = "3.20.0", default-features = false }
  
  [build-dependencies]
  lightningcss = { version = "1.0.0-alpha.57", default-features = false, features = [
      "grid",
  ] }
  # Disabled until bug fixing update
  # minify-js = { version = "0.6.0", default-features = false }
  # Temporary fork with fix
  minify-js = { git = "https://github.com/RuairidhWilliamson/minify-js", branch = "master", version = "0.6.0", default-features = false} 
  
  [lints.rust]
  unsafe_code = "forbid"
  rust_2018_idioms = { level = "warn", priority = 1 }
  missing_docs = "deny"
  
  [lints.clippy]
  cognitive_complexity = "warn"
  panic = "forbid"
  missing_docs_in_private_items = "deny"
  perf = { level = "deny", priority = 1 }
  
  [profile.dev]
  opt-level = 0
  debug = true
  split-debuginfo = 'unpacked'
  debug-assertions = true
  overflow-checks = true
  lto = false
  panic = 'unwind'
  incremental = true
  codegen-units = 256
  rpath = false
  
  [profile.release]
  opt-level = 3
  debug = false
  split-debuginfo = '...'
  debug-assertions = false
  overflow-checks = false
  lto = 'thin'
  panic = 'abort'
  incremental = false
  codegen-units = 1
  rpath = false
  strip = "debuginfo"
  
  [profile.profiling]
  inherits = "release"
  debug = true
  
  [profile.bsr1]
  inherits = "release"
  opt-level = "s"
  
  [profile.bsr2]
  inherits = "bsr1"
  opt-level = "z"
  
  [profile.lpcb1]
  inherits = "release"
  codegen-units = 16
  
  [profile.lpcb2]
  inherits = "lpcb1"
  lto = "off"
  
  [profile.lpcb3]
  inherits = "lpcb2"
  opt-level = 2
  
  [profile.bsr_and_lpcb1]
  inherits = "lpcb1"
  opt-level = "s"
  
  [profile.bsr_and_lpcb2]
  inherits = "lpcb2"
  opt-level = "s"
  
  [profile.bsr_and_lpcb3]
  inherits = "lpcb3"
  opt-level = "s"
  
  [profile.bsr_and_lpcb4]
  inherits = "lpcb1"
  opt-level = "z"
  
  [profile.bsr_and_lpcb5]
  inherits = "lpcb1"
  opt-level = "z"
  
  [profile.bsr_and_lpcb6]
  inherits = "lpcb1"
  opt-level = "z"
  
  [features]
  default = ["memory-cache"]
  use-synonyms-search = ["thesaurus/static"]
  dhat-heap = ["dep:dhat"]
  memory-cache = ["dep:moka"]
  redis-cache = ["dep:redis", "dep:base64"]
  compress-cache-results = ["dep:async-compression", "dep:cfg-if"]
  encrypt-cache-results = ["dep:chacha20poly1305", "dep:chacha20"]
  cec-cache-results = ["compress-cache-results", "encrypt-cache-results"]
  experimental-io-uring = ["actix-web/experimental-io-uring"]
  use-non-static-synonyms-search = ["thesaurus"]
  