Class PanamaWasmRuntime

java.lang.Object
ai.tegmentum.wasmtime4j.panama.PanamaWasmRuntime
All Implemented Interfaces:
ai.tegmentum.wasmtime4j.WasmRuntime, Closeable, AutoCloseable

public final class PanamaWasmRuntime extends Object implements ai.tegmentum.wasmtime4j.WasmRuntime
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
    Constructor
    Description
    Creates a new Panama WebAssembly runtime.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addComponentModelToLinker(ai.tegmentum.wasmtime4j.Linker<ai.tegmentum.wasmtime4j.wasi.WasiContext> linker)
     
    void
    addWasiPreview2ToLinker(ai.tegmentum.wasmtime4j.Linker<ai.tegmentum.wasmtime4j.wasi.WasiContext> linker, ai.tegmentum.wasmtime4j.wasi.WasiContext context)
     
    void
    addWasiToLinker(ai.tegmentum.wasmtime4j.Linker<ai.tegmentum.wasmtime4j.wasi.WasiContext> linker, ai.tegmentum.wasmtime4j.wasi.WasiContext context)
     
    void
     
    ai.tegmentum.wasmtime4j.Module
    compileModule(ai.tegmentum.wasmtime4j.Engine engine, byte[] wasmBytes)
     
    ai.tegmentum.wasmtime4j.Module
    compileModuleWat(ai.tegmentum.wasmtime4j.Engine engine, String watText)
     
    ai.tegmentum.wasmtime4j.component.ComponentEngine
     
    ai.tegmentum.wasmtime4j.component.ComponentEngine
    createComponentEngine(ai.tegmentum.wasmtime4j.component.ComponentEngineConfig config)
     
    <T> ai.tegmentum.wasmtime4j.component.ComponentLinker<T>
    createComponentLinker(ai.tegmentum.wasmtime4j.Engine engine)
     
    ai.tegmentum.wasmtime4j.Engine
     
    ai.tegmentum.wasmtime4j.Engine
    createEngine(ai.tegmentum.wasmtime4j.config.EngineConfig config)
     
    ai.tegmentum.wasmtime4j.ExnRef
    createExnRef(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.NnContext
     
    ai.tegmentum.wasmtime4j.Store
    createStore(ai.tegmentum.wasmtime4j.Engine engine)
     
    ai.tegmentum.wasmtime4j.Store
    createStore(ai.tegmentum.wasmtime4j.Engine engine, long fuelLimit, long memoryLimitBytes, long executionTimeoutSeconds)
     
    ai.tegmentum.wasmtime4j.Store
    createStore(ai.tegmentum.wasmtime4j.Engine engine, ai.tegmentum.wasmtime4j.config.StoreLimits limits)
     
    ai.tegmentum.wasmtime4j.memory.Tag
    createTag(ai.tegmentum.wasmtime4j.Store store, ai.tegmentum.wasmtime4j.type.TagType tagType)
     
    ai.tegmentum.wasmtime4j.wasi.WasiContext
     
    ai.tegmentum.wasmtime4j.wasi.WasiLinker
    createWasiLinker(ai.tegmentum.wasmtime4j.Engine engine)
     
    ai.tegmentum.wasmtime4j.wasi.WasiLinker
    createWasiLinker(ai.tegmentum.wasmtime4j.Engine engine, ai.tegmentum.wasmtime4j.wasi.WasiConfig config)
     
    ai.tegmentum.wasmtime4j.Module
    deserializeModule(ai.tegmentum.wasmtime4j.Engine engine, byte[] serializedBytes)
     
    ai.tegmentum.wasmtime4j.Module
    deserializeModuleFile(ai.tegmentum.wasmtime4j.Engine engine, Path path)
     
    ai.tegmentum.wasmtime4j.Module
    deserializeModuleOpenFile(ai.tegmentum.wasmtime4j.Engine engine, int fd)
     
    ai.tegmentum.wasmtime4j.Module
    deserializeModuleRaw(ai.tegmentum.wasmtime4j.Engine engine, byte[] bytes)
     
    ai.tegmentum.wasmtime4j.ExnRef
    exnRefFromRaw(ai.tegmentum.wasmtime4j.Store store, long raw)
     
    long
    externRefFromRaw(ai.tegmentum.wasmtime4j.Store store, long raw)
     
    long
    externRefToRaw(ai.tegmentum.wasmtime4j.Store store, long externRefId)
     
    ai.tegmentum.wasmtime4j.WasmFunction
    funcFromRawRef(ai.tegmentum.wasmtime4j.Store store, long raw)
     
    ai.tegmentum.wasmtime4j.gc.GcRuntime
     
    ai.tegmentum.wasmtime4j.RuntimeInfo
     
    ai.tegmentum.wasmtime4j.Instance
    instantiate(ai.tegmentum.wasmtime4j.Module module)
     
    ai.tegmentum.wasmtime4j.Instance
    instantiate(ai.tegmentum.wasmtime4j.Module module, ai.tegmentum.wasmtime4j.validation.ImportMap imports)
     
    boolean
     
    boolean
     
    ai.tegmentum.wasmtime4j.Module
    moduleFromTrustedFile(ai.tegmentum.wasmtime4j.Engine engine, Path path)
     
    boolean
     
    void
     
    ai.tegmentum.wasmtime4j.Store
    tryCreateStore(ai.tegmentum.wasmtime4j.Engine engine)
     
    boolean
    validateModule(byte[] wasmBytes)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface ai.tegmentum.wasmtime4j.WasmRuntime

    addWasiToLinkerAsync
  • Constructor Details

    • PanamaWasmRuntime

      public PanamaWasmRuntime() throws ai.tegmentum.wasmtime4j.exception.WasmException
      Creates 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:
      createEngine in interface ai.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:
      createEngine in interface ai.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:
      compileModule in interface ai.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:
      compileModuleWat in interface ai.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:
      createStore in interface ai.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:
      createStore in interface ai.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:
      createStore in interface ai.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:
      tryCreateStore in interface ai.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:
      createTag in interface ai.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:
      createLinker in interface ai.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:
      createLinker in interface ai.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:
      createComponentLinker in interface ai.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:
      instantiate in interface ai.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:
      instantiate in interface ai.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:
      createComponentEngine in interface ai.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:
      createComponentEngine in interface ai.tegmentum.wasmtime4j.WasmRuntime
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException
    • getRuntimeInfo

      public ai.tegmentum.wasmtime4j.RuntimeInfo getRuntimeInfo()
      Specified by:
      getRuntimeInfo in interface ai.tegmentum.wasmtime4j.WasmRuntime
    • isValid

      public boolean isValid()
      Specified by:
      isValid in interface ai.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:
      funcFromRawRef in interface ai.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:
      deserializeModule in interface ai.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:
      createWasiContext in interface ai.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:
      addWasiToLinker in interface ai.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:
      addWasiPreview2ToLinker in interface ai.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:
      addComponentModelToLinker in interface ai.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:
      createWasiLinker in interface ai.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:
      createWasiLinker in interface ai.tegmentum.wasmtime4j.WasmRuntime
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException
    • supportsComponentModel

      public boolean supportsComponentModel()
      Specified by:
      supportsComponentModel in interface ai.tegmentum.wasmtime4j.WasmRuntime
    • getGcRuntime

      public ai.tegmentum.wasmtime4j.gc.GcRuntime getGcRuntime() throws ai.tegmentum.wasmtime4j.exception.WasmException
      Specified by:
      getGcRuntime in interface ai.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:
      deserializeModuleFile in interface ai.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:
      moduleFromTrustedFile in interface ai.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:
      deserializeModuleRaw in interface ai.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:
      deserializeModuleOpenFile in interface ai.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:
      createNnContext in interface ai.tegmentum.wasmtime4j.WasmRuntime
      Throws:
      ai.tegmentum.wasmtime4j.wasi.nn.NnException
    • isNnAvailable

      public boolean isNnAvailable()
      Specified by:
      isNnAvailable in interface ai.tegmentum.wasmtime4j.WasmRuntime
    • tlsEagerInitialize

      public void tlsEagerInitialize() throws ai.tegmentum.wasmtime4j.exception.WasmException
      Specified by:
      tlsEagerInitialize in interface ai.tegmentum.wasmtime4j.WasmRuntime
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException
    • validateModule

      public boolean validateModule(byte[] wasmBytes)
      Specified by:
      validateModule in interface ai.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:
      createExnRef in interface ai.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:
      exnRefFromRaw in interface ai.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:
      externRefToRaw in interface ai.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:
      externRefFromRaw in interface ai.tegmentum.wasmtime4j.WasmRuntime
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface ai.tegmentum.wasmtime4j.WasmRuntime