[workspace] members = [ "editor", "proc-macros", "frontend/wasm", "frontend/src-tauri", "node-graph/gapplication-io", "node-graph/gbrush", "node-graph/gcore", "node-graph/gstd", "node-graph/gmath-nodes", "node-graph/gpath-bool", "node-graph/graph-craft", "node-graph/graphene-cli", "node-graph/graster-nodes", "node-graph/gsvg-renderer", "node-graph/interpreted-executor", "node-graph/node-macro", "node-graph/preprocessor", "libraries/dyn-any", "libraries/path-bool", "libraries/bezier-rs", "libraries/math-parser", "website/other/bezier-rs-demos/wasm", ] default-members = [ "editor", "frontend/wasm", "node-graph/gbrush", "node-graph/gcore", "node-graph/gstd", "node-graph/gmath-nodes", "node-graph/gpath-bool", "node-graph/graph-craft", "node-graph/graphene-cli", "node-graph/graster-nodes", "node-graph/gsvg-renderer", "node-graph/interpreted-executor", "node-graph/node-macro", ] resolver = "2" [workspace.dependencies] # Local dependencies bezier-rs = { path = "libraries/bezier-rs", features = ["dyn-any", "serde"] } dyn-any = { path = "libraries/dyn-any", features = ["derive", "glam", "reqwest", "log-bad-types", "rc"] } preprocessor = { path = "node-graph/preprocessor"} math-parser = { path = "libraries/math-parser" } path-bool = { path = "libraries/path-bool" } graphene-application-io = { path = "node-graph/gapplication-io" } graphene-brush = { path = "node-graph/gbrush" } graphene-core = { path = "node-graph/gcore" } graphene-math-nodes = { path = "node-graph/gmath-nodes" } graphene-path-bool = { path = "node-graph/gpath-bool" } graph-craft = { path = "node-graph/graph-craft" } graphene-raster-nodes = { path = "node-graph/graster-nodes" } graphene-std = { path = "node-graph/gstd" } graphene-svg-renderer = { path = "node-graph/gsvg-renderer" } interpreted-executor = { path = "node-graph/interpreted-executor" } node-macro = { path = "node-graph/node-macro" } wgpu-executor = { path = "node-graph/wgpu-executor" } graphite-proc-macros = { path = "proc-macros" } # Workspace dependencies rustc-hash = "2.0" bytemuck = { version = "1.13", features = ["derive"] } serde = { version = "1.0", features = ["derive", "rc"] } serde_json = "1.0" serde-wasm-bindgen = "0.6" reqwest = { version = "0.12", features = ["blocking", "rustls-tls", "json"] } futures = "0.3" env_logger = "0.11" log = "0.4" bitflags = { version = "2.4", features = ["serde"] } ctor = "0.2" convert_case = "0.7" derivative = "2.2" thiserror = "2" anyhow = "1.0" proc-macro2 = { version = "1", features = [ "span-locations" ] } quote = "1.0" axum = "0.8" chrono = "0.4" ron = "0.8" fastnoise-lite = "1.1" wgpu = { version = "23", 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 when `core::cell::LazyCell` () is stabilized in Rust 1.80 and we bump our MSRV wasm-bindgen = "=0.2.100" # NOTICE: ensure this stays in sync with the `wasm-bindgen-cli` version in `website/content/volunteer/guide/project-setup/_index.md`. We pin this version because wasm-bindgen upgrades may break various things. wasm-bindgen-futures = "0.4" js-sys = "=0.3.77" web-sys = { version = "=0.3.77", features = [ "Document", "DomRect", "Element", "HtmlCanvasElement", "CanvasRenderingContext2d", "CanvasPattern", "OffscreenCanvas", "OffscreenCanvasRenderingContext2d", "TextMetrics", "Window", "IdleRequestOptions", "ImageData", "Navigator", "Gpu", "HtmlImageElement", "ImageBitmapRenderingContext", ] } winit = "0.29" url = "2.5" tokio = { version = "1.29", features = ["fs", "macros", "io-std", "rt"] } vello = { git = "https://github.com/linebender/vello.git", rev = "3275ec8" } # TODO switch back to stable when a release is made resvg = "0.44" usvg = "0.44" rand = { version = "0.9", default-features = false, features = ["std_rng"] } rand_chacha = "0.9" glam = { version = "0.29", default-features = false, features = ["serde", "scalar-math", "debug-glam-assert"] } base64 = "0.22" image = { version = "0.25", default-features = false, features = ["png", "jpeg", "bmp"] } parley = "0.5.0" skrifa = "0.32.0" pretty_assertions = "1.4.1" fern = { version = "0.7", features = ["colored"] } num_enum = "0.7" num-derive = "0.4" num-traits = { version = "0.2", default-features = false, features = ["i128"] } specta = { version = "2.0.0-rc.22", features = [ "glam", "derive", # "typescript", ] } syn = { version = "2.0", default-features = false, features = [ "full", "derive", "parsing", "printing", "visit-mut", "visit", "clone-impls", "extra-traits", "proc-macro", ] } kurbo = { version = "0.11.0", features = ["serde"] } petgraph = { version = "0.7.1", default-features = false, features = [ "graphmap", ] } half = { version = "2.4.1", default-features = false, features = ["bytemuck", "serde"] } tinyvec = { version = "1", features = ["std"] } criterion = { version = "0.5", features = ["html_reports"] } iai-callgrind = { version = "0.12.3" } ndarray = "0.16.1" [profile.dev] opt-level = 1 [profile.dev.package] graphite-editor = { opt-level = 1 } graphene-core = { opt-level = 1 } graphene-std = { 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 } specta-macros = { opt-level = 1 } syn = { opt-level = 1 } [profile.release] lto = "thin" debug = true [profile.profiling] inherits = "release" debug = true