首页 > 其他分享 >wasmoon 基于webassembly 的lua 虚拟机

wasmoon 基于webassembly 的lua 虚拟机

时间:2023-11-30 09:56:03浏览次数:39  
标签:function webassembly const 虚拟机 global lua app wasmoon

wasmoon 是基于webassembly 开发的lua 虚拟机

包含的特性

  • 可以嵌入到node,deno,web app
  • 运行lua 在如何操作系统中
  • js 与lua的交互不用担心内存泄漏

参考使用

  • app.js
const { LuaFactory } = require('wasmoon')
 
async function main() {
    // Initialize a new lua environment factory
    // You can pass the wasm location as the first argument, useful if you are using wasmoon on a web environment and want to host the file by yourself
    const factory = new LuaFactory()
    // Create a standalone lua environment from the factory
    const lua = await factory.createEngine()
    //  基于虚拟文件系统的文件操作
    await factory.mountFile('app.lua',`
            local app = {
                name = "app",
                age = 333
            }
 
            local function demo()
                return app
            end
 
            return {
                demo = demo
            }
    `)
    try {
        // Set a JS function to be a global lua function
        lua.global.set('sum', (x, y) => x + y)
        // Run a lua string
        await lua.doString(`
    print(sum(10, 10))
    function multiply(x, y)
        return x * y
    end
    `);
        await lua.doFile('app.lua')
        // Get a global lua function as a JS function
        const multiply = lua.global.get('multiply')
        console.log(multiply(10, 10))
       // 加载模块
        const value = await lua.doString(`local appmy = require('app'); return appmy;`) 
       // 调用模块的方法
        console.log(value.demo())
    } finally {
        // Close the lua environment, so it can be freed
        lua.global.close()
    }
}
 
main().catch(console.error)
说明

wasmoon 是一个很不错的项目,同时性能也很不错,似乎mac 版的qq 也使用了此包

参考资料

https://github.com/ceifa/wasmoon

标签:function,webassembly,const,虚拟机,global,lua,app,wasmoon
From: https://www.cnblogs.com/rongfengliang/p/17866612.html

相关文章

  • 解决主机与虚拟机之间无法复制粘贴的问题办法
    1.卸载VMwareToolssudoapt-getautoremoveopen-vm-tools2.联网安装VMwaretoolssudoapt-getinstallopen-vm-tools-desktop3.记得要重启虚拟机!ps:重启后,使用ctrlc+v似乎还是不能复制粘贴,也不能通过拖动文件来复制,但是可以通过鼠标右键复制粘贴文本或者文件,也算解......
  • 虚拟机进行实验八遇到的坑(一)
    idea依赖下载报错//引入阿里云镜像下载就ok啦~~~<repositories><repository><id>alimaven</id><name>aliyunmaven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url......
  • VMWARE虚拟机的CPU分配(VMWARE14):处理器数量、核心数量分配验证
    最近搞了个12核24线程的服务器CPU,加上华南金牌的主板,配了64G的内存,有点飘。然后用VMWARE14建了好几个虚拟机,多开耍耍。然后CPU的分配成了一个问题,因此上网查了下,有两种说法:方案1:有说虚拟机处理器设置页面的“处理器数量”指的是“核心数”,“每个处理器的内核数量”是超线程数量。......
  • WebAssembly的应用
    概念和作用阿里云原生网关MSE上的插件,都是采集WebAssembly来执行的,你可以通过js,go来开发wasm文件,放到WebAssembly去执行。WebAssembly(简称Wasm)是一种用于浏览器和服务器端的低级虚拟机,它的作用在生产中具有广泛的应用:高性能计算:WebAssembly是一种高性能的虚拟机,可以用于执行密集......
  • wasm-vips libvips webassembly 实现
    wasm-vips是利用了emscripten将libvips编译为webassembly可以实现在node以及浏览器中使用libvips强大的图片处理处理以下是一个简单的试用参考试用app.js constVips=require('wasm-vips');asyncfunctioninit(){constvips=awaitVips();vips.Image.ne......
  • 命令行界面的虚拟机如何转成图形界面
    教程相关步骤1、查看有什么可以安装yumgrouplist2、安装GUI图形界面yumgroupinstall-y"ServerwithGUI""DevelopmentTools"3、打开下载好的GUI图形界面startx开启成功!......
  • 虚拟机打开Hbase shell
    1、打开所有hadoop的进程start-all.sh2、打开yarn的进程start-yarn.sh这是为了防止start-all.sh,没有打开所有,其实不用管他的。3、node1,node2,node3都打开zookeepercd/export/server/apache-zookeeper-3.5.6-bin/binzkServer.shstart4、打开hbase的进程sta......
  • linux虚拟机gcc命令安装
    我从网上找的安装命令是"sudoapt-getinstallgcc",但是我无法成功,它提示未找到apt-get命令,于是我把apt-get命令更换成yum命令,也就是"sudoyuminstallgcc",这个命令就没有问题了,直接安装成功。所以可以直接使用yum命令。 附:当apt-get命令找不到时,可能有以下几个原因和解决......
  • lua self使用例子
    localfuncs={}functionfuncs:callMe()localtt=self.name--值为helloprint(tt)endf=funcs["callMe"]--调用方法1:f({name=“hello"})--调用方法2:localok,err=pcall(f,{name="hello"}) pcall为protected call的意思,......
  • Linux学习笔记 虚拟机的安装
    VMWare是当前最主流、应用最广泛的虚拟软件(来搭建虚拟环境)。它可以保证在一台现有的计算机操作系统上,模拟出一个新的硬件环境,以实现在一个电脑上真正同时运行两个OS。其官网为:www.vmware.com。在我看来:使用VMWare装的OS还可以同Windows主机进行网络通信的。安装VMWare的配置建议......