#bevy-plugin #bevy #dynamic #loading #game-engine #platform #data-driven

bevy_dynamic_plugin

Provides dynamic plugin loading capabilities for non-wasm platforms

27 releases

0.14.2 Sep 6, 2024
0.14.0 Jul 4, 2024
0.13.1 Mar 18, 2024
0.12.1 Nov 30, 2023
0.3.0 Nov 3, 2020

#20 in #data-driven

Download history 784/week @ 2024-07-29 626/week @ 2024-08-05 1322/week @ 2024-08-12 680/week @ 2024-08-19 801/week @ 2024-08-26 936/week @ 2024-09-02 645/week @ 2024-09-09 700/week @ 2024-09-16 922/week @ 2024-09-23 673/week @ 2024-09-30 78/week @ 2024-10-07 616/week @ 2024-10-14 549/week @ 2024-10-21 683/week @ 2024-10-28 612/week @ 2024-11-04 199/week @ 2024-11-11

2,067 downloads per month
Used in 7 crates (via bevy_internal)

MIT/Apache

150KB
2K SLoC

Bevy Dynamic Plugin

License Crates.io Downloads Docs Discord


lib.rs:

Bevy's dynamic plugin loading functionality.

This crate allows loading dynamic libraries (.dylib, .so) that export a single Plugin. For usage, see dynamically_load_plugin.

Deprecation

The current dynamic plugin system is unsound and will be removed in 0.15. You may be interested in the Alternatives listed below. If your use-case is not supported, please consider commenting on #13080 describing how you use dynamic plugins in your project.

Warning

Note that dynamic linking and loading is inherently unsafe because it allows executing foreign code. Additionally, Rust does not have a stable ABI and may produce incompatible libraries across Rust versions, or even subsequent compilations. This will not work well in scenarios such as modding, but can work if the dynamic plugins and the main app are built at the same time, such as with Downloadable Content (DLC) packs.

Alternatives

You may be interested in these safer alternatives:

Dependencies

~9–17MB
~208K SLoC