Skip to main content

Crate wolfram_export_core

Crate wolfram_export_core 

Source
Expand description

Shared inventory + manifest plumbing for the wolfram-export-* runtime crates.

Hosts the ExportEntry enum (the unified inventory entry type used by all three modes — Native, Wstp, Wxf), the inventory::collect! declaration, and the exported_library_functions_association builder that produces the WL Association[name -> LibraryFunctionLoad[...], ...] Expr used by both the WSTP-mode generate_loader! runtime path and the WXF-mode build-time manifest path.

The two transports share this one Expr-producing function — only the wire format at the boundary differs.

Re-exports§

pub use inventory;

Structs§

FunctionEntry
Serializable description of one exported function, embedded in every dylib via __wolfram_manifest_data__. Defined here so the CLI can share the type and deserialize directly with [wolfram_serialize::deserialize].

Enums§

ExportEntry
Inventory entry for one #[export]-marked function.
ExportKind
Which export transport a function uses. Mirrors the three #[export] modes and the kind string stored in FunctionEntry.

Functions§

__wolfram_manifest__
C-ABI symbol that the cargo wolfram-manifest subcommand calls via dlopen to extract the library’s exported-function manifest at build time, without running a WSTP loop.
__wolfram_manifest_data__
C-ABI symbol returning WXF-serialized Vec<FunctionEntry> for every exported function. Consumed by cargo wl build via libloading — no WL kernel needed.
caller_binding
The Set[Caller, ...] prelude binding for one export kind. Emitted (only when referenced — see with_callers) as part of the With[{...}, <|...|>] loader so the per-function Caller[LibraryFunctionLoad[...]] rules from library_function_rule resolve.
export_key
Compute the association key for an exported function: "namespace::name" when a namespace is supplied, otherwise the bare name.
exported_library_functions_association
Returns an Association containing the names and LibraryFunctionLoad calls for every #[export(..)]-marked function in this library.
library_function_load
Build Caller[LibraryFunctionLoad[lib, name, <args>, <ret>]] for one exported function.
library_function_rule
One key -> Caller[LibraryFunctionLoad[...]] association rule. key is the final association key (see export_key); name is the exported C symbol.
with_callers
Wrap a finished association in With[bindings, assoc], emitting ONLY the caller prelude bindings (NativeCaller/WSTPCaller/WXFCaller) actually referenced by the rules, followed by extra (e.g. the CLI’s libN = FileNameJoin[...] path bindings). A loader with no WXF functions, for instance, omits the WXFCaller binding entirely.