Architecture
Third-party crates
The build of Studio and its plugins uses 67 third-party crates, 21 of them directly from our own crates. Every one is frozen as source in the tree, so nothing resolves from crates.io. "Pulls in" counts the third-party crates each brings into the build (and our own crates under crates.io names among them), and "Lines" the Rust lines of it and the third-party crates it pulls in together.
| Crate | Version | Licence | Frozen in | Who uses it | Why | Pulls in | Lines |
|---|---|---|---|---|---|---|---|
arboard | 3.7.0 | MIT OR Apache-2.0 | lib-ui/vendor | used by kinogaki-ui-shell | the text clipboard on three OSes | 8 | 301,251 |
bitflags | 1.3.2 | MIT/Apache-2.0 | lib-ui/vendor | pulled in by core-graphics, core-graphics-types | through the crates that pull it in | 0 | 1,743 |
bitflags | 2.13.2 | MIT OR Apache-2.0 | lib-ui/vendor | used by kinogaki-ui; pulled in by dispatch2, harfrust, naga, objc2-app-kit, objc2-app-kit, objc2-core-foundation, objc2-core-graphics, objc2-foundation, objc2-foundation, objc2-metal, objc2-quartz-core, wgpu, wgpu-core, wgpu-hal, wgpu-types, winit | 0 | 6,018 | |
blake3 | 1.8.7 | CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception | lib-ui/vendor | used by kinogaki-core-package, kinogaki-geometry, kinogaki-geometry-view, kinogaki-network, kinogaki-scene | collision-resistant cache keys and topology fingerprints | 5 +3 ours | 157,023 |
block2 | 0.5.1 | MIT | lib-ui/vendor | pulled in by objc2-foundation, winit | AppKit bindings for file panels and the application menu | 3 | 28,126 |
block2 | 0.6.2 | MIT | lib-ui/vendor | used by kinogaki-dialogs, kinogaki-spectre; pulled in by dispatch2, objc2-app-kit, objc2-metal, wgpu-hal | AppKit bindings for file panels and the application menu | 2 | 32,839 |
bytemuck | 1.25.2 | Zlib OR Apache-2.0 OR MIT | lib-ui/vendor | used by kinogaki-composit-wgpu, kinogaki-geometry, kinogaki-geometry-view, kinogaki-image-pipeline, kinogaki-math, kinogaki-pixel, kinogaki-ui, kinogaki-ui-wgpu, kinogaki-viewport-api, kinogaki-viewport-core, kinogaki-viewport-gpu; pulled in by font-types, harfrust, read-fonts, skrifa, wgpu, wgpu-core, wgpu-hal, wgpu-types | safe casts of plain records to bytes for GPU buffers; replacing it needs unsafe code | 5 | 68,324 |
bytemuck_derive (proc macro) | 1.12.1 | Zlib OR Apache-2.0 OR MIT | lib-ui/vendor | pulled in by bytemuck | through the crates that pull it in | 4 | 64,162 |
cc | 1.8.0 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by blake3 | through the crates that pull it in | 1 +1 ours | 12,439 |
cfg_aliases | 0.2.2 | MIT | lib-ui/vendor | pulled in by naga, wgpu, wgpu-core, wgpu-hal, winit | through the crates that pull it in | 0 | 379 |
constant_time_eq | 0.4.2 | CC0-1.0 OR MIT-0 OR Apache-2.0 | lib-ui/vendor | pulled in by blake3 | through the crates that pull it in | 0 | 1,407 |
core-foundation | 0.9.4 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by core-graphics, core-graphics-types, winit | through the crates that pull it in | 2 | 143,216 |
core-foundation-sys | 0.8.7 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by core-foundation | through the crates that pull it in | 0 | 5,610 |
core-graphics | 0.23.2 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by winit | through the crates that pull it in | 12 | 211,552 |
core-graphics-types | 0.1.3 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by core-graphics | through the crates that pull it in | 4 | 145,201 |
cpufeatures | 0.3.1 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by blake3 | through the crates that pull it in | 1 | 134,325 |
cursor-icon | 1.2.0 | MIT OR Apache-2.0 OR Zlib | lib-ui/vendor | pulled in by winit | through the crates that pull it in | 0 | 460 |
dispatch | 0.2.0 | MIT | lib-ui/vendor | pulled in by objc2-foundation | through the crates that pull it in | 0 | 1,190 |
dispatch2 | 0.3.1 | Zlib OR Apache-2.0 OR MIT | vendor | used by kinogaki-shared, kinogaki-spectre; pulled in by objc2-metal | 4 | 45,751 | |
dpi | 0.1.2 | Apache-2.0 AND MIT | lib-ui/vendor | pulled in by winit | through the crates that pull it in | 0 | 1,399 |
equivalent | 1.0.3 | Apache-2.0 OR MIT | lib-ui/vendor | pulled in by indexmap | through the crates that pull it in | 0 | 119 |
find-msvc-tools | 0.1.14 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by cc | through the crates that pull it in | 0 | 2,749 |
font-types | 0.12.6 | MIT OR Apache-2.0 | lib-ui/vendor | used by kinogaki-ui; pulled in by read-fonts | OpenType parsing, outlines, hinting and shaping | 6 | 72,025 |
foreign-types | 0.5.0 | MIT/Apache-2.0 | lib-ui/vendor | pulled in by core-graphics | through the crates that pull it in | 6 | 62,551 |
foreign-types-macros (proc macro) | 0.2.4 | MIT/Apache-2.0 | lib-ui/vendor | pulled in by foreign-types | through the crates that pull it in | 4 | 62,209 |
foreign-types-shared | 0.3.1 | MIT/Apache-2.0 | lib-ui/vendor | pulled in by foreign-types | through the crates that pull it in | 0 | 92 |
harfrust | 0.12.0 | MIT | lib-ui/vendor | used by kinogaki-ui | OpenType parsing, outlines, hinting and shaping | 9 +2 ours | 215,748 |
hashbrown | 0.17.1 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by indexmap, naga, naga-types, wgpu, wgpu-core, wgpu-hal | kept frozen: map APIs too risky to rewrite | 0 +1 ours | 23,720 |
indexmap | 2.14.2 | Apache-2.0 OR MIT | lib-ui/vendor | pulled in by naga, naga-types, wgpu-core | kept frozen: map APIs too risky to rewrite | 2 +1 ours | 37,515 |
libc | 0.2.191 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by core-foundation, core-graphics, core-graphics-types, cpufeatures | through the crates that pull it in | 0 | 133,736 |
libloading | 0.8.9 | ISC | lib-ui/vendor | pulled in by wgpu-hal | through the crates that pull it in | 0 +1 ours | 2,388 |
log | 0.4.34 | MIT OR Apache-2.0 | lib-ui/vendor | used by kinogaki-editor, kinogaki-image-pipeline, kinogaki-scene, kinogaki-shared, kinogaki-ui, kinogaki-ui-shell, kinogaki-ui-wgpu; pulled in by naga, wgpu, wgpu-core, wgpu-hal, wgpu-types | 0 | 5,754 | |
naga | 30.0.1 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by wgpu-core, wgpu-hal, wgpu-naga-bridge | GPU abstraction over Metal, Vulkan and DX12; shader translation | 13 +10 ours | 234,298 |
naga-types | 30.0.1 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by naga, wgpu-core, wgpu-hal, wgpu-types | through the crates that pull it in | 9 +2 ours | 103,112 |
objc-sys | 0.3.5 | MIT | lib-ui/vendor | pulled in by objc2 | through the crates that pull it in | 0 | 1,820 |
objc2 | 0.5.3 | MIT | lib-ui/vendor | pulled in by block2, objc2-app-kit, objc2-foundation, winit | AppKit bindings for file panels and the application menu | 2 | 25,882 |
objc2 | 0.6.5 | MIT | lib-ui/vendor | used by kinogaki-dialogs, kinogaki-editor, kinogaki-spectre, kinogaki-ui-shell; pulled in by arboard, block2, dispatch2, objc2-app-kit, objc2-core-foundation, objc2-core-graphics, objc2-foundation, objc2-metal, objc2-quartz-core, raw-window-metal, wgpu-hal | AppKit bindings for file panels and the application menu | 1 | 29,698 |
objc2-app-kit | 0.2.2 | MIT | lib-ui/vendor | pulled in by winit | AppKit bindings for file panels and the application menu | 7 | 177,802 |
objc2-app-kit | 0.3.2 | Zlib OR Apache-2.0 OR MIT | lib-ui/vendor | used by kinogaki-dialogs, kinogaki-editor, kinogaki-ui-shell; pulled in by arboard | AppKit bindings for file panels and the application menu | 7 | 297,134 |
objc2-core-foundation | 0.3.2 | Zlib OR Apache-2.0 OR MIT | lib-ui/vendor | used by kinogaki-shared, kinogaki-ui-shell; pulled in by objc2-core-graphics, objc2-foundation, objc2-metal, objc2-quartz-core, raw-window-metal, wgpu-hal | 3 | 76,363 | |
objc2-core-graphics | 0.3.2 | Zlib OR Apache-2.0 OR MIT | lib-ui/vendor | used by kinogaki-shared; pulled in by objc2-app-kit, objc2-quartz-core, wgpu-hal | 4 | 99,029 | |
objc2-encode | 4.1.0 | MIT | lib-ui/vendor | pulled in by objc2, objc2 | through the crates that pull it in | 0 | 2,437 |
objc2-foundation | 0.2.2 | MIT | lib-ui/vendor | pulled in by objc2-app-kit, winit | AppKit bindings for file panels and the application menu | 6 | 94,826 |
objc2-foundation | 0.3.2 | MIT | lib-ui/vendor | used by kinogaki-dialogs, kinogaki-shared, kinogaki-spectre, kinogaki-ui-shell; pulled in by arboard, objc2-app-kit, objc2-metal, objc2-quartz-core, raw-window-metal, wgpu-hal | AppKit bindings for file panels and the application menu | 4 | 154,803 |
objc2-metal | 0.3.2 | Zlib OR Apache-2.0 OR MIT | lib-ui/vendor | used by kinogaki-shared, kinogaki-spectre; pulled in by objc2-quartz-core, wgpu-hal | Metal is an Objective-C API; hand-written bindings would be high-risk FFI. The versions wgpu-hal already locks | 7 | 205,918 |
objc2-quartz-core | 0.3.2 | Zlib OR Apache-2.0 OR MIT | lib-ui/vendor | pulled in by raw-window-metal, wgpu-hal | through the crates that pull it in | 9 | 235,693 |
pin-project-lite | 0.2.17 | Apache-2.0 OR MIT | lib-ui/vendor | pulled in by tracing | through the crates that pull it in | 0 | 1,770 |
proc-macro2 | 1.0.107 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by bytemuck_derive, foreign-types-macros, quote, syn, thiserror-impl | through the crates that pull it in | 1 | 7,272 |
quote | 1.0.47 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by bytemuck_derive, foreign-types-macros, syn, thiserror-impl | through the crates that pull it in | 2 | 10,006 |
raw-window-handle | 0.6.2 | MIT OR Apache-2.0 OR Zlib | lib-ui/vendor | used by kinogaki-ui-shell, kinogaki-ui-wgpu; pulled in by wgpu, wgpu-core, wgpu-hal, wgpu-types, winit | windows, input and event loops on three OSes | 0 | 1,984 |
raw-window-metal | 1.1.0 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by wgpu-hal | through the crates that pull it in | 10 | 236,424 |
read-fonts | 0.41.0 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by harfrust, skrifa | OpenType parsing, outlines, hinting and shaping | 7 +1 ours | 175,401 |
skrifa | 0.44.0 | MIT OR Apache-2.0 | lib-ui/vendor | used by kinogaki-ui | OpenType parsing, outlines, hinting and shaping | 8 +1 ours | 213,382 |
smol_str | 0.2.2 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by winit | through the crates that pull it in | 0 | 867 |
syn | 3.0.9 | MIT OR Apache-2.0 | lib-ui/vendor | used by kinogaki-shared; pulled in by bytemuck_derive, foreign-types-macros, thiserror-impl | 3 | 61,793 | |
thiserror | 2.0.21 | MIT OR Apache-2.0 | lib-ui/vendor | used by kinogaki-document, kinogaki-lsystem, kinogaki-network, kinogaki-shared, kinogaki-ui-wgpu; pulled in by naga, naga-types, wgpu-core, wgpu-hal | error derives; wgpu and naga use it anyway | 5 | 64,955 |
thiserror-impl (proc macro) | 2.0.21 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by thiserror | through the crates that pull it in | 4 | 64,261 |
tracing | 0.1.44 | MIT | lib-ui/vendor | pulled in by winit | through the crates that pull it in | 2 | 15,082 |
tracing-core | 0.1.36 | MIT | lib-ui/vendor | pulled in by tracing | through the crates that pull it in | 0 | 6,229 |
unicode-ident | 1.0.27 | (MIT OR Apache-2.0) AND Unicode-3.0 | lib-ui/vendor | pulled in by naga, proc-macro2, syn | through the crates that pull it in | 0 | 976 |
wgpu | 30.0.1 | MIT OR Apache-2.0 | lib-ui/vendor | used by kinogaki-color-wgpu, kinogaki-composit-wgpu, kinogaki-editor, kinogaki-render-api, kinogaki-shared, kinogaki-ui-shell, kinogaki-ui-wgpu, kinogaki-viewport-gpu | GPU abstraction over Metal, Vulkan and DX12; shader translation | 33 +16 ours | 635,906 |
wgpu-core | 30.0.1 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by wgpu | GPU abstraction over Metal, Vulkan and DX12; shader translation | 32 +16 ours | 595,959 |
wgpu-core-deps-apple | 30.0.1 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by wgpu-core | through the crates that pull it in | 31 +14 ours | 544,256 |
wgpu-hal | 30.0.1 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by wgpu, wgpu-core, wgpu-core-deps-apple | GPU abstraction over Metal, Vulkan and DX12; shader translation | 30 +14 ours | 544,253 |
wgpu-naga-bridge | 30.0.1 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by wgpu-core, wgpu-hal | through the crates that pull it in | 18 +11 ours | 258,718 |
wgpu-types | 30.0.1 | MIT OR Apache-2.0 | lib-ui/vendor | pulled in by wgpu, wgpu-core, wgpu-hal, wgpu-naga-bridge | GPU abstraction over Metal, Vulkan and DX12; shader translation | 15 +3 ours | 138,978 |
winit | 0.30.13 | Apache-2.0 | lib-ui/vendor | used by kinogaki-ui-shell | windows, input and event loops on three OSes | 29 | 467,041 |
Ours under crates.io names
Small crates that the frozen crates call, written in libs/lib-misc-utils under their crates.io names (each version the upstream one plus +kinogaki), so those crates build unedited.
| Crate | Version | Licence | Used by | Lines |
|---|---|---|---|---|
arrayvec | 0.7.8+kinogaki | MIT OR Apache-2.0 | blake3, naga, wgpu, wgpu-core, wgpu-hal | 839 |
bit-set | 0.10.0+kinogaki | MIT OR Apache-2.0 | naga, wgpu-core | 265 |
bit-vec | 0.9.1+kinogaki | MIT OR Apache-2.0 | wgpu-core | 525 |
cfg-if | 1.0.5+kinogaki | MIT OR Apache-2.0 | blake3, libloading, naga, wgpu, wgpu-hal | 37 |
codespan-reporting | 0.13.1+kinogaki | MIT OR Apache-2.0 | naga | 623 |
document-features | 0.2.12+kinogaki | MIT OR Apache-2.0 | wgpu, wgpu-core | 14 |
foldhash | 0.2.0+kinogaki | MIT OR Apache-2.0 | hashbrown | 144 |
half | 2.7.1+kinogaki | MIT OR Apache-2.0 | naga | 1,039 |
libm | 0.2.16+kinogaki | MIT OR Apache-2.0 | naga | 61 |
num-traits | 0.2.19+kinogaki | MIT OR Apache-2.0 | naga | 1,179 |
once_cell | 1.21.4+kinogaki | MIT OR Apache-2.0 | naga, read-fonts, wgpu-core | 158 |
parking_lot | 0.12.5+kinogaki | MIT OR Apache-2.0 | wgpu, wgpu-core, wgpu-hal | 723 |
profiling | 1.0.18+kinogaki | MIT OR Apache-2.0 | wgpu, wgpu-core, wgpu-hal | 25 |
rustc-hash | 1.1.0+kinogaki | MIT OR Apache-2.0 | naga, naga-types, wgpu-core | 94 |
shlex | 2.0.1+kinogaki | MIT OR Apache-2.0 | cc | 99 |
smallvec | 1.16.3+kinogaki | MIT OR Apache-2.0 | harfrust, wgpu, wgpu-core, wgpu-hal | 719 |
static_assertions | 1.1.0+kinogaki | MIT OR Apache-2.0 | wgpu, wgpu-hal, wgpu-types | 39 |
Only in a library's or the SDK's own workspace
Built alone, these workspaces resolve further crates the build of Studio leaves out: the SDK, cloned by itself, takes its dependencies from crates.io at exact versions (inside the tree its patch table gives it the frozen copies), and lib-svg's tests compare with resvg.
libs/lib-svg: adler2 2.0.1, arrayref 0.3.9, autocfg 1.5.1, base64 0.22.1, crc32fast 1.5.2, data-url 0.3.2, euclid 0.22.14, fdeflate 0.3.7, flate2 1.1.10, float-cmp 0.9.0, font-types 0.12.7, imagesize 0.13.0, jpeg-decoder 0.3.2, kurbo 0.11.3, miniz_oxide 0.8.9, miniz_oxide 0.9.1, pico-args 0.5.0, png 0.17.16, resvg 0.45.1, rgb 0.8.53, roxmltree 0.20.0, simd-adler32 0.3.10, simplecss 0.2.2, siphasher 1.0.4, strict-num 0.1.1, svgtypes 0.15.3, tiny-skia 0.11.4, tiny-skia-path 0.11.4, usvg 0.45.1, xmlwriter 0.1.0, zlib-rs 0.6.8
sdk: allocator-api2 0.2.21, android_system_properties 0.1.6, ash 0.38.0+1.3.281, autocfg 1.5.1, bumpalo 3.20.3, cc 1.10.0, crunchy 0.2.4, dlib 0.5.3, find-msvc-tools 0.1.15, futures-core 0.3.34, futures-task 0.3.34, futures-util 0.3.34, gl_generator 0.14.0, glow 0.17.0, glutin_wgl_sys 0.6.1, gpu-allocator 0.28.0, hashbrown 0.16.1, jni-sys 0.3.1, jni-sys 0.4.1, jni-sys-macros 0.4.1, js-sys 0.3.106, khronos-egl 6.0.0, khronos_api 3.1.0, litrs 1.0.1, lock_api 0.4.14, ndk-sys 0.6.0+11769913, objc2-io-surface 0.3.2, ordered-float 5.5.1, parking_lot_core 0.9.12, pkg-config 0.3.34, portable-atomic 1.15.0, portable-atomic-util 0.2.8, presser 0.3.1, range-alloc 0.1.5, redox_syscall 0.5.18, renderdoc-sys 1.1.0, rustversion 1.0.23, scopeguard 1.2.0, serde 1.0.229, serde_core 1.0.229, serde_derive 1.0.229, slab 0.4.12, slotmap 1.1.1, spirv 0.4.0+sdk-1.4.341.0, syn 2.0.119, termcolor 1.4.1, tokio 1.54.1, unicode-width 0.2.3, version_check 0.9.5, wasm-bindgen 0.2.129, wasm-bindgen-futures 0.4.79, wasm-bindgen-macro 0.2.129, wasm-bindgen-macro-support 0.2.129, wasm-bindgen-shared 0.2.129, wayland-sys 0.31.11, web-sys 0.3.106, wgpu-core-deps-emscripten 30.0.1, wgpu-core-deps-windows-linux-android 30.0.1, winapi-util 0.1.11, windows 0.62.2, windows-collections 0.3.2, windows-core 0.62.2, windows-future 0.3.2, windows-implement 0.60.2, windows-interface 0.59.3, windows-link 0.2.1, windows-numerics 0.3.1, windows-result 0.4.1, windows-strings 0.5.1, windows-sys 0.61.2, windows-threading 0.2.1, xml-rs 0.8.29, zerocopy 0.8.63, zerocopy-derive 0.8.63
