Browse by type
This crate is primarily used to load new function definitions from shared object files in an exceedingly easy way.
Key features: - Thread safe - Type safe - Works for functions of any signature - Namespace aware
The following shows how dead-simple this crate is to use:
// main.rs
use hotpatch::*;
#[patchable]
fn foo() { }
fn main() -> Result<(), Box<dyn std::error::Error>> {
foo(); // does nothing
foo.hotpatch_lib("libsomething.so")?;
foo(); // does something totally different!
foo.hotpatch_fn(|| println!("Dyamic!"))?;
foo(); // even more modification!
Ok(())
}
Don't hotpatch the function you're currently in, or any of its parents.
Because hotpatch doesn't allow multiple function definitions to be in
affect at the same time, this will cause a deadlock.
It is possible to do this with the force functions, however they are
unsafe, as in a multithreaded enironment this could cause multiple
function definitions to be in effect at once.
For more information, see the docs.
This crate is still has a long way to go before being "finished". Below are some items left to do. Submit an issue or PR to this section for feature requests!
- no_std and use features to give the widest possible functionality
- probably will need to move back to lazy_static
- methods (in progress)
- #[patchable] ||() to generate from a closure (is this even possible?)
- lower compile times
- include only necessary features for sub-dependencies
- properly document nightly feature requirements
$ claude mcp add hotpatch \
-- python -m otcore.mcp_server <graph>