Trim compiled unit export surface
This commit is contained in:
@@ -131,6 +131,15 @@ __uce_<base>[_<sanitize(suffix)>]
|
||||
| `exists` | probe only — resolves the unit, loads nothing |
|
||||
|
||||
`sanitize_symbol_suffix()` keeps `[A-Za-z0-9_]` (mirrors `ascii_safe_name`).
|
||||
Unit code is hidden by default so the linker can discard loaded helpers that the
|
||||
unit does not use. Handler macros and the explicit `EXPORT` directive are the
|
||||
only application symbols promoted to default visibility; generated request
|
||||
binding and constructor exports remain part of the runtime ABI. Debug sections
|
||||
are removed after linking while the wasm name section is retained for runtime
|
||||
traces. This keeps each side module's code and public ABI local to its actual
|
||||
handler responsibility instead of duplicating every helper from a loaded app
|
||||
library.
|
||||
|
||||
`wasm_resolve_target(unit, handler)` (`src/wasm/core.cpp`) resolves the source
|
||||
path and looks up the export's funcref slot; `exists` lets callers probe a unit
|
||||
without instantiating it.
|
||||
|
||||
Reference in New Issue
Block a user