VPlugin 🔌: A plugin framework for Rust.


Website | Issues | Documentation

VPlugin is a Rust framework to develop and use plugins on applications and libraries,
including but not limited to games, text editors, command line and graphical applications.


## But why? I found myself ever since starting out programming struggling to find a proper solution to creating a plugin API without copying other's code. Eventually, I decided to write my own library, which ended up becoming a fully-featured set of tools that would allow me to easily write a plugin system from scratch without having to do the same thing 1000 times. Generally, VPlugin aims to become a low-level block in your application, where you are going to build everything else on top of. VPlugin will **not only** create the plugin system for you; It will do the dirty under-the-hood work and give you a high-level abstraction over it. ## Picking Version The `master` tree is used for the entire development, so avoid using it unless you are willing to suddenly have your project not compiling for any reason. While no "stable release" has been done yet (VPlugin can generally be considered in an alpha state) you are advised to use the latest [crates.io release](https://crates.io/crates/vplugin), which is verified to work. > Often upgrading versions may result in API breakage. This is natural; See the changelogs and adjust your codebase accordingly. ## Features - 🚀 Blazingly Fast (Thanks to Rust!) - 🔥 Easy to use, without compromises on flexibility. - 💻 Cross-platform and portable, will work on most major platforms. - ❤️‍🔥 Modern: Forget nasty workarounds and strange errors in your code. ## MSRV VPlugin officially supports only the latest **stable** version of the Rust language. You may be able to get it to compile on a few older versions, but do not be confused if your computer blows up or you get a ton of error messages on the console. ## Repo Contents This repository contains the library that implements VPlugin, as well as the Plugin Format Specification and some other related stuff. For other related projects, see the [GitHub Organization](https://github.com/VPlugin). ## Examples An example application is available [here](https://github.com/VPlugin/vplugin-example). For more information about it, see the README file. ## Supported Languages Generally, most compiled languages will be supported, as long as they can build as a shared object file (shared library). This means that while VPlugin itself is Rust-only for now, it's perfectly possible to write a plugin usable by VPlugin in C, C++ or even Vala. See [the Plugin Specification](./spec/PluginFormat.md) for more details. Key requirement here is a way to export your types to those languages, which requires giving off safety guarantees and a lot of expertise.