[package]
edition = "2024"
rust-version = "1.85"
name = "polyplug"
version = "0.1.1"
authors = ["Islam Nofl (corrm) <islamnofl.official@gmail.com>"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Universal high-performance zero-overhead cross-language plugin runtime"
homepage = "https://github.com/polyplug/polyplug"
readme = false
keywords = [
"plugin",
"runtime",
"ffi",
"cross-language",
"abi",
]
categories = [
"development-tools",
"api-bindings",
]
license = "MIT"
repository = "https://github.com/polyplug/polyplug"
resolver = "2"
[features]
default = []
[lib]
name = "polyplug"
crate-type = [
"cdylib",
"rlib",
]
path = "src/lib.rs"
[[test]]
name = "concurrency"
path = "tests/concurrency/main.rs"
[[test]]
name = "ffi_edge_cases"
path = "tests/ffi_edge_cases.rs"
[[test]]
name = "fnv1a_compat"
path = "tests/fnv1a_compat.rs"
[[test]]
name = "integration_cascade_reload"
path = "tests/integration_cascade_reload.rs"
[[test]]
name = "integration_codegen_cpp"
path = "tests/integration_codegen_cpp.rs"
[[test]]
name = "integration_compat_explicit_load"
path = "tests/integration_compat_explicit_load.rs"
[[test]]
name = "integration_context"
path = "tests/integration_context.rs"
[[test]]
name = "integration_cross_language_dependency"
path = "tests/integration_cross_language_dependency.rs"
[[test]]
name = "integration_cross_plugin"
path = "tests/integration_cross_plugin.rs"
[[test]]
name = "integration_dep_enforcement"
path = "tests/integration_dep_enforcement.rs"
[[test]]
name = "integration_discovery"
path = "tests/integration_discovery.rs"
[[test]]
name = "integration_dispatch"
path = "tests/integration_dispatch.rs"
[[test]]
name = "integration_ffi_null"
path = "tests/integration_ffi_null.rs"
[[test]]
name = "integration_ffi_robustness"
path = "tests/integration_ffi_robustness.rs"
[[test]]
name = "integration_graph"
path = "tests/integration_graph.rs"
[[test]]
name = "integration_host_contracts"
path = "tests/integration_host_contracts.rs"
[[test]]
name = "integration_host_lua"
path = "tests/integration_host_lua.rs"
[[test]]
name = "integration_invalid_utf8"
path = "tests/integration_invalid_utf8.rs"
[[test]]
name = "integration_last_error"
path = "tests/integration_last_error.rs"
[[test]]
name = "integration_load"
path = "tests/integration_load.rs"
[[test]]
name = "integration_logger"
path = "tests/integration_logger.rs"
[[test]]
name = "integration_malformed"
path = "tests/integration_malformed.rs"
[[test]]
name = "integration_panic"
path = "tests/integration_panic.rs"
[[test]]
name = "integration_reload_abort"
path = "tests/integration_reload_abort.rs"
[[test]]
name = "integration_stringview_nulls"
path = "tests/integration_stringview_nulls.rs"
[[test]]
name = "integration_version"
path = "tests/integration_version.rs"
[[test]]
name = "leak_host_abi"
path = "tests/leak_host_abi.rs"
[[test]]
name = "library_lifetime"
path = "tests/library_lifetime.rs"
[[test]]
name = "registry_edge_cases"
path = "tests/registry_edge_cases.rs"
[[test]]
name = "regression_review_runtime"
path = "tests/regression_review_runtime.rs"
[[test]]
name = "regression_review_store"
path = "tests/regression_review_store.rs"
[[test]]
name = "soak_load_unload"
path = "tests/soak_load_unload.rs"
[[test]]
name = "stress_error"
path = "tests/stress_error.rs"
[[test]]
name = "stress_memory"
path = "tests/stress_memory.rs"
[[bench]]
name = "amortization"
path = "benches/amortization.rs"
harness = false
[[bench]]
name = "call_arena"
path = "benches/call_arena.rs"
harness = false
[[bench]]
name = "cold_start"
path = "benches/cold_start.rs"
harness = false
[[bench]]
name = "contention"
path = "benches/contention.rs"
harness = false
[[bench]]
name = "contract_dispatch"
path = "benches/contract_dispatch.rs"
harness = false
[[bench]]
name = "counter_inc"
path = "benches/counter_inc.rs"
harness = false
[[bench]]
name = "ffi_find_all"
path = "benches/ffi_find_all.rs"
harness = false
[[bench]]
name = "ffi_resolve"
path = "benches/ffi_resolve.rs"
harness = false
[[bench]]
name = "guest_host_call"
path = "benches/guest_host_call.rs"
harness = false
[[bench]]
name = "payload_scaling"
path = "benches/payload_scaling.rs"
harness = false
[[bench]]
name = "registry_find"
path = "benches/registry_find.rs"
harness = false
[[bench]]
name = "registry_resolve"
path = "benches/registry_resolve.rs"
harness = false
[[bench]]
name = "revision_check"
path = "benches/revision_check.rs"
harness = false
[dependencies.crossbeam-epoch]
version = "0.9"
[dependencies.petgraph]
version = "0.8"
features = ["stable_graph"]
default-features = false
[dependencies.polyplug_abi]
version = "0.1.1"
[dependencies.polyplug_utils]
version = "0.1.1"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.thiserror]
version = "2.0"
[dependencies.toml]
version = "1.1"
[dev-dependencies.criterion]
version = "0.8"
features = ["html_reports"]
[dev-dependencies.crossbeam-epoch]
version = "0.9"
[dev-dependencies.libloading]
version = "0.9"
[dev-dependencies.polyplug_abi]
version = "0.1.1"
features = ["tracking"]
[dev-dependencies.tempfile]
version = "3.27"
[dev-dependencies.toml]
version = "1.1"
[lints.clippy]
clone_on_ref_ptr = "warn"
expect_used = "warn"
std_instead_of_core = "warn"
undocumented_unsafe_blocks = "warn"
unwrap_used = "deny"
[lints.rust]
improper_ctypes_definitions = "deny"
unsafe_op_in_unsafe_fn = "warn"