Repository navigation
Expand file tree
/
Copy pathCargo.toml
More file actions
174 lines (166 loc) · 8.09 KB
/
Copy pathCargo.toml
File metadata and controls
174 lines (166 loc) · 8.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
[package]
name = "strobe"
version = "0.33.0"
edition = "2024"
description = "Measure and explain performance: web pages, Electron apps, Bun/Node, any process"
license = "MIT"
publish = false
[lib]
name = "strobe"
path = "src/lib.rs"
[[bin]]
name = "strobe"
path = "src/main.rs"
[[bin]]
name = "strobew"
path = "src/bin/strobew.rs"
[dependencies]
# JSON for every protocol strobe speaks (CDP, runner, MCP, results).
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["unbounded_depth", "float_roundtrip"] }
# WebSocket client for the Chrome DevTools Protocol; plain ws:// to 127.0.0.1, no TLS.
# 0.24: its getrandom 0.2 links bcrypt normally; newer ones need dlltool's raw-dylib on windows-gnu.
tungstenite = { version = "0.24", default-features = false, features = ["handshake"] }
# Ids, temporary names and tokens from the OS's random source; already in the tree through tungstenite.
getrandom = "0.2"
# IO.read returns trace chunks base64-encoded.
base64 = "0.22"
# gzip for stored traces and heap snapshots; pure-Rust backend (no C compiler).
flate2 = { version = "1", default-features = false, features = ["rust_backend"] }
# Verifying downloaded engine archives against pinned hashes; pure Rust.
sha2 = "0.10"
# Launch milestones match the app's output and logs by regular expression; no Unicode tables.
regex-lite = "0.1"
# Native stacks: functions, files, lines and inline frames from PDBs; pure Rust (pdb2 underneath).
pdb-addr2line = "0.12"
# Rust symbol names in PDB public symbols (legacy and v0 mangling); pure Rust.
rustc-demangle = "0.1"
# C++ symbol names in Microsoft's public PDBs (`?Present@CDXGISwapChain@@…`); pure Rust.
msvc-demangler = "0.11"
# Result cards and badges (`report --format card|badge`): SVG text set in the embedded font, outlined, and
# rasterized to PNG; pure Rust (usvg, rustybuzz, tiny-skia), no system fonts.
resvg = { version = "0.49", default-features = false, features = ["text"] }
# iOS devices (host/ios.rs): usbmuxd, lockdownd and their services speak XML and binary property lists.
plist = { version = "1", default-features = false }
# iOS devices: lockdownd sessions and services run over mutual TLS with the pair record's certificates.
# No built-in crypto backend (ring and aws-lc-rs need a C compiler): host/ios/tls.rs supplies a minimal
# one over the RustCrypto crates below, all pure Rust.
rustls = { version = "0.23", default-features = false, features = ["std", "tls12"] }
# iOS TLS: AES-GCM records.
aes-gcm = { version = "0.10", default-features = false, features = ["aes", "alloc"] }
# iOS TLS: HMAC for the TLS 1.2 PRF and TLS 1.3 HKDF.
hmac = "0.12"
# iOS TLS: signing with the pair record's RSA host key and checking the device's RSA signatures.
rsa = { version = "0.9", default-features = false, features = ["std", "u64_digit", "sha2"] }
# iOS TLS: X25519 and P-256 key exchange.
x25519-dalek = { version = "2", default-features = false, features = ["zeroize"] }
p256 = { version = "0.13", default-features = false, features = ["ecdh", "std"] }
# iOS TLS: the OS random source for the RustCrypto keys (getrandom 0.2, already in the tree).
rand_core = { version = "0.6", features = ["getrandom"] }
# Terminal targets: the cell grid a terminal would show for a program's output (on vte); pure Rust, ~4k lines.
vt100 = "0.18"
[target.'cfg(unix)'.dependencies]
# Linux and macOS system calls (affinity, CPU clocks, sysctl, proc_pidinfo, perf_event_open, dlopen); bindings only, no C build.
libc = "0.2"
# Native stacks on Linux and macOS: functions, files, lines and inline frames from DWARF (ELF, dSYM); pure Rust.
addr2line = { version = "0.26", default-features = false, features = ["std"] }
gimli = { version = "0.33", default-features = false, features = ["read", "std"] }
# Reading ELF and Mach-O modules: sections, segments, symbols, build ids; pure Rust.
object = { version = "0.39", default-features = false, features = ["read_core", "elf", "macho", "std", "compression"] }
[target.'cfg(target_os = "linux")'.dependencies]
# X11 windows (find, place, keep on top, read pixels), input through XTest and frames from the
# Present extension's completion events, over the pure-Rust connection; no libxcb.
x11rb = { version = "0.13", default-features = false, features = ["xtest", "present", "dri3", "randr"] }
# Unwinding sampled user stacks with the modules' DWARF unwind tables (.eh_frame); pure Rust.
framehop = { version = "0.16", default-features = false }
# Native Wayland apps on a compositor strobe runs: its output's pixels (wlr screencopy) and input through
# its seat (wlr virtual pointer, virtual keyboard), over wayland-client's pure-Rust backend (no libwayland,
# no C compiler: its system backend is off).
wayland-client = { version = "0.31", default-features = false }
wayland-protocols-wlr = { version = "0.3", default-features = false, features = ["client"] }
wayland-protocols-misc = { version = "0.3", default-features = false, features = ["client"] }
[target.'cfg(windows)'.dependencies]
# UI Automation (COM): finding a native app's elements, their bounds and states, and waiting on its
# accessibility events. 0.58 shares windows-targets 0.52 with windows-sys; pure Rust.
windows = { version = "0.58", features = [
"implement",
"Win32_Foundation",
"Win32_System_Com",
"Win32_System_Ole",
"Win32_System_Variant",
"Win32_UI_Accessibility",
# Video of a window (`--video`): Windows.Graphics.Capture frames, scaled by the GPU's video
# processor (Direct3D 11) and encoded by Media Foundation; d3d11 and mfplat load on first use.
"Foundation",
"Graphics",
"Graphics_Capture",
"Graphics_DirectX",
"Graphics_DirectX_Direct3D11",
"Win32_Graphics_Direct3D",
"Win32_Graphics_Direct3D11",
"Win32_Graphics_Dxgi",
"Win32_Graphics_Dxgi_Common",
"Win32_Media_MediaFoundation",
"Win32_System_WinRT",
"Win32_System_WinRT_Direct3D11",
"Win32_System_WinRT_Graphics_Capture",
] }
# The `implement` macro's paths for strobe's UIA event handlers.
windows-core = "0.58"
# Win32: QPC clock, process CPU times, toolhelp snapshots, affinity, power plans, PDH, window state.
windows-sys = { version = "0.59", features = [
"Win32_Foundation",
"Win32_System_Performance",
"Win32_System_Threading",
"Win32_System_Diagnostics_ToolHelp",
"Win32_System_SystemInformation",
"Win32_System_ProcessStatus",
# Native memory by what holds it: a walk of a target's address space (VirtualQueryEx).
"Win32_System_Memory",
"Win32_System_Power",
"Win32_System_Registry",
"Win32_System_RemoteDesktop",
"Win32_UI_WindowsAndMessaging",
"Win32_UI_Input_KeyboardAndMouse",
"Win32_Graphics_Gdi",
# Native app windows: cloaked by the compositor (minimized to a virtual desktop, hidden), and their DPI.
"Win32_Graphics_Dwm",
"Win32_UI_HiDpi",
# The display path a window shows on (its refresh and the adapter that scans it out).
"Win32_Devices_Display",
# OS and GPU sampler: console (top), NVML loaded at runtime, D3DKMT adapter names, NtQuerySystemInformation.
"Win32_System_Console",
"Win32_System_LibraryLoader",
"Win32_System_WindowsProgramming",
"Wdk_Graphics_Direct3D",
"Wdk_System_SystemInformation",
# ETW: OS present events, sampled stacks and image loads; the deep-mode helper's pipe, its ACL,
# the one elevation, and the Performance Log Users group.
"Win32_System_Diagnostics_Etw",
"Win32_System_Time",
"Win32_Security",
"Win32_Security_Authorization",
"Win32_Storage_FileSystem",
"Win32_System_Pipes",
"Win32_System_IO",
"Win32_UI_Shell",
"Win32_NetworkManagement_NetManagement",
"Win32_NetworkManagement_IpHelper",
# Native app snapshots: a window's own rendering of itself (PrintWindow).
"Win32_Storage_Xps",
# Native stacks without the helper: a thread's registers (CONTEXT) and the target's stack and
# unwind data (ReadProcessMemory).
"Win32_System_Diagnostics_Debug",
"Win32_System_Kernel",
# A launch's processes as one job: listed, ended together, and ended by Windows if strobe dies.
"Win32_System_JobObjects",
# Disk use of strobe's folders: a file's hard links by its name, without opening it.
"Wdk_Foundation",
"Wdk_Storage_FileSystem",
] }
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
panic = "abort"
strip = true