# # Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # [package] name = "quilkin" version = "0.9.0" authors = [ "Mark Mandel ", "Ifeanyi Ubah ", "Erin Power ", ] license.workspace = true description = "Quilkin is a non-transparent UDP proxy specifically designed for use with large scale multiplayer dedicated game server deployments, to ensure security, access control, telemetry data, metrics and more." homepage = "https://github.com/googleforgames/quilkin" repository = "https://github.com/googleforgames/quilkin" readme = "README.md" keywords = [ "proxy", "game-server", "game-development", "networking", "multiplayer", ] categories = ["game-development", "network-programming"] edition.workspace = true exclude = ["docs", "build", "examples", "image"] [features] default = [] instrument = [] mimalloc = ["dep:mimalloc"] heap-stats = ["dep:crossbeam-utils"] [lints] workspace = true [[bench]] name = "read_write" harness = false test = false [[bench]] name = "compression" harness = false test = false # [[bench]] # name = "cluster_map" # harness = false # test = false # [[bench]] # name = "misc" # harness = false # test = false [[bench]] name = "token_router" harness = false test = false [dependencies] # Local quilkin-macros = { version = "0.9.0", path = "./crates/macros" } quilkin-xds = {version = "0.9.0",path = "crates/xds" } quilkin-proto.workspace = true # Crates.io arc-swap.workspace = true async-channel.workspace = true async-stream.workspace = true base64.workspace = true base64-serde = "0.7.0" bytes = { version = "1.5.0", features = ["serde"] } cached.workspace = true crossbeam-utils = { version = "0.8", optional = true } clap = { version = "4.4.6", features = ["cargo", "derive", "env"] } dashmap = { version = "5.5", features = ["serde"] } either = "1.9.0" enum-map.workspace = true eyre.workspace = true fixedstr.workspace = true futures.workspace = true http-body-util = "0.1" hyper = { version = "1.3", features = ["http2", "http1", "server"] } hyper-rustls = { version = "0.27", default-features = false, features = [ "http2", "webpki-roots", ] } ipnetwork = "0.20.0" k8s-openapi.workspace = true lz4_flex = { version = "0.11", default-features = false } maxminddb = "0.24.0" notify = "6.1.1" num_cpus = "1.16.0" mimalloc = { version = "0.1.43", optional = true } once_cell.workspace = true parking_lot.workspace = true prometheus.workspace = true prost.workspace = true prost-types.workspace = true rand.workspace = true regex.workspace = true schemars.workspace = true seahash = "4.1" serde.workspace = true serde_json.workspace = true serde_regex = "1.1.0" serde_stacker = "0.1.10" serde_yaml = "0.9.25" snap = "1.1.0" socket2.workspace = true stable-eyre = "0.2.2" thiserror.workspace = true time = { version = "0.3", default-features = false, features = ["std"] } tokio.workspace = true tokio-stream.workspace = true tonic.workspace = true tower.workspace = true tracing.workspace = true tracing-futures.workspace = true tracing-subscriber = { workspace = true, features = ["json", "env-filter"] } tryhard.workspace = true url.workspace = true uuid.workspace = true lasso = { version = "0.7.2", features = ["multi-threaded"] } kube.workspace = true kube-core.workspace = true hickory-resolver = { version = "0.24", features = [ "dns-over-https-rustls", "system-config", ] } async-trait = "0.1.73" strum = "0.26" strum_macros = "0.26" cfg-if = "1.0.0" libflate = "2.0.0" form_urlencoded = "1.2.1" [dependencies.hyper-util] version = "0.1" features = ["client", "client-legacy"] [target.'cfg(target_os = "linux")'.dependencies] io-uring = { version = "0.6", default-features = false } libc = "0.2" slab = "0.4" sys-info = "0.9.1" pprof = { version = "0.13.0", features = ["prost", "prost-codec"] } [dev-dependencies] divan = "0.1.2" once_cell.workspace = true pretty_assertions = "1.4.0" rand.workspace = true regex.workspace = true tracing-test = "0.2.4" tempfile.workspace = true xxhash-rust = { version = "0.8", features = ["xxh3"] } # We want debug information when doing benchmarks for debugging purposes as well # as better (correct) callstacks in perf [profile.bench] debug = true [workspace] members = [".", "crates/*"] [workspace.package] license = "Apache-2.0" edition = "2021" [workspace.dependencies] arc-swap = { version = "1.6.0", features = ["serde"] } async-channel = "2.1.0" async-stream = "0.3.5" base64 = "0.22.0" cached = { version = "0.53", default-features = false } eyre = "0.6.8" enum-map = "2.6.3" futures = "0.3.28" kube = { version = "0.93", features = [ "runtime", "rustls-tls", "client", ], default-features = false } kube-core = { version = "0.93", default-features = false, features = [ "schema", ] } k8s-openapi = { version = "0.22", features = ["v1_29", "schemars"] } once_cell = "1.18.0" prometheus = { version = "0.13.3", default-features = false } prost = "0.12" prost-types = "0.12" quilkin = { path = "." } quilkin-proto = {version = "0.9.0", path = "crates/quilkin-proto" } rand = "0.8.5" regex = "1.9.6" serde = { version = "1.0.188", features = ["derive", "rc"] } serde_json = "1.0.107" socket2 = { version = "0.5.4", features = ["all"] } tempfile = "3.8.0" thiserror = "1.0.49" tokio-stream = { version = "0.1.14", features = ["net", "sync"] } tokio = { version = "1.32.0", features = [ "rt-multi-thread", "fs", "signal", "test-util", "parking_lot", "tracing", ] } tonic = "0.11" tower = "0.4" tracing = "0.1.37" tracing-futures = { version = "0.2.5", features = ["futures-03"] } tracing-subscriber = "0.3" tryhard = "0.5.1" uuid = { version = "1.4.1", default-features = false, features = ["v4"] } fixedstr = { version = "0.5", features = ["flex-str"] } parking_lot = "0.12.1" schemars = { version = "0.8.15", features = ["bytes", "url"] } url = { version = "2.4.1", features = ["serde"] } [workspace.lints.clippy] undocumented_unsafe_blocks = "deny"