尝试了一下wasmtime库,顺便了解一下编译wasm文件的过程。
说明一下,我在wsl平台上进行的以下尝试。此前出现过一些问题,主要是文件读写的权限,后面把权限打开了,按照wasmtime库的说明,基本上就顺利了。

具体的参考资料可以参阅:

https://github.com/bytecodealliance/wasmtime

几个步骤:以hello.rs文件为例

$ rustup target add wasm32-wasi
$ rustc hello.rs --target wasm32-wasi
$ wasmtime hello.wasm

两种方式:

1、二进制文件,main.rs


注意要进入到src文件夹下,否则可能找不到文件:

songroom@DESKTOP-MEDPUTU:~/wasm_test/wtime/src$ rustc main.rs --target wasm32-wasi

也可以在

cargo build --release --target=wasm32-wasi

这样,生成wasm文件的名字和路径有所不同。

具体main.rs编译成.wasm文件的执行:
在相应的目录下,

songroom@DESKTOP-MEDPUTU:~/wasm_test/wtime$ cd target/wasm32-wasi/release
songroom@DESKTOP-MEDPUTU:~/wasm_test/wtime/target/wasm32-wasi/release$ wasmtime wtime.wasm
Hello, world! my first wasm try!
add x:5 y:6 output :17

2、lib.rs
在wasm_test文件下,创建一个lib文件,wtime_lib,在lib.rs下补上相关代码。

同时,需要对cargo.toml文件进行设置:

执行:

cargo build --release --target=wasm32-wasi

具体如下:

`songroom@DESKTOP-MEDPUTU:~/wasm_test/wtime_lib$ cargo build --release --target=wasm32-wasi
warning: unused manifest key: buildCompiling wtime_lib v0.1.0 (/home/songroom/wasm_test/wtime_lib)Finished release [optimized] target(s) in 0.52s`

你可以发现,在对应目录下,生成了.wasm文件。文件名为.toml文件中所设置。
这样,不管是二进制main.rs还是lib.rs,都可以生成相应的.wasm文件了。

同时,也可以进一步了解一下wasm文件和原生代码执行的效率比较。

songroom@DESKTOP-MEDPUTU:~/wasm_test/wtime/target/wasm32-wasi/release$ time wasmtime wtime.wasm
Hello, world! my first wasm try!
add x:5 y:6 output :17 real    0m0.013s
user    0m0.014s
sys     0m0.000s

Rust : wasm尝试 与wasmtime库相关推荐

  1. PyO3: python调用rust代码尝试

    PyO3功能很强大,是python和rust之间交互桥梁.今天主要试验一下python端调用rust端编译的代码库. 说明:本文环境中在windos平台和WSL下 unbuntu18.04平台.lin ...

  2. Rust + wasm 使用

    一.wasm是什么 WebAssembly(WASM)是一个简单的机器模型和可执行格式,具有广泛的规范.它被设计为便携.紧凑,代码执行能够达到接近本机原生指令的执行速度. 作为一种编程语言,WebAs ...

  3. Rust Wasm 图片转 ASCII 艺术

    有一些隐藏在代码中的 ASCII 有意思的图片,如: /*__ooOoo_o8888888o88" . "88(| -_- |)O\ = /O____/`---'\____.' \ ...

  4. c语言如何引入第三方库,在Rust中,如何从第三方库定义或导入C结构体?

    Rust FFI指南( http://static.rust-lang.org/doc/master/guide-ffi.html)很好地演示了如何导入使用由Rust std :: lib库(例如si ...

  5. Rust actix aiohttp_如何看待 Rust Actix 库的维护者退出开源界?

    更新:actix-web已经找到了接手维护者. 新的维护者看上去是一个比较靠谱的开发者,看到他也参与bastion这个项目,该项目旨在用Rust实现一个类Erlang VM(BEAM)的东东.感觉ac ...

  6. Rust应用调用C语言动态库

    外部功能接口FFI 虽然高级(脚本)编程语言的功能丰富,表达能力强,但对底层的一些特殊操作的支持并不完善,就需要以其他编程语言来实现.调用其他编程语言的接口,被称为Foreign Function I ...

  7. 【Rust日报】 2019-05-11:wasm-flate 使用WASM对客户端文件进行超快压缩的工具

    「社区讨论」命名异步函数的返回类型 该贴的作者认为,在async趋于稳定之前,还有个重要的讨论,就是支持异步函数的返回类型的自定义命名. async fn foo() -> impl Futur ...

  8. 【Rust日报】 2019-08-01:brpc-rs - X-lab 实验室新推出的一个rpc库

    paperclip - OpenAPI 规范的 Rust 实现 在完成后,它会实现: Rust 中的服务器端.客户端和命令行端的高效的.编译时检查的.类型安全的 HTTP API 的生成: 支持处理. ...

  9. 【Rust】日志库log

    日志库一般会实现日志分级.日志过滤.日志输出格式化.日志回滚等功能.本文介绍了Rust log库的使用,并给出了几个常用日志库的使用示例. 一.Rust log 1.log库 这个log库给出了日志库 ...

  10. WASM 原生时代已经到来 | 解读 WebAssembly 的 2022

    Ending定律:一切可编译为 WebAssembly 的,终将被编译为 WebAssembly(Any application that can be compiled to WebAssembly ...

最新文章

  1. 北大韦神透露现状:自己课讲得不太好,中期学生退课后就剩下5、6个人...
  2. Spring Cloud中Hystrix仪表盘与Turbine集群监控
  3. 有人买不?没人的话我待会儿再来问问 价值6.11亿美元的入侵工具无人问津
  4. 报告称企业部署Windows 10比此前版本更快
  5. Android多媒体开发
  6. Android的系统服务一览
  7. 为什么银行没有厕所?内急了怎么办!
  8. 小汤学编程之JavaEE学习day07——版本控制工具:SVN、GIT
  9. 2018最新版硬盘装系统,不要U盘也能装
  10. Hutool:时间日期工具
  11. 机房三维(3D)监控系统和机房可视化动力环境监控系统两者有什么特点?
  12. 正面管教之PHP_主题体验活动之亲密关系
  13. vue php 架构目录,vuex 项目结构目录及一些简单配置介绍
  14. SQL Server触发器更新原理
  15. 国家统计局:政府统计应用大数据的主要障碍
  16. 文本表示与文本特征提取的区别
  17. 不要在循环中访问数据库,这样会严重影响数据库性能
  18. URL encode 编码
  19. 关于Ubuntu18.04双系统安装后无法连接WiFi问题解决方法
  20. Python实现遗传算法(GA)+支持向量回归机(SVR)

热门文章

  1. iOS多线程:『GCD』详尽总结
  2. Eclipse Plugin for Hadoop2.2.0
  3. Android中设置位移动画的停止
  4. django 之模板层
  5. nginx的学习笔记,第四记。
  6. C Primer Plus 第6版第二章的作业
  7. HTML 列表 olullidldtdd
  8. OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章)和varying,uniform,attribute修饰范围...
  9. OPENGL学习笔记整理(三):缓冲区对象
  10. 基于Visual C++2010与windows7 SDK开发传感器应用(触觉传感器,温度传感器等等)