Skip to main content

Module loading

Module loading 

Source
Expand description

Extension dynamic loading.

Loads Rust extensions compiled as cdylib shared libraries (.dylib/.so/.dll).

§Extension ABI

Every extension must export a single entry point:

#[no_mangle]
pub extern "C" fn oxi_extension_create() -> *mut oxi_cli::extensions::Extension {
    Box::into_raw(Box::new(MyExtension))
}

§Directory layout

~/.oxi/extensions/
  ├── my_ext.dylib    # macOS
  ├── other_ext.so    # Linux
  └── win_ext.dll     # Windows

Extensions are discovered in ~/.oxi/extensions/ and any extra paths configured in settings.

Structs§

ValidatedExtension
Extension binary validation result.

Constants§

SHARED_LIB_EXTENSION
Shared library extension for the current platform.

Functions§

discover_extensions
Discover extension shared libraries in ~/.oxi/extensions/ and extra paths.
discover_extensions_in_dir
Discover extension shared libraries in a single directory.
load_extension
Load a single extension from a shared library.
load_extensions
Load multiple extensions from the given paths.
validate_extension
Perform pre-load validation on an extension binary.