truce-loader 0.49.21

Hot-reloadable plugin logic for truce (native ABI, dylib loading)
Documentation
[package]
name = "truce-loader"
version.workspace = true
repository.workspace = true
homepage.workspace = true
edition.workspace = true
license.workspace = true
description = "Hot-reloadable plugin logic for truce (native ABI, dylib loading)"

[dependencies]
log = "0.4"
# Already in the workspace dep graph via image / png; pulled as a
# direct dep so the file-fingerprint path uses the SIMD-accelerated
# implementation (~30× faster than a hand-rolled table-free CRC32).
crc32fast = "1.5"
truce-core = { workspace = true }
truce-params = { workspace = true }
# `truce-gui-types` is the type surface (layout / interaction /
# render / theme / widgets) the canary fingerprint inspects across
# the dylib boundary.
truce-gui-types = { workspace = true }
# `truce-plugin` carries the `PluginLogicCore` blanket and the
# `PluginLogic` / `PluginLogic64` leaf traits the macro-generated
# wrappers reference. Always required.
truce-plugin = { workspace = true }

[dependencies.libloading]
version = "0.9"
optional = true

[dependencies.parking_lot]
version = "0.12"
optional = true

# Integration tests live in the sibling `truce-loader-tests` crate.
# They need the umbrella `truce` (because `#[derive(Params)]` /
# `#[derive(State)]` expand to `::truce::params::*` / `::truce::core::*`
# paths), and `truce` already depends on us for the
# `truce::plugin!` macro's HotShell wiring. Holding those tests in
# a separate crate keeps the dev edge from forming a `truce <->
# truce-loader` cycle in cargo metadata.

[features]
default = []
shell = ["dep:libloading", "dep:parking_lot"]
hot-debug = []

[lints]
workspace = true