Core and the app · crate
kinogaki-shared
The crates Studio and its plugins share, built once as a Rust dylib.
- Repository
- Core and the app (kinogaki/studio-core)
- Folder
studio/core/shared- Source
- 1 file, 55 lines
- Tests
- 0 files, 0 lines
Also 1 other Rust file, 7 lines.
What it is
The crates Studio and its plugins share, built once as a Rust dylib.
Studio links its standard library dynamically (-C prefer-dynamic, .cargo/config.toml) and links this library, so the process holds one copy of the standard library, the SDK (kinogaki-studio-api), its standard geometry values (kinogaki-geometry), its edit contracts (kinogaki-edit) and its UI layer (kinogaki-studio-ui-api, which plugins' contexts draw through), the render interface (kinogaki-render-api), the viewport packet contract (kinogaki-viewport-api) and wgpu, and each plugin links the same copies: values cross as plain Rust types, statics are shared and TypeIds agree. Studio's crates name these crates directly as usual; the compiler takes them from here because this library holds them.
Plugins are built against exactly this build (the kit), and Studio refuses any built against another: BUILD names this build, each plugin records it when it is compiled (link!), and Studio's loader compares the plugin's record with the BUILD of the library it runs with before it calls anything in the plugin. Nothing at link time notices a plugin compiled against another build: it loads, then misbehaves (a changed layout read with the old one).
Depends on
| Crate | Repository | As | What it is |
|---|---|---|---|
kinogaki-build-id | Core and the app | normal | A fresh id each time the crate naming it is compiled. |
kinogaki-edit | SDK | normal | Kinogaki Studio's edit contracts: what core and the kernels agree on when a value is selected and changed. |
kinogaki-geometry | SDK | normal | Kinogaki Studio's standard geometry values. |
kinogaki-render-api | SDK | normal | Kinogaki's render interface: what a host (Studio) sends a render engine and what comes back, with no GPU or OS API. |
kinogaki-studio-api | SDK | normal | Kinogaki Studio's headless plugin API. |
kinogaki-studio-ui-api | SDK | normal | Kinogaki Studio's UI layer for plugins. |
kinogaki-viewport-api | SDK | normal | Kinogaki's viewport packet contract: what a data type hands Studio's viewport to draw, with no GPU or UI API. |
Third-party
| Crate | Version | Licence | Frozen in | As | Also used by |
|---|---|---|---|---|---|
dispatch2 | 0.3.1 | Zlib OR Apache-2.0 OR MIT | vendor | normal | kinogaki-spectre |
log | 0.4.34 | MIT OR Apache-2.0 | lib-ui/vendor | normal | kinogaki-editor, kinogaki-image-pipeline, kinogaki-scene, kinogaki-ui, kinogaki-ui-shell, kinogaki-ui-wgpu |
objc2-core-foundation | 0.3.2 | Zlib OR Apache-2.0 OR MIT | lib-ui/vendor | normal | kinogaki-ui-shell |
objc2-core-graphics | 0.3.2 | Zlib OR Apache-2.0 OR MIT | lib-ui/vendor | normal | none |
objc2-foundation | 0.3.2 | MIT | lib-ui/vendor | normal | kinogaki-dialogs, kinogaki-spectre, kinogaki-ui-shell |
objc2-metal | 0.3.2 | Zlib OR Apache-2.0 OR MIT | lib-ui/vendor | normal | kinogaki-spectre |
syn | 3.0.9 | MIT OR Apache-2.0 | lib-ui/vendor | build | none |
thiserror | 2.0.21 | MIT OR Apache-2.0 | lib-ui/vendor | normal | kinogaki-document, kinogaki-lsystem, kinogaki-network, kinogaki-ui-wgpu |
wgpu | 30.0.1 | MIT OR Apache-2.0 | lib-ui/vendor | normal | kinogaki-color-wgpu, kinogaki-composit-wgpu, kinogaki-editor, kinogaki-render-api, kinogaki-ui-shell, kinogaki-ui-wgpu, kinogaki-viewport-gpu |
Used by
| Crate | Repository | As | What it is |
|---|---|---|---|
kinogaki-plugin-comp | Comp | normal | Comp as a Studio plugin library (nodes/comp.dylib). |
kinogaki-plugin-exr | OpenEXR | normal | OpenEXR as a Studio plugin library (formats/exr.dylib). |
kinogaki-plugin-fbx | FBX | normal | FBX as a Studio plugin library (formats/fbx.dylib). |
kinogaki-plugin-gltf | glTF | normal | glTF and GLB as a Studio plugin library (formats/gltf.dylib). |
kinogaki-plugin-host | Core and the app | normal | Studio's plugin loader. |
kinogaki-plugin-jpeg | JPEG | normal | JPEG as a Studio plugin library (formats/jpeg.dylib). |
kinogaki-plugin-layout | Layout | normal | The Layout context as a Studio plugin library (nodes/layout.dylib). |
kinogaki-plugin-materialx | MaterialX | normal | MaterialX documents as a Studio plugin library (formats/materialx.dylib). |
kinogaki-plugin-mesh | Mesh | normal | The Mesh plugin as a Studio plugin library (nodes/mesh.dylib). |
kinogaki-plugin-mesh-kernel | Mesh | normal | The Mesh kernel as a Studio plugin library (kernels/mesh.dylib). |
kinogaki-plugin-obj | OBJ | normal | Wavefront OBJ as a Studio plugin library (formats/obj.dylib). |
kinogaki-plugin-pixel | Pixel | normal | Pixel as a Studio plugin library (renders/pixel.dylib). |
kinogaki-plugin-png | PNG | normal | PNG as a Studio plugin library (formats/png.dylib). |
kinogaki-plugin-spectre | Spectre | normal | Spectre as a Studio plugin library (renders/spectre.dylib). |
kinogaki-plugin-usd | USD | normal | USD as a Studio plugin library (formats/usd.dylib). |
kinogaki-studio | Core and the app | normal | Kinogaki Studio: the editor in a window, after the plugins load. |
Modules
One file: the crate root.
Public types and traits
At the crate root
Macros link
Re-exported from other crates
From kinogaki_edit (the crate)
From kinogaki_geometry (the crate)
From kinogaki_render_api (the crate)
From kinogaki_studio_api (the crate)
From kinogaki_viewport_api (the crate)
From studio_ui_api (the crate)
From wgpu (the crate)
