Currently, the plugin system is just a stabby dylib. This makes it really easy and fast to develop plugins, but has some problems:
- Users need to be careful to use the injected tokio handles, otherwise they can block the core app.
- Plugins need to be compiled for all supported architectures. This is annoying and slow.
- Trust is really bad now —
dylibs can do whatever, so there's no real sandboxing, which we really should have.
- We often duplicate code — each plugin may have its own
fs implementation and so on, which means that each plugin will pull its own fs2 copy, instead of reusing the functions available in the core runtime.
I am envisioning that this will need quite a lot of work, and can perhaps be an open-source library that is actually more generic than just harmont-cli:
- Support for manifests
- Support for FS ops
- Support for
async
- Etc etc
Currently, the plugin system is just a
stabbydylib. This makes it really easy and fast to develop plugins, but has some problems:dylibs can do whatever, so there's no real sandboxing, which we really should have.fsimplementation and so on, which means that each plugin will pull its ownfs2copy, instead of reusing the functions available in the core runtime.I am envisioning that this will need quite a lot of work, and can perhaps be an open-source library that is actually more generic than just
harmont-cli:async