Class PanamaWasmRuntime
java.lang.Object
ai.tegmentum.wasmtime4j.panama.PanamaWasmRuntime
- All Implemented Interfaces:
ai.tegmentum.wasmtime4j.WasmRuntime,Closeable,AutoCloseable
Panama Foreign Function Interface implementation of the WasmRuntime interface.
This class provides WebAssembly runtime functionality using Java 23+ Panama Foreign Function API to communicate with the native Wasmtime library. It manages the lifecycle of native resources using Panama's Arena-based memory management.
This implementation is designed for Java 23+ compatibility and uses Panama FFI to interact with the shared wasmtime4j-native Rust library.
Key features:
- Native memory management through Panama Arena API
- Type-safe foreign function calls
- Automatic resource cleanup with try-with-resources
- Comprehensive error handling and validation
- Integration with public wasmtime4j API
- Since:
- 1.0.0
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddComponentModelToLinker(ai.tegmentum.wasmtime4j.Linker<ai.tegmentum.wasmtime4j.wasi.WasiContext> linker) voidaddWasiPreview2ToLinker(ai.tegmentum.wasmtime4j.Linker<ai.tegmentum.wasmtime4j.wasi.WasiContext> linker, ai.tegmentum.wasmtime4j.wasi.WasiContext context) voidaddWasiToLinker(ai.tegmentum.wasmtime4j.Linker<ai.tegmentum.wasmtime4j.wasi.WasiContext> linker, ai.tegmentum.wasmtime4j.wasi.WasiContext context) voidclose()ai.tegmentum.wasmtime4j.ModulecompileModule(ai.tegmentum.wasmtime4j.Engine engine, byte[] wasmBytes) ai.tegmentum.wasmtime4j.ModulecompileModuleWat(ai.tegmentum.wasmtime4j.Engine engine, String watText) ai.tegmentum.wasmtime4j.component.ComponentEngineai.tegmentum.wasmtime4j.component.ComponentEnginecreateComponentEngine(ai.tegmentum.wasmtime4j.component.ComponentEngineConfig config) <T> ai.tegmentum.wasmtime4j.component.ComponentLinker<T> createComponentLinker(ai.tegmentum.wasmtime4j.Engine engine) ai.tegmentum.wasmtime4j.Engineai.tegmentum.wasmtime4j.EnginecreateEngine(ai.tegmentum.wasmtime4j.config.EngineConfig config) ai.tegmentum.wasmtime4j.ExnRefcreateExnRef(ai.tegmentum.wasmtime4j.Store store, ai.tegmentum.wasmtime4j.memory.Tag tag, ai.tegmentum.wasmtime4j.WasmValue[] fields) <T> ai.tegmentum.wasmtime4j.Linker<T> createLinker(ai.tegmentum.wasmtime4j.Engine engine) <T> ai.tegmentum.wasmtime4j.Linker<T> createLinker(ai.tegmentum.wasmtime4j.Engine engine, boolean allowUnknownExports, boolean allowShadowing) ai.tegmentum.wasmtime4j.wasi.nn.NnContextai.tegmentum.wasmtime4j.StorecreateStore(ai.tegmentum.wasmtime4j.Engine engine) ai.tegmentum.wasmtime4j.StorecreateStore(ai.tegmentum.wasmtime4j.Engine engine, long fuelLimit, long memoryLimitBytes, long executionTimeoutSeconds) ai.tegmentum.wasmtime4j.StorecreateStore(ai.tegmentum.wasmtime4j.Engine engine, ai.tegmentum.wasmtime4j.config.StoreLimits limits) ai.tegmentum.wasmtime4j.memory.TagcreateTag(ai.tegmentum.wasmtime4j.Store store, ai.tegmentum.wasmtime4j.type.TagType tagType) ai.tegmentum.wasmtime4j.wasi.WasiContextai.tegmentum.wasmtime4j.wasi.WasiLinkercreateWasiLinker(ai.tegmentum.wasmtime4j.Engine engine) ai.tegmentum.wasmtime4j.wasi.WasiLinkercreateWasiLinker(ai.tegmentum.wasmtime4j.Engine engine, ai.tegmentum.wasmtime4j.wasi.WasiConfig config) ai.tegmentum.wasmtime4j.ModuledeserializeModule(ai.tegmentum.wasmtime4j.Engine engine, byte[] serializedBytes) ai.tegmentum.wasmtime4j.ModuledeserializeModuleFile(ai.tegmentum.wasmtime4j.Engine engine, Path path) ai.tegmentum.wasmtime4j.ModuledeserializeModuleOpenFile(ai.tegmentum.wasmtime4j.Engine engine, int fd) ai.tegmentum.wasmtime4j.ModuledeserializeModuleRaw(ai.tegmentum.wasmtime4j.Engine engine, byte[] bytes) ai.tegmentum.wasmtime4j.ExnRefexnRefFromRaw(ai.tegmentum.wasmtime4j.Store store, long raw) longexternRefFromRaw(ai.tegmentum.wasmtime4j.Store store, long raw) longexternRefToRaw(ai.tegmentum.wasmtime4j.Store store, long externRefId) ai.tegmentum.wasmtime4j.WasmFunctionfuncFromRawRef(ai.tegmentum.wasmtime4j.Store store, long raw) ai.tegmentum.wasmtime4j.gc.GcRuntimeai.tegmentum.wasmtime4j.RuntimeInfoai.tegmentum.wasmtime4j.Instanceinstantiate(ai.tegmentum.wasmtime4j.Module module) ai.tegmentum.wasmtime4j.Instanceinstantiate(ai.tegmentum.wasmtime4j.Module module, ai.tegmentum.wasmtime4j.validation.ImportMap imports) booleanbooleanisValid()ai.tegmentum.wasmtime4j.ModulemoduleFromTrustedFile(ai.tegmentum.wasmtime4j.Engine engine, Path path) booleanvoidai.tegmentum.wasmtime4j.StoretryCreateStore(ai.tegmentum.wasmtime4j.Engine engine) booleanvalidateModule(byte[] wasmBytes) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ai.tegmentum.wasmtime4j.WasmRuntime
addWasiToLinkerAsync
-
Constructor Details
-
PanamaWasmRuntime
public PanamaWasmRuntime() throws ai.tegmentum.wasmtime4j.exception.WasmExceptionCreates a new Panama WebAssembly runtime.- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException- if the native library cannot be loaded or runtime cannot be initialized
-
-
Method Details
-
createEngine
public ai.tegmentum.wasmtime4j.Engine createEngine() throws ai.tegmentum.wasmtime4j.exception.WasmException- Specified by:
createEnginein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createEngine
public ai.tegmentum.wasmtime4j.Engine createEngine(ai.tegmentum.wasmtime4j.config.EngineConfig config) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createEnginein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
compileModule
public ai.tegmentum.wasmtime4j.Module compileModule(ai.tegmentum.wasmtime4j.Engine engine, byte[] wasmBytes) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
compileModulein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
compileModuleWat
public ai.tegmentum.wasmtime4j.Module compileModuleWat(ai.tegmentum.wasmtime4j.Engine engine, String watText) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
compileModuleWatin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createStore
public ai.tegmentum.wasmtime4j.Store createStore(ai.tegmentum.wasmtime4j.Engine engine) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createStorein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createStore
public ai.tegmentum.wasmtime4j.Store createStore(ai.tegmentum.wasmtime4j.Engine engine, long fuelLimit, long memoryLimitBytes, long executionTimeoutSeconds) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createStorein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createStore
public ai.tegmentum.wasmtime4j.Store createStore(ai.tegmentum.wasmtime4j.Engine engine, ai.tegmentum.wasmtime4j.config.StoreLimits limits) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createStorein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
tryCreateStore
public ai.tegmentum.wasmtime4j.Store tryCreateStore(ai.tegmentum.wasmtime4j.Engine engine) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
tryCreateStorein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createTag
public ai.tegmentum.wasmtime4j.memory.Tag createTag(ai.tegmentum.wasmtime4j.Store store, ai.tegmentum.wasmtime4j.type.TagType tagType) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createTagin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createLinker
public <T> ai.tegmentum.wasmtime4j.Linker<T> createLinker(ai.tegmentum.wasmtime4j.Engine engine) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createLinkerin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createLinker
public <T> ai.tegmentum.wasmtime4j.Linker<T> createLinker(ai.tegmentum.wasmtime4j.Engine engine, boolean allowUnknownExports, boolean allowShadowing) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createLinkerin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createComponentLinker
public <T> ai.tegmentum.wasmtime4j.component.ComponentLinker<T> createComponentLinker(ai.tegmentum.wasmtime4j.Engine engine) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createComponentLinkerin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
instantiate
public ai.tegmentum.wasmtime4j.Instance instantiate(ai.tegmentum.wasmtime4j.Module module) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
instantiatein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
instantiate
public ai.tegmentum.wasmtime4j.Instance instantiate(ai.tegmentum.wasmtime4j.Module module, ai.tegmentum.wasmtime4j.validation.ImportMap imports) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
instantiatein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createComponentEngine
public ai.tegmentum.wasmtime4j.component.ComponentEngine createComponentEngine() throws ai.tegmentum.wasmtime4j.exception.WasmException- Specified by:
createComponentEnginein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createComponentEngine
public ai.tegmentum.wasmtime4j.component.ComponentEngine createComponentEngine(ai.tegmentum.wasmtime4j.component.ComponentEngineConfig config) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createComponentEnginein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
getRuntimeInfo
public ai.tegmentum.wasmtime4j.RuntimeInfo getRuntimeInfo()- Specified by:
getRuntimeInfoin interfaceai.tegmentum.wasmtime4j.WasmRuntime
-
isValid
public boolean isValid()- Specified by:
isValidin interfaceai.tegmentum.wasmtime4j.WasmRuntime
-
funcFromRawRef
public ai.tegmentum.wasmtime4j.WasmFunction funcFromRawRef(ai.tegmentum.wasmtime4j.Store store, long raw) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
funcFromRawRefin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
deserializeModule
public ai.tegmentum.wasmtime4j.Module deserializeModule(ai.tegmentum.wasmtime4j.Engine engine, byte[] serializedBytes) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
deserializeModulein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createWasiContext
public ai.tegmentum.wasmtime4j.wasi.WasiContext createWasiContext() throws ai.tegmentum.wasmtime4j.exception.WasmException- Specified by:
createWasiContextin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
addWasiToLinker
public void addWasiToLinker(ai.tegmentum.wasmtime4j.Linker<ai.tegmentum.wasmtime4j.wasi.WasiContext> linker, ai.tegmentum.wasmtime4j.wasi.WasiContext context) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
addWasiToLinkerin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
addWasiPreview2ToLinker
public void addWasiPreview2ToLinker(ai.tegmentum.wasmtime4j.Linker<ai.tegmentum.wasmtime4j.wasi.WasiContext> linker, ai.tegmentum.wasmtime4j.wasi.WasiContext context) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
addWasiPreview2ToLinkerin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
addComponentModelToLinker
public void addComponentModelToLinker(ai.tegmentum.wasmtime4j.Linker<ai.tegmentum.wasmtime4j.wasi.WasiContext> linker) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
addComponentModelToLinkerin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createWasiLinker
public ai.tegmentum.wasmtime4j.wasi.WasiLinker createWasiLinker(ai.tegmentum.wasmtime4j.Engine engine) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createWasiLinkerin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createWasiLinker
public ai.tegmentum.wasmtime4j.wasi.WasiLinker createWasiLinker(ai.tegmentum.wasmtime4j.Engine engine, ai.tegmentum.wasmtime4j.wasi.WasiConfig config) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createWasiLinkerin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
supportsComponentModel
public boolean supportsComponentModel()- Specified by:
supportsComponentModelin interfaceai.tegmentum.wasmtime4j.WasmRuntime
-
getGcRuntime
public ai.tegmentum.wasmtime4j.gc.GcRuntime getGcRuntime() throws ai.tegmentum.wasmtime4j.exception.WasmException- Specified by:
getGcRuntimein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
deserializeModuleFile
public ai.tegmentum.wasmtime4j.Module deserializeModuleFile(ai.tegmentum.wasmtime4j.Engine engine, Path path) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
deserializeModuleFilein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
moduleFromTrustedFile
public ai.tegmentum.wasmtime4j.Module moduleFromTrustedFile(ai.tegmentum.wasmtime4j.Engine engine, Path path) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
moduleFromTrustedFilein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
deserializeModuleRaw
public ai.tegmentum.wasmtime4j.Module deserializeModuleRaw(ai.tegmentum.wasmtime4j.Engine engine, byte[] bytes) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
deserializeModuleRawin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
deserializeModuleOpenFile
public ai.tegmentum.wasmtime4j.Module deserializeModuleOpenFile(ai.tegmentum.wasmtime4j.Engine engine, int fd) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
deserializeModuleOpenFilein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
createNnContext
public ai.tegmentum.wasmtime4j.wasi.nn.NnContext createNnContext() throws ai.tegmentum.wasmtime4j.wasi.nn.NnException- Specified by:
createNnContextin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.wasi.nn.NnException
-
isNnAvailable
public boolean isNnAvailable()- Specified by:
isNnAvailablein interfaceai.tegmentum.wasmtime4j.WasmRuntime
-
tlsEagerInitialize
public void tlsEagerInitialize() throws ai.tegmentum.wasmtime4j.exception.WasmException- Specified by:
tlsEagerInitializein interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
validateModule
public boolean validateModule(byte[] wasmBytes) - Specified by:
validateModulein interfaceai.tegmentum.wasmtime4j.WasmRuntime
-
createExnRef
public ai.tegmentum.wasmtime4j.ExnRef createExnRef(ai.tegmentum.wasmtime4j.Store store, ai.tegmentum.wasmtime4j.memory.Tag tag, ai.tegmentum.wasmtime4j.WasmValue[] fields) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
createExnRefin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
exnRefFromRaw
public ai.tegmentum.wasmtime4j.ExnRef exnRefFromRaw(ai.tegmentum.wasmtime4j.Store store, long raw) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
exnRefFromRawin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
externRefToRaw
public long externRefToRaw(ai.tegmentum.wasmtime4j.Store store, long externRefId) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
externRefToRawin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
externRefFromRaw
public long externRefFromRaw(ai.tegmentum.wasmtime4j.Store store, long raw) throws ai.tegmentum.wasmtime4j.exception.WasmException - Specified by:
externRefFromRawin interfaceai.tegmentum.wasmtime4j.WasmRuntime- Throws:
ai.tegmentum.wasmtime4j.exception.WasmException
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceai.tegmentum.wasmtime4j.WasmRuntime
-