Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plugin Loading System via LLVM integration #16

Open
orvitpng opened this issue May 10, 2023 · 1 comment
Open

Plugin Loading System via LLVM integration #16

orvitpng opened this issue May 10, 2023 · 1 comment

Comments

@orvitpng
Copy link
Contributor

It is possible to create a cross-platform dynamic library using LLVM that can be imported by Rust on various systems. LLVM, a collection of modular and reusable compiler and toolchain technologies, generates an intermediate representation (IR) code that provides a certain level of abstraction from the platform. Rust has the capability to link against these dynamically generated libraries.

However, creating such a library involves dealing with some complexities:

  1. Cross-platform development requires handling specific aspects tailored to different platforms in your codebase while maintaining general compatibility across all target platforms.

  2. Addressing ABI (Application Binary Interface) compatibility issues between languages when linking together compiled components may require extra consideration during implementation stages.

  3. Configuring build scripts are essential for ensuring correct compilation results, and it'd be frustrating with a lot of boilerplate for every plugin made.

@Cormanz Cormanz pinned this issue May 10, 2023
@Cormanz Cormanz changed the title LLVM integration for plugins Plugin Loading System via LLVM integration May 10, 2023
@Cormanz
Copy link
Owner

Cormanz commented May 10, 2023

I've pinned this, as some form of dynamic plugin system (as in, dynamically loaded, not dynamically typed) is important to SmartGPT in the future, and this proposes one way to do it. I've renamed the issue, though, to highlight that focus.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants