# Copyright (c) Microsoft Corporation. # Licensed under the MIT license. [package] name = "demikernel" version = "1.5.13" authors = ["Microsoft Corporation"] edition = "2021" description = "Kernel-Bypass LibOS Architecture" readme = "README.md" homepage = "https://aka.ms/demikernel" repository = "https://github.com/demikernel/demikernel" license-file = "LICENSE.txt" [dependencies] # Third-party crates. arrayvec = "0.7.4" async-trait = "0.1.81" anyhow = "1.0.86" bit-iter = "1.2.0" cfg-if = "1.0.0" crc = "3.2.1" clap = "4.5.15" crossbeam-channel = "0.5.13" eui48 = "1.1.0" flexi_logger = "0.28.5" futures = "0.3.30" histogram = "0.11.0" libc = "0.2.155" log = "0.4.22" mimalloc = { version = "0.1.43", default-features = false } rand = { version = "0.8.5", features = ["small_rng"] } slab = "0.4.9" socket2 = "0.5.7" yaml-rust = "0.4.5" x86 = "0.52.0" # Demikernel crates (published on crates.io). demikernel-dpdk-bindings = { version = "1.1.6", optional = true } demikernel-network-simulator = { version = "0.1.0" } # Windows-specific dependencies. [target.'cfg(windows)'.dependencies] # libc implementation in Rust is quite different for Windows and Linux. This library provides the relevant networking # constants and data structures for Windows. windows = { version = "0.57.0", features = [ "Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_Threading", ] } demikernel-xdp-bindings = { version = "1.0.0", optional = true } # for interacting with socket2. windows-sys = { version = "0.52.0", features = ["Win32_Networking_WinSock"] } # Targets [lib] crate-type = ["cdylib", "rlib"] path = "src/rust/lib.rs" [[test]] name = "tcp-test" path = "tests/rust/tcp-test/main.rs" harness = false [[test]] name = "pipe-test" path = "tests/rust/pipe-test/main.rs" harness = false [[test]] name = "tcp" path = "tests/rust/tcp.rs" [[test]] name = "udp" path = "tests/rust/udp.rs" [[test]] name = "sga" path = "tests/rust/sga.rs" [[example]] name = "udp-dump" path = "examples/rust/udp-dump.rs" [[example]] name = "udp-echo" path = "examples/rust/udp-echo.rs" [[example]] name = "udp-pktgen" path = "examples/rust/udp-pktgen.rs" [[example]] name = "udp-relay" path = "examples/rust/udp-relay.rs" [[example]] name = "pipe-ping-pong" path = "examples/rust/pipe-ping-pong.rs" [[example]] name = "pipe-push-pop" path = "examples/rust/pipe-push-pop.rs" [[example]] name = "udp-push-pop" path = "examples/rust/udp-push-pop.rs" [[example]] name = "udp-ping-pong" path = "examples/rust/udp-ping-pong.rs" [[example]] name = "tcp-dump" path = "examples/rust/tcp-dump.rs" [[example]] name = "tcp-pktgen" path = "examples/rust/tcp-pktgen.rs" [[example]] name = "tcp-push-pop" path = "examples/rust/tcp-push-pop.rs" [[example]] name = "tcp-ping-pong" path = "examples/rust/tcp-ping-pong.rs" [features] default = ["catnap-libos"] catnap-libos = [] catpowder-libos = [] catmem-libos = [] catnip-libos = ["libdpdk"] catloop-libos = ["catmem-libos"] libdpdk = ["demikernel-dpdk-bindings"] libxdp = ["demikernel-xdp-bindings"] mlx4 = ["demikernel-dpdk-bindings/mlx4"] mlx5 = ["demikernel-dpdk-bindings/mlx5"] profiler = [] auto-calibrate = [] [profile.release] opt-level = 3 # Enable all compiler optimizations. debug = false # Do not include any debug info in the binary. debug-assertions = false # Do not include any debug assertions in the binary. overflow-checks = false # Do not check for overflows at runtime. lto = "fat" # Perform link time optimizations across all dependencies (overridden). panic = "abort" # Terminate the process upon panic (overridden). incremental = false # Disable incremental compilation. codegen-units = 1 # Produce a single code generation unit (overridden). rpath = false # Disable runtime search path. [profile.dev] opt-level = 0 # Disable all compiler optimizations. debug = true # Output full debug info in the binary. debug-assertions = true # Include debug assertions in the binary. overflow-checks = true # Check for overflows at runtime. lto = "off" # Disable link time optimization (overridden). panic = 'unwind' # Unwind the stack upon panic. incremental = true # Incremental build. codegen-units = 256 # Produce multiple code generation units. rpath = false # Disable runtime search path.