Crates.io | vplugin |
lib.rs | vplugin |
version | 0.3.0 |
source | src |
created_at | 2022-12-11 10:53:19.916261 |
updated_at | 2023-04-09 09:19:56.626777 |
description | A Rust framework that allows projects to create and use a plugin system. |
homepage | |
repository | https://github.com/VPlugin/VPlugin.git |
max_upload_size | |
id | 734270 |
size | 100,452 |
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.
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.
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,
which is verified to work.
Often upgrading versions may result in API breakage. This is natural; See the changelogs and adjust your codebase accordingly.
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.
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.
An example application is available here. For more information about it, see the README file.
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 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.