I know this is a huge question :) But i've seen this question asked again and again by people. Just leaving my own set of subquestions here to try to cover some important parts of it.
How to make a compiled plugin:
With Rust - WebAssembly approach
With Rust - cdylib approach
How to define true/pseudo ABI-stable APIs
How to dynamically discover and load such plugins.
How to make an interpreted plugin (JavaScript/Java/C# as an example):
How to make a binding that owns a weak reference to a value within the system. (The value will die when the script env still owns reference to it)
How to map scripting interfaces to Rust program in an ergonomic way.
How to implement testing for such plugin-systems
I know this is a huge question :) But i've seen this question asked again and again by people. Just leaving my own set of subquestions here to try to cover some important parts of it.
How to make a compiled plugin:
With Rust - WebAssembly approach
With Rust -
cdylibapproachHow to define true/pseudo ABI-stable APIs
How to dynamically discover and load such plugins.
How to make an interpreted plugin (JavaScript/Java/C# as an example):
How to make a binding that owns a weak reference to a value within the system. (The value will die when the script env still owns reference to it)
How to map scripting interfaces to Rust program in an ergonomic way.
How to implement testing for such plugin-systems