[workspace] resolver = "2" members = [ "allocator", "api", "dialogs", "extension", "macros", "playtime-clip-engine", "playtime-api", "pot", "pot-browser", "csi", "main", "rx-util", "swell-ui", "base", "artwork-processor", # Will probably be excluded from the workspace in future "main/lib/helgoboss-learn" ] [workspace.dependencies] # Own base = { path = "base" } pot = { path = "pot" } pot-browser = { path = "pot-browser" } helgobox-dialogs = { path = "dialogs" } reaper-common-types = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" } reaper-rx = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" } reaper-fluent = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" } reaper-high = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master", features = ["serde"] } reaper-medium = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master", features = ["serde"] } reaper-low = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" } reaper-macros = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" } rppxml-parser = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" } swell-ui = { path = "swell-ui" } rx-util = { path = "rx-util" } playtime-clip-engine = { path = "playtime-clip-engine" } helgobox-api = { path = "api" } helgobox-macros = { path = "macros" } helgobox-allocator = { path = "allocator" } playtime-api = { path = "playtime-api" } realearn-csi = { path = "csi" } helgoboss-learn = { path = "main/lib/helgoboss-learn", features = ["reaper-low"] } helgoboss-midi = { version = "0.4", features = ["serde", "serde_repr"] } helgoboss-license-api = { git = "https://github.com/helgoboss/helgoboss-license-api" } # 3rd-party scopeguard = "1.1.0" rxrust = { git = "https://github.com/rxRust/rxRust", rev = "349e50b3197e05926e2378ef8fc45cb67ad43b83" } indexmap = "2.1.0" itertools = "0.12.0" wildmatch = "2.1.0" serde = { version = "1.0", features = ["derive", "rc"] } serde_json = "1.0" serde_plain = "1.0.2" derive_more = "0.99.16" tokio = { version = "1", features = ["rt-multi-thread", "sync", "macros", "time"] } enum-map = { version = "2.4.1", features = ["serde"] } once_cell = "1.4.0" strum = { version = "0.25.0", features = ["derive"] } regex = "1" walkdir = "2" either = "1.8.0" tracing = "0.1.40" tracing-core = "0.1.32" tracing-subscriber = "0.3.7" futures = { version = "0.3", default-features = false } derivative = "2.2.0" tempfile = "3.1.0" xxhash-rust = { version = "0.8.15", features = ["xxh3"] } crossbeam-channel = "0.5" futures-timer = "3.0.2" metrics = "0.22.0" ascii = "1.0" winapi = "0.3" bindgen = "0.69.2" enumflags2 = "0.7.4" nanoid = "0.4.0" slug = "0.1.4" num_enum = "0.7.2" nom = "7.0.0" semver = { version = "1.0.17", features = ["serde"] } enumset = "1.0.12" mlua = { version = "0.10.2", features = ["vendored", "luau", "serialize", "anyhow"] } chrono = "0.4.11" dirs = "5.0.1" libloading = "0.8" tokio-stream = { version = "0.1.8", features = ["sync"] } raw-window-handle = "0.4.2" egui = "0.21.0" egui_extras = "0.21.0" egui-toast = "0.6.0" bytesize = "1.0.1" hex = "0.4.2" rmp-serde = "1.1.1" anyhow = "1.0.71" thiserror = "1.0.45" enum_dispatch = "0.3.6" simple_moving_average = "1.0.2" tinyvec = "1.6.0" erased-serde = "0.4.2" fragile = "2.0.0" approx = "0.5.1" serde_repr = "0.1.5" serde_with = "3.4.0" lazycell = "1.2" rosc = "0.10.1" rust-ini = "0.20.0" function_name = "0.3.0" num = "0.4.1" logos = "0.13.0" camino = "1.1.7" auto_impl = "1.1.0" bytemuck = "1.13.1" palette = "0.7.4" libc = "0.2.153" path-slash = "0.2.1" pathdiff = "0.2.1" open = "5.0.1" url = "2.5.2" atomic = "0.6.0" static_assertions = "1.1.0" image = { version = "0.25.2", default-features = false } cached = "0.53.1" imageproc = "0.25.0" tower = "0.5.2" axum = "0.7.9" axum-server = "0.7.1" tower-http = "0.6.2" tonic = "0.12.3" prost = "0.13.4" rcgen = "0.12.0" dns-lookup = "2.0.4" hostname = "^0.3" askama = "0.12.1" serde_ini = "0.2.0" webbrowser = "0.8.12" runas = "1.1.0" qrcode = "0.14.1" uuid = "1.6.1" vst = "0.4.0" c_str_macro = "1.0.2" arboard = "3.3.0" smallvec = "1.7.0" backtrace = "0.3.74" serde_yaml = "0.8.17" fasteval = { version = "0.2.4", default-features = false } maplit = "1.0.2" metrics-exporter-prometheus = { version = "0.13.0", default-features = false } embed-resource = "2.4.1" sysinfo = "0.30.5" sys-info = "0.9.1" # We use a special version because of "link_lib_modifiers", which allows us to add "+whole-archive" # in a convenient way. TODO-low-wait https://github.com/rust-lang/cc-rs/pull/671 cc = { git = "https://github.com/petrochenkov/cc-rs.git", rev = "4d52bd211aeb2b4ddccd1b9c0a0841e03aaaef7c" } built = "0.7.1" tts = { git = "https://github.com/helgoboss/tts-rs", branch = "helgoboss-fixes" } edit = { git = "https://github.com/helgoboss/edit", branch = "realearn" } async-channel = "2.1.1" env_logger = "0.10.1" egui-baseview = { git = "https://github.com/helgoboss/egui-baseview.git", branch = "realearn" } baseview = { git = "https://github.com/helgoboss/baseview.git", branch = "realearn" } include_dir = "0.7.3" whoami = "1.4.1" streamdeck = "0.9.0" ab_glyph = "0.2.29" hidapi = "2.4" xcap = "0.0.13" syn = "2.0.48" darling = "0.20.3" heck = "0.4.0" stylua = "0.19.1" resvg = "0.44.0" enigo = "0.0.14" device_query = "1.1.1" macos-accessibility-client = "0.0.1" base64 = "0.21.2" rtrb = "0.3.0" envcrypt = "0.5.0" glidesort = "0.1.2" ebur128 = "0.1.8" tracing-test = "0.2.4" rstest = "0.18.2" lexical-sort = "0.3.1" splitty = "1.0.1" riff-io = "0.1.2" rusqlite = "0.30.0" sanitize-filename = "0.5.0" lru = "0.12.1" pulldown-cmark = "0.9.2" rfd = "0.12.1" opener = "0.7.1" objc2 = "0.3.0-beta.3" reqwest = { version = "0.12.9", default-features = false } rustls = { version = "0.23.20", default-features = false } [profile.release] debug = 2 [profile.release-strip] inherits = "release" # We use this profile on Linux and macOS only. To support Windows 7, we should build with Rust # version 1.77.2 on Windows. This old version strips away too much due to an implementation # error in rustc: # # "Prior to 1.79, this unintentionally disabled the generation of *.pdb files on MSVC, resulting # in the absence of symbols." # (https://doc.rust-lang.org/rustc/codegen-options/index.html#strip). # # Not stripping on Windows is okay because the PDB is a separate file anyway. We do the following # mainly for macOS. There's a long reasoning about the concrete values in CONTRIBUTING.adoc. # BTW, switching to "symbols" would reduce size even more but leads to useless stack traces when # panicking. strip = "debuginfo" split-debuginfo = "packed" [profile.dev-llvm-out-of-memory-fix] inherits = "dev" # Lately, i686 Windows builds often fail due to "LLVM ERROR: out of memory". # Lowering the amount of debug information included in the binary is supposed to fix that. debug = 1 [profile.release-llvm-out-of-memory-fix] inherits = "release" # Lately, i686 Windows builds often fail due to "LLVM ERROR: out of memory". # Lowering the amount of debug information included in the binary is supposed to fix that. debug = 1 [patch.crates-io] # TODO-low-wait # I absolutely need Flutter to be able to connect with ReaLearn based on a LAN IP address. Without this hack, Flutter # will fail to connect with a TLSV1_ALERT_DECODE_ERROR. As soon as https://github.com/briansmith/webpki/issues/54 is # closed and rustls has updated the dependency, we should remove this! #webpki = { git = "https://github.com/helgoboss/webpki.git", branch = "workaround/54-alert-decode-error-0.22.0" } # Yes! Thanks to the use of axum-server (instead of warp) we don't need this Hyper patch anymore! axum-server seems to # use lower-level Hyper features and implements a proper graceful shutdown feature on it that allows one to specify a # timeout. If not all connections are closed until that timeout, it just shuts down forcibly. That's important and # exactly what we need. We need the server shutdown happen immediately before ReaLearn is unloaded without having to # force the user to wait for open connections to finish. The following was a temporary hack to make this possible. # See https://github.com/hyperium/hyper/issues/1885, https://github.com/hyperium/hyper/issues/2386. # For a moment, I thought that I need to reintroduce this patch for gRPC, which is driven by tonic. Indeed, when using # tonic's serve_with_shutdown() feature, REAPER doesn't quit until Playtime gRPC client has disconnected :/ But # fortunately, using the tokio::select! workaround (mentioned in issue 2386) works and *also* closes the ports this # time! Turns out the same is actually true for axum, so we use select! there as well. #hyper = { git = "https://github.com/helgoboss/hyper.git", branch = "feature/realearn" } # We need to use our on "vst" crate that contains a bunch of improvements vst = { git = "https://github.com/helgoboss/vst-rs.git", branch = "feature/param-props" } #vst = { path = "../vst-rs" } # This is for temporary development with local reaper-rs. #[patch.'https://github.com/helgoboss/reaper-rs.git'] #reaper-common-types = { path = "../reaper-rs/main/common-types" } #reaper-fluent = { path = "../reaper-rs/main/fluent" } #reaper-high = { path = "../reaper-rs/main/high" } #reaper-medium = { path = "../reaper-rs/main/medium" } #reaper-macros = { path = "../reaper-rs/main/macros" } #reaper-low = { path = "../reaper-rs/main/low" } #reaper-rx = { path = "../reaper-rs/main/rx" } #rppxml-parser = { path = "../reaper-rs/main/rppxml-parser" } ## This is for temporary development with local egui-baseview. #[patch.'https://github.com/helgoboss/egui-baseview.git'] #egui-baseview = { path = "../egui-baseview" } # ## This is for temporary development with local baseview. #[patch.'https://github.com/helgoboss/baseview.git'] #baseview = { path = "../baseview" }