#plugin #plugin-system #framework #ffi #rust

yanked vplugin

A Rust framework that allows projects to create and use a plugin system

6 releases

0.3.0 Apr 9, 2023
0.2.1 Feb 23, 2023
0.2.0 Jan 21, 2023
0.1.0 Dec 11, 2022

#38 in #plugin-system


Used in vplugin-package

Apache-2.0

81KB
546 lines

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, 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.

Examples

An example application is available here. 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 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.

Dependencies

~6MB
~106K SLoC