[workspace] members = [ "desktop", "desktop/wrapper", "desktop/embedded-resources", "desktop/bundle", "desktop/platform/linux", "desktop/platform/mac", "desktop/platform/win", "editor", "frontend/iced", "frontend/wrapper", "libraries/dyn-any", "libraries/math-parser", "node-graph/libraries/graphene-hash", "node-graph/libraries/*", "node-graph/nodes/*", "node-graph/nodes/raster/shaders", "node-graph/nodes/raster/shaders/entrypoint", "node-graph/graph-craft", "node-graph/graphene-cli", "node-graph/nodes/gstd", "node-graph/interpreted-executor", "node-graph/node-macro", "node-graph/preprocessor", "proc-macros", "tools/cargo-run", "tools/crate-hierarchy-viz", "tools/third-party-licenses", "tools/editor-message-tree", "tools/node-docs", ] default-members = [ "editor", "frontend/wrapper", "libraries/dyn-any", "libraries/math-parser", "node-graph/graph-craft", "node-graph/interpreted-executor", "node-graph/node-macro", "node-graph/preprocessor", # blocked by https://github.com/rust-lang/cargo/issues/16000 # "proc-macros", "tools/cargo-run", ] resolver = "2" [workspace.package] rust-version = "1.88" edition = "2024" authors = ["Graphite Authors "] homepage = "https://graphite.art" repository = "https://github.com/GraphiteEditor/Graphite" license = "Apache-2.0" version = "0.0.0" readme = "README.md" publish = false [workspace.dependencies] # Local dependencies dyn-any = { path = "libraries/dyn-any", features = [ "derive", "glam", "reqwest", "log-bad-types", "rc", ] } graphene-hash = { path = "node-graph/libraries/graphene-hash", features = ["derive"] } preprocessor = { path = "node-graph/preprocessor" } math-parser = { path = "libraries/math-parser" } graphene-application-io = { path = "node-graph/libraries/application-io" } core-types = { path = "node-graph/libraries/core-types" } no-std-types = { path = "node-graph/libraries/no-std-types" } raster-types = { path = "node-graph/libraries/raster-types" } vector-types = { path = "node-graph/libraries/vector-types" } graphic-types = { path = "node-graph/libraries/graphic-types" } rendering = { path = "node-graph/libraries/rendering" } brush-nodes = { path = "node-graph/nodes/brush" } blending-nodes = { path = "node-graph/nodes/blending" } graphene-core = { path = "node-graph/nodes/gcore" } graphic-nodes = { path = "node-graph/nodes/graphic" } text-nodes = { path = "node-graph/nodes/text" } transform-nodes = { path = "node-graph/nodes/transform" } vector-nodes = { path = "node-graph/nodes/vector" } repeat-nodes = { path = "node-graph/nodes/repeat" } math-nodes = { path = "node-graph/nodes/math" } path-bool-nodes = { path = "node-graph/nodes/path-bool" } graph-craft = { path = "node-graph/graph-craft" } raster-nodes = { path = "node-graph/nodes/raster" } graphene-std = { path = "node-graph/nodes/gstd" } interpreted-executor = { path = "node-graph/interpreted-executor" } node-macro = { path = "node-graph/node-macro" } wgpu-executor = { path = "node-graph/libraries/wgpu-executor" } graphite-proc-macros = { path = "proc-macros" } graphite-editor = { path = "editor" } graphene-canvas-utils = { path = "node-graph/libraries/canvas-utils" } # Workspace dependencies rustc-hash = "2.0" bytemuck = { version = "1.13", features = ["derive", "min_const_generics"] } serde = { version = "1.0", features = ["derive", "rc"] } serde_json = "1.0" serde_bytes = "0.11" serde-wasm-bindgen = "0.6" reqwest = { version = "0.13", features = ["blocking", "json"] } futures = "0.3" env_logger = "0.11" log = "0.4" bitflags = { version = "2.4", features = ["serde"] } ctor = "0.2" convert_case = "0.8" titlecase = "3.6" fancy-regex = "0.18.0" unicode-segmentation = "1.13.2" indoc = "2.0.5" derivative = "2.2" thiserror = "2" anyhow = "1.0" proc-macro2 = { version = "1", features = ["span-locations"] } quote = "1.0" chrono = "0.4" ron = "0.12" fastnoise-lite = "1.1" wgpu = { version = "29.0", features = [ # We don't have wgpu on multiple threads (yet) https://github.com/gfx-rs/wgpu/blob/trunk/CHANGELOG.md#wgpu-types-now-send-sync-on-wasm "fragile-send-sync-non-atomic-wasm", "spirv", "strict_asserts", ] } once_cell = "1.13" # Remove and replace with `core::cell::LazyCell` () wasm-bindgen = "=0.2.121" # NOTICE: keep in sync with the `wasm-bindgen-cli` version pinned across CI workflows, devcontainer, Nix, and the `cargo-run` tool. We pin this version because wasm-bindgen upgrades may break various things. wasm-bindgen-futures = "0.4" js-sys = "=0.3.98" web-sys = { version = "=0.3.98", features = [ "Document", "DomRect", "Element", "HtmlCanvasElement", "CanvasRenderingContext2d", "CanvasPattern", "OffscreenCanvas", "OffscreenCanvasRenderingContext2d", "TextMetrics", "Window", "IdleRequestOptions", "ImageData", "Navigator", "Gpu", "HtmlImageElement", "ImageBitmapRenderingContext", ] } winit = { git = "https://github.com/rust-windowing/winit.git" } keyboard-types = "0.8" url = "2.5" tokio = { version = "1.29", features = ["fs", "macros", "io-std", "rt", "rt-multi-thread"] } # Linebender ecosystem (BEGIN) kurbo = { version = "0.13", features = ["serde"] } vello = "0.9" vello_encoding = "0.9" resvg = "0.47" usvg = "0.47" parley = "0.9" skrifa = "0.42" polycool = "0.4" color = "0.3" # Linebender ecosystem (END) rand = { version = "0.9", default-features = false, features = ["std_rng"] } rand_chacha = "0.9" glam = { version = "0.32.1", default-features = false, features = [ "nostd-libm", "scalar-math", "bytemuck", ] } base64 = "0.22" image = { version = "0.25", default-features = false, features = [ "png", "jpeg", "bmp", "gif", ] } pretty_assertions = "1.4" fern = { version = "0.7", features = ["colored"] } num_enum = { version = "0.7", default-features = false } num-derive = "0.4" num-traits = { version = "0.2", default-features = false, features = ["libm"] } tsify = { version = "0.5", default-features = false, features = ["js"] } syn = { version = "2.0", default-features = false, features = [ "full", "derive", "parsing", "printing", "visit-mut", "visit", "clone-impls", "extra-traits", "proc-macro", ] } lyon_geom = "1.0" petgraph = { version = "0.7", default-features = false, features = ["graphmap"] } half = { version = "2.4", default-features = false, features = ["bytemuck"] } tinyvec = { version = "1", features = ["std"] } criterion = { version = "0.7", features = ["html_reports"] } gungraun = { version = "0.18" } ndarray = "0.16" strum = { version = "0.27", features = ["derive"] } dirs = "6.0" cef = "148" cef-dll-sys = "148" include_dir = "0.7" tracing-subscriber = { version = "0.3", features = ["env-filter"] } tracing = "0.1" rfd = "0.17" open = "5.3" spin = "0.10" clap = "4.5" spirv-std = { version = "0.10.0-alpha.1", features = ["bytemuck"] } cargo-gpu-install = { version = "0.10.0-alpha.1", default-features = false } qrcodegen = "1.8" lzma-rust2 = { version = "0.16", default-features = false, features = ["std", "encoder", "optimization", "xz"] } scraper = "0.25" linesweeper = "0.3" smallvec = "1.13.2" [workspace.lints.rust] unexpected_cfgs = { level = "allow", check-cfg = ['cfg(target_arch, values("spirv"))'] } [profile.dev] opt-level = 1 [profile.dev.package] no-std-types = { opt-level = 1 } core-types= { opt-level = 1 } interpreted-executor = { opt-level = 1 } # This is a mitigation for https://github.com/rustwasm/wasm-pack/issues/981 which is needed because the node_registry function is too large graphite-proc-macros = { opt-level = 1 } image = { opt-level = 2 } rustc-hash = { opt-level = 3 } serde_derive = { opt-level = 1 } syn = { opt-level = 1 } node-macro = { opt-level = 2 } [profile.release] lto = "thin" debug = true [patch.crates-io] # Force cargo to use only one version of the dpi crate (vendoring breaks without this) dpi = { git = "https://github.com/rust-windowing/winit.git" } rfd = { git = "https://github.com/timon-schelling/rfd.git", branch = "graphite" } # TODO: Remove this once https://github.com/PolyMeilex/rfd/pull/317 is merged and released