-
Notifications
You must be signed in to change notification settings - Fork 1
/
Cargo.toml
131 lines (102 loc) · 5.83 KB
/
Cargo.toml
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
[package]
name = "kickass-app-template"
version = "0.1.0"
edition = "2021"
# binaries
# TODO 2023-02-21: remove this section after all parties had merged (and shared back) the latest changes: move src/main.rs to src/bin/main.rs & egui_webassembly_main.rs to src/bin/egui_webassembly.rs
# (by putting rust files in src/bin, this section is not necessary -- see https://stackoverflow.com/a/36604610/10297793)
[[bin]]
name = "kickass_app_template"
path = "src/main.rs"
#[[bin]]
#name = "egui_webassembly"
#path = "web-egui/src/main.rs"
[features]
default = [
# comment out to use the default allocator, which works better than all others in low memory environments
#"tcmalloc_allocator" # the fastest allocator, according to features.rs (go measure it, from time to time, for your current workload)
]
dox = ["ctor"] # allows test module setups functions
# Allocators
std_allocator = []
mimalloc_allocator = ["mimalloc"]
jemallocator_allocator = ["jemallocator"]
tcmalloc_allocator = ["tcmalloc/default"] # fastest for multi-threaded algorithms, even if it uses a little bit more RAM (even on heavy swapping scenarios) -- requires libs provided by system package 'gperftools'
tcmalloc_allocator_bundled = ["tcmalloc/bundled"] # this one uses tcmalloc's implementation of it's required lib
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[workspace]
[dependencies]
# KICKASS-APP-TEMPLATE DEPENDENCIES
###################################
# global allocators -- enabled by features -- see features.rs
jemallocator = { version = "0.5", optional = true }
mimalloc = { version = "0.1", default-features = false, optional = true }
tcmalloc = { version = "0.3", default-features = false, optional = true }
# other interesting allocators:
# scudo - focused on heap security (prevents heap exploitation by unsafe / external code)
log = { version = "0.4", features = ["max_level_debug", "release_max_level_info"] }
parking_lot = "0.12" # high performance Mutexes
# default config loading & saving
serde = { version = "1.0", features = ["derive"] } # typed serialization / deserialization
ron = "0.8" # .ron config files
regex = "1.5" # for placing docs along with config files
owning_ref = "0.4.1" # allows Arcs to be used for internal references
# metrics
minstant = "0.1" # (real) time measurements through RDTSC instruction (without calling the Kernel / without causing a context switch)
# low overhead, ergonomical metrics gathering
metered = { version = "0.9", features = [ "error-count-skip-cleared-by-default" ] }
hdrhistogram = "7.5" # low-latency, high-range histograms
#atomic = "0.5" # native atomic instructions for generic T: Copy types (or fallback, if atomic instr is not possible)
#serde_prometheus = "0.1" # serde-based serializer for prometheus' text-based exposition format
#thiserror = "1.0" # macros for making enum variants to implement the Error trait -- for libs
# command-line parsing
structopt = "0.3" # command line parsing
strum = { version = "0.25", features = ["derive"] } # enums serialization/deserialization
strum_macros = "0.25"
chrono = "0"
# console UI
slog-stdlog = "4" # Facade between slog and Rust's standard 'log' api
slog-scope = "4"
slog = "2"
sloggers = "2"
#simple_logger = {version = "2.3", features = ["stderr"]} # a dirty console logger
# terminal UI
tui = { version = "0.19", features = ['crossterm'] }
crossterm = "0.27" # from tui's Cargo.toml
rand = "0.8"
# GUI
eframe = { version = "0.22", features = ["persistence"] } # Gives us egui, epi and web+native backends, allowing it to save & load the UI state between runs
egui_extras = { version = "0.22", features = ["svg"] } # Additional widgets for egui: Images, Tables, ...
#rlottie = "0.5" # Lottie animations -- depends on 'rlottie' package from AUR
rgb = { version = "0.8.32", default-features = false } # for rlottie pixel format conversions
# telegram UI
teloxide = { version = "0.12", features = ["macros", "auto-send"] } # telegram client
reqwest = { version = "0.11", features = ["cookies", "gzip"] } # web client
# web API / UI
rocket = { version = "0.5", features = ["json"] }
tokio = { version = "1", features = ["full", "rt-multi-thread"] }
futures = { version = "0.3" }
tokio-stream = "0.1"
once_cell = "1.17" # used when serving embedded files
# socket server
message-io = { version = "0.14", default-features = false, features = ["tcp"] } # good ideas regarding event based processing, but to be replaced by my own Tokio implementations, since this behaves bad in really high loads
par-stream = { version = "0.10", default-features = false, features = ["runtime-tokio"] } # allows stream executors to process items in parallel
# reactive programming
reactive-mutiny = "1.1.24"
reactive-messaging = "0.2.2"
# resiliency
keen-retry = "0.3"
# doc dependencies
##################
ctor = { version = "0.2", optional = true }
[dev-dependencies]
ctor = "0.2" # setup and teardown for test modules
simple_logger = "4" # a dirty console logger
httpmock = "0" # allows testing integration with http services (commented out for it was causing dependency issues as of 2022-09-09)
big-o-test = "0.2" # enforce algorithm's maximum allowed complexity
[build-dependencies]
# FRONTEND DEPENDENCY for Web Angular UI integration in build.rs
walkdir = "2.3"
flate2 = "1" # gzip / gunzip
brotli = "3.3" # brotli compression
chrono = "0"