# Copyright 2018-2025 the Deno authors. MIT license. [workspace] resolver = "2" members = [ "bench_util", "cli", "cli/lib", "cli/rt", "cli/snapshot", "ext/broadcast_channel", "ext/cache", "ext/canvas", "ext/console", "ext/cron", "ext/crypto", "ext/fetch", "ext/ffi", "ext/fs", "ext/http", "ext/io", "ext/kv", "ext/napi", "ext/napi/sym", "ext/net", "ext/node", "ext/telemetry", "ext/url", "ext/web", "ext/webgpu", "ext/webidl", "ext/websocket", "ext/webstorage", "resolvers/deno", "resolvers/node", "resolvers/npm_cache", "runtime", "runtime/permissions", "tests", "tests/ffi", "tests/napi", "tests/util/server", ] exclude = ["tests/util/std/hash/_wasm"] [workspace.package] authors = ["the Deno authors"] edition = "2021" license = "MIT" repository = "https://github.com/denoland/deno" [workspace.dependencies] deno_ast = { version = "=0.46.1", features = ["transpiling"] } deno_core = { version = "0.340.0" } deno_bench_util = { version = "0.188.0", path = "./bench_util" } deno_config = { version = "=0.50.0", features = ["workspace"] } deno_doc = "=0.169.0" deno_graph = "=0.89.1" deno_lint = "=0.74.0" deno_lockfile = "=0.24.0" deno_media_type = { version = "=0.2.6", features = ["module_specifier"] } deno_npm = "=0.27.2" deno_path_util = "=0.3.2" deno_permissions = { version = "0.53.0", path = "./runtime/permissions" } deno_runtime = { version = "0.202.0", path = "./runtime" } deno_semver = "=0.7.1" deno_terminal = "0.2.0" eszip = "0.83.0" napi_sym = { version = "0.124.0", path = "./ext/napi/sym" } test_util = { package = "test_server", path = "./tests/util/server" } denokv_proto = "0.9.0" denokv_remote = "0.9.0" # denokv_sqlite brings in bundled sqlite if we don't disable the default features denokv_sqlite = { default-features = false, version = "0.9.0" } # exts deno_broadcast_channel = { version = "0.188.0", path = "./ext/broadcast_channel" } deno_cache = { version = "0.126.0", path = "./ext/cache" } deno_canvas = { version = "0.63.0", path = "./ext/canvas" } deno_console = { version = "0.194.0", path = "./ext/console" } deno_cron = { version = "0.74.0", path = "./ext/cron" } deno_crypto = { version = "0.208.0", path = "./ext/crypto" } deno_fetch = { version = "0.218.0", path = "./ext/fetch" } deno_ffi = { version = "0.181.0", path = "./ext/ffi" } deno_fs = { version = "0.104.0", path = "./ext/fs" } deno_http = { version = "0.192.0", path = "./ext/http" } deno_io = { version = "0.104.0", path = "./ext/io" } deno_kv = { version = "0.102.0", path = "./ext/kv" } deno_napi = { version = "0.125.0", path = "./ext/napi" } deno_net = { version = "0.186.0", path = "./ext/net" } deno_node = { version = "0.132.0", path = "./ext/node" } deno_os = { version = "0.11.0", path = "./ext/os" } deno_process = { version = "0.9.0", path = "./ext/process" } deno_telemetry = { version = "0.16.0", path = "./ext/telemetry" } deno_tls = { version = "0.181.0", path = "./ext/tls" } deno_url = { version = "0.194.0", path = "./ext/url" } deno_web = { version = "0.225.0", path = "./ext/web" } deno_webgpu = { version = "0.161.0", path = "./ext/webgpu" } deno_webidl = { version = "0.194.0", path = "./ext/webidl" } deno_websocket = { version = "0.199.0", path = "./ext/websocket" } deno_webstorage = { version = "0.189.0", path = "./ext/webstorage" } # workspace libraries deno_lib = { version = "0.10.0", path = "./cli/lib" } deno_npm_cache = { version = "0.13.0", path = "./resolvers/npm_cache" } deno_resolver = { version = "0.25.0", path = "./resolvers/deno" } deno_snapshots = { version = "0.9.0", path = "./cli/snapshot" } node_resolver = { version = "0.32.0", path = "./resolvers/node" } aead-gcm-stream = "0.4" aes = "=0.8.3" aes-gcm = "0.10" aes-kw = "0.2.1" anstream = "0.6.14" anyhow = "1.0.57" async-compression = "0.4" async-once-cell = "0.5.4" async-stream = "0.3" async-trait = "0.1.73" base32 = "=0.5.1" base64 = "0.21.7" base64-simd = "0.8" bencher = "0.1" bincode = "=1.3.3" blake2 = "0.10.6" boxed_error = "0.2.3" brotli = "6.0.0" bytemuck = "1.17.1" bytes = "1.4.0" cache_control = "=0.2.0" capacity_builder = "0.5.0" cbc = { version = "=0.1.2", features = ["alloc"] } # Note: Do not use the "clock" feature of chrono, as it links us to CoreFoundation on macOS. # Instead use util::time::utc_now() chrono = { version = "0.4", default-features = false, features = ["std", "serde"] } clap = "=4.5.30" clap_complete = "=4.5.45" clap_complete_fig = "=4.5.2" color-print = "0.3.5" console_static_text = "=0.8.3" const-oid = "0.9.5" cranelift = "0.116" cranelift-native = "0.116" crossterm = "0.28.1" ctr = { version = "0.9.2", features = ["alloc"] } curve25519-dalek = "4.1.3" dashmap = "5.5.3" data-encoding = "2.3.3" data-url = "=0.3.1" deno_cache_dir = "=0.18.0" deno_error = "=0.5.6" deno_native_certs = "0.3.0" deno_package_json = { version = "=0.5.1", default-features = false } deno_task_shell = "=0.20.2" deno_unsync = "0.4.2" deno_whoami = "0.1.0" der = "0.7.9" dhat = "0.3.3" digest = "0.10.5" dissimilar = "=1.0.4" dlopen2 = "0.6.1" dotenvy = "0.15.7" dprint-plugin-json = "=0.20.0" dprint-plugin-jupyter = "=0.2.0" dprint-plugin-markdown = "=0.18.0" dprint-plugin-typescript = "=0.94.0" dsa = "0.6.3" dyn-clone = "1" ecb = "=0.1.2" ecdsa = "0.16.9" ed25519-dalek = "2.1.1" ed448-goldilocks = "0.8.3" elliptic-curve = { version = "0.13.4", features = ["alloc", "arithmetic", "ecdh", "std", "pem", "jwk"] } encoding_rs = "=0.8.33" env_logger = "=0.10.0" error_reporter = "1" fancy-regex = "=0.10.0" fast-socks5 = "0.9.6" faster-hex = "0.9" fastwebsockets = { version = "0.8", features = ["upgrade", "unstable-split"] } file_test_runner = "0.7.3" filetime = "0.2.16" flaky_test = "=0.2.2" flate2 = { version = "1.0.30", default-features = false } fqdn = "0.3.4" fs3 = "0.5.0" futures = "0.3.21" glob = "0.3.1" h2 = "0.4.6" hickory-client = "0.25.0-alpha.4" hickory-proto = "0.25.0-alpha.4" hickory-resolver = { version = "0.25.0-alpha.4", features = ["tokio-runtime", "serde"] } hickory-server = "0.25.0-alpha.4" http = "1.0" http-body = "1.0" http-body-util = "0.1.2" http_v02 = { package = "http", version = "0.2.9" } httparse = "1.8.0" hyper = { version = "1.6.0", features = ["full"] } hyper-rustls = { version = "0.27.2", default-features = false, features = ["http1", "http2", "tls12", "ring"] } hyper-util = { version = "0.1.10", features = ["tokio", "client", "client-legacy", "server", "server-auto"] } hyper_v014 = { package = "hyper", version = "0.14.26", features = ["runtime", "http1"] } idna = "1.0.3" image = { version = "0.25.4", default-features = false } import_map = { version = "0.21.0", features = ["ext"] } indexmap = { version = "2", features = ["serde"] } ipnet = "2.3" ipnetwork = "0.20.0" itertools = "0.10" jsonc-parser = { version = "=0.26.2", features = ["serde"] } jupyter_runtime = "=0.19.0" k256 = "0.13.1" lazy-regex = "3" lcms2 = "6.1.0" libc = "0.2.168" libffi = "=3.2.0" libffi-sys = "=2.3.0" libloading = "0.7" libsqlite3-sys = "0.30.1" libsui = "0.5.0" libuv-sys-lite = "=1.48.2" libz-sys = { version = "1.1.20", default-features = false } log = { version = "0.4.20", features = ["kv"] } lsp-types = "=0.97.0" # used by tower-lsp and "proposed" feature is unstable in patch releases malva = "=0.11.0" markup_fmt = "=0.18.0" md-5 = "0.10.5" md4 = "0.10.2" memchr = "2.7.4" memmap2 = "0.9" memmem = "0.1.1" mime = "0.3.16" monch = "=0.5.0" napi-build = "1" napi-sys = { version = "=2.2.2", default-features = false } netif = "0.1.6" notify = "=6.1.1" ntest_timeout = "0.9.3" num-bigint = { version = "0.4", features = ["rand"] } num-bigint-dig = "0.8.2" num-integer = "0.1.45" num-traits = "0.2.19" once_cell = "1.17.1" open = "5.0.1" os_pipe = { version = "=1.1.5", features = ["io_safety"] } p224 = { version = "0.13.0", features = ["ecdh"] } p256 = { version = "0.13.2", features = ["ecdh", "jwk"] } p384 = { version = "0.13.0", features = ["ecdh", "jwk"] } p521 = "0.13.3" parking_lot = "0.12.0" path-clean = "=0.1.0" pathdiff = "0.2.1" pbkdf2 = "0.12.1" percent-encoding = "2.3.0" phf = { version = "0.11", features = ["macros"] } pin-project = "1.0.11" # don't pin because they yank crates from cargo pin-project-lite = "0.2.13" pkcs8 = "0.10.2" pretty_assertions = "=1.4.0" pretty_yaml = "=0.5.0" prost = "0.13" prost-build = "0.13" quick-junit = "0.3.5" quinn = { version = "0.11.6", default-features = false } rand = "=0.8.5" rayon = "1.8.0" regex = "^1.7.0" reqwest = { version = "=0.12.5", default-features = false, features = ["rustls-tls", "stream", "gzip", "brotli", "socks", "json", "http2"] } # pinned because of https://github.com/seanmonstar/reqwest/pull/1955 ring = "^0.17.0" ripemd = "0.1.3" rusqlite = { version = "0.32.0", features = ["unlock_notify", "bundled", "session"] } rustc-hash = "2.1.1" rustls = { version = "0.23.11", default-features = false, features = ["logging", "std", "tls12", "ring"] } rustls-pemfile = "2" rustls-tokio-stream = "=0.3.0" rustls-webpki = "0.102" rustyline = "=13.0.0" rustyline-derive = "=0.7.0" saffron = "=0.1.0" same-file = "1.0.6" scopeguard = "1.2.0" scrypt = "0.11.0" sec1 = "0.7" semver = "=1.0.14" serde = { version = "1.0.149", features = ["derive"] } serde-value = "0.7" serde_bytes = "0.11" serde_json = "1.0.85" serde_repr = "=0.1.16" sha1 = { version = "0.10.6", features = ["oid"] } sha2 = { version = "0.10.8", features = ["oid"] } sha3 = "0.10.8" signature = "2.1" simd-json = "0.14.0" slab = "0.4" sm3 = "0.4.2" smallvec = "1.8" socket2 = { version = "0.5.3", features = ["all"] } spki = "0.7.2" sqlformat = "=0.3.2" strsim = "0.11.1" sys_traits = "=0.1.8" tar = "=0.4.40" tempfile = "3.4.0" termcolor = "1.1.3" text-size = "=1.1.0" text_lines = "=0.6.0" thiserror = "2.0.3" tokio = { version = "1.36.0", features = ["full"] } tokio-eld = "0.2" tokio-metrics = { version = "0.3.0", features = ["rt"] } tokio-rustls = { version = "0.26.0", default-features = false, features = ["ring", "tls12"] } tokio-socks = "0.5.1" tokio-util = "0.7.4" tower = { version = "0.5.2", default-features = false, features = ["retry", "util"] } tower-http = { version = "0.6.1", features = ["decompression-br", "decompression-gzip"] } tower-lsp = { package = "deno_tower_lsp", version = "=0.4.3", features = ["proposed"] } tower-service = "0.3.2" tracing = "0.1" tracing-opentelemetry = "0.28.0" tracing-subscriber = "0.3.19" twox-hash = "=1.6.3" typed-arena = "=2.0.2" unicode-width = "0.1.3" url = { version = "2.5", features = ["serde", "expose_internals"] } urlpattern = "0.3.0" uuid = { version = "1.3.0", features = ["v4"] } walkdir = "=2.3.2" web-transport-proto = "0.2.3" webpki-root-certs = "0.26.5" webpki-roots = "0.26" which = "6" x25519-dalek = "2.0.0" x509-parser = "0.15.0" yoke = { version = "0.7.4", features = ["derive"] } zeromq = { version = "=0.4.1", default-features = false, features = ["tcp-transport", "tokio-runtime"] } zip = { version = "2.1.6", default-features = false } zstd = "=0.12.4" opentelemetry = "0.27.0" opentelemetry-http = "0.27.0" opentelemetry-otlp = { version = "0.27.0", features = ["logs", "http-proto", "http-json"] } opentelemetry-semantic-conventions = { version = "0.27.0", features = ["semconv_experimental"] } opentelemetry_sdk = { version = "0.27.0", features = ["rt-tokio", "trace"] } # crypto hkdf = "0.12.3" rsa = { version = "0.9.3", default-features = false, features = ["std", "pem", "hazmat"] } # hazmat needed for PrehashSigner in ext/node # webgpu raw-window-handle = "0.6.0" wgpu-core = "24.0.0" wgpu-types = "24.0.0" # macros quote = "1" syn = { version = "2", features = ["full", "extra-traits"] } # unix nix = "=0.27.1" # windows deps junction = "=1.2.0" win32job = "2" winapi = "=0.3.9" windows-sys = { version = "0.59.0", features = ["Win32_Foundation", "Win32_Media", "Win32_Storage_FileSystem", "Win32_System_IO", "Win32_System_WindowsProgramming", "Wdk", "Wdk_System", "Wdk_System_SystemInformation", "Win32_Security", "Win32_System_Pipes", "Wdk_Storage_FileSystem", "Win32_System_Registry", "Win32_System_Kernel", "Win32_System_Threading", "Win32_UI", "Win32_UI_Shell"] } winres = "=0.1.12" [profile.release] codegen-units = 1 incremental = true lto = true opt-level = 'z' # Optimize for size # Build release with debug symbols: cargo build --profile=release-with-debug [profile.release-with-debug] inherits = "release" debug = true # Faster to compile than `release` but with similar performance. [profile.release-lite] inherits = "release" codegen-units = 128 lto = "thin" # Key generation is too slow on `debug` [profile.dev.package.num-bigint-dig] opt-level = 3 # rusty-v8 needs at least -O1 to not miscompile [profile.dev.package.v8] opt-level = 1 [profile.release.package.async-compression] opt-level = 3 [profile.release.package.base64-simd] opt-level = 3 [profile.release.package.brotli] opt-level = 3 [profile.release.package.brotli-decompressor] opt-level = 3 [profile.release.package.bytes] opt-level = 3 [profile.release.package.deno_bench_util] opt-level = 3 [profile.release.package.deno_broadcast_channel] opt-level = 3 [profile.release.package.deno_core] opt-level = 3 [profile.release.package.deno_crypto] opt-level = 3 [profile.release.package.deno_fetch] opt-level = 3 [profile.release.package.deno_ffi] opt-level = 3 [profile.release.package.deno_http] opt-level = 3 [profile.release.package.deno_napi] opt-level = 3 [profile.release.package.deno_net] opt-level = 3 [profile.release.package.deno_node] opt-level = 3 [profile.release.package.deno_runtime] opt-level = 3 [profile.release.package.deno_tls] opt-level = 3 [profile.release.package.deno_url] opt-level = 3 [profile.release.package.deno_web] opt-level = 3 [profile.release.package.deno_websocket] opt-level = 3 [profile.release.package.fastwebsockets] opt-level = 3 [profile.release.package.flate2] opt-level = 3 [profile.release.package.futures-util] opt-level = 3 [profile.release.package.futures-io] opt-level = 3 [profile.release.package.futures-channel] opt-level = 3 [profile.release.package.futures-sink] opt-level = 3 [profile.release.package.futures-task] opt-level = 3 [profile.release.package.futures-core] opt-level = 3 [profile.release.package.hyper] opt-level = 3 [profile.release.package.miniz_oxide] opt-level = 3 [profile.release.package.num-bigint-dig] opt-level = 3 [profile.release.package.rand] opt-level = 3 [profile.release.package.serde] opt-level = 3 [profile.release.package.serde_v8] opt-level = 3 [profile.release.package.libsui] opt-level = 3 [profile.release.package.test_napi] opt-level = 3 [profile.release.package.tokio] opt-level = 3 [profile.release.package.url] opt-level = 3 [profile.release.package.v8] opt-level = 3 [profile.release.package.zstd] opt-level = 3 [profile.release.package.zstd-sys] opt-level = 3 [profile.release.package.http] opt-level = 3 [profile.release.package.http-body] opt-level = 3 [profile.release.package.httparse] opt-level = 3 [profile.release.package.mio] opt-level = 3 [profile.release.package.fnv] opt-level = 3 [profile.release.package.hyper-util] opt-level = 3 [profile.release.package.httpdate] opt-level = 3 [profile.release.package.deno_unsync] opt-level = 3