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

Evaluate best layer of native code for plug-in infrastructure #147

Open
traeok opened this issue Feb 21, 2025 · 0 comments
Open

Evaluate best layer of native code for plug-in infrastructure #147

traeok opened this issue Feb 21, 2025 · 0 comments
Labels
enhancement New feature or request research

Comments

@traeok
Copy link
Member

traeok commented Feb 21, 2025

Is your feature or enhancement request related to a problem or limitation? Please describe

When implementing plug-ins, we should decide whether to implement support in the C++ or the Go layer.

Describe your enhancement idea

There are a few pros and cons to both, and while they aren't all realized, I'll list the ones that come to mind:

  • C++ plug-ins
    • Pros
      • Implement exception handling to prevent plug-ins from affecting rest of server
      • Plug-ins are usable through zowex
      • Commands available to extract plug-in info
    • Cons
      • Limited to C++ features and DLLs (.so) - no built-in JSON parsing, not many utilities
  • Golang plug-ins
    • Pros
      • Existing Go packages available, such as HashiCorp's go-plugin
      • More built-in flexibility through Go helper functions
    • Cons
      • Exception handling cannot be easily implemented in Go for faulty plug-ins
      • Plug-ins can't really be used through zowex

Personally, I'm leaning towards C++ for flexibility and use of plug-ins through zowex, but I think this is worth exploring more before settling on that layer 😋

Provide any additional context

Part of plug-in support milestone

@traeok traeok added enhancement New feature or request research labels Feb 21, 2025
@traeok traeok added this to the Plug-in support milestone Feb 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request research
Projects
None yet
Development

No branches or pull requests

1 participant