Rust : wasm尝试 与wasmtime库
尝试了一下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库相关推荐
- PyO3: python调用rust代码尝试
PyO3功能很强大,是python和rust之间交互桥梁.今天主要试验一下python端调用rust端编译的代码库. 说明:本文环境中在windos平台和WSL下 unbuntu18.04平台.lin ...
- Rust + wasm 使用
一.wasm是什么 WebAssembly(WASM)是一个简单的机器模型和可执行格式,具有广泛的规范.它被设计为便携.紧凑,代码执行能够达到接近本机原生指令的执行速度. 作为一种编程语言,WebAs ...
- Rust Wasm 图片转 ASCII 艺术
有一些隐藏在代码中的 ASCII 有意思的图片,如: /*__ooOoo_o8888888o88" . "88(| -_- |)O\ = /O____/`---'\____.' \ ...
- c语言如何引入第三方库,在Rust中,如何从第三方库定义或导入C结构体?
Rust FFI指南( http://static.rust-lang.org/doc/master/guide-ffi.html)很好地演示了如何导入使用由Rust std :: lib库(例如si ...
- Rust actix aiohttp_如何看待 Rust Actix 库的维护者退出开源界?
更新:actix-web已经找到了接手维护者. 新的维护者看上去是一个比较靠谱的开发者,看到他也参与bastion这个项目,该项目旨在用Rust实现一个类Erlang VM(BEAM)的东东.感觉ac ...
- Rust应用调用C语言动态库
外部功能接口FFI 虽然高级(脚本)编程语言的功能丰富,表达能力强,但对底层的一些特殊操作的支持并不完善,就需要以其他编程语言来实现.调用其他编程语言的接口,被称为Foreign Function I ...
- 【Rust日报】 2019-05-11:wasm-flate 使用WASM对客户端文件进行超快压缩的工具
「社区讨论」命名异步函数的返回类型 该贴的作者认为,在async趋于稳定之前,还有个重要的讨论,就是支持异步函数的返回类型的自定义命名. async fn foo() -> impl Futur ...
- 【Rust日报】 2019-08-01:brpc-rs - X-lab 实验室新推出的一个rpc库
paperclip - OpenAPI 规范的 Rust 实现 在完成后,它会实现: Rust 中的服务器端.客户端和命令行端的高效的.编译时检查的.类型安全的 HTTP API 的生成: 支持处理. ...
- 【Rust】日志库log
日志库一般会实现日志分级.日志过滤.日志输出格式化.日志回滚等功能.本文介绍了Rust log库的使用,并给出了几个常用日志库的使用示例. 一.Rust log 1.log库 这个log库给出了日志库 ...
- WASM 原生时代已经到来 | 解读 WebAssembly 的 2022
Ending定律:一切可编译为 WebAssembly 的,终将被编译为 WebAssembly(Any application that can be compiled to WebAssembly ...
最新文章
- 北大韦神透露现状:自己课讲得不太好,中期学生退课后就剩下5、6个人...
- Spring Cloud中Hystrix仪表盘与Turbine集群监控
- 有人买不?没人的话我待会儿再来问问 价值6.11亿美元的入侵工具无人问津
- 报告称企业部署Windows 10比此前版本更快
- Android多媒体开发
- Android的系统服务一览
- 为什么银行没有厕所?内急了怎么办!
- 小汤学编程之JavaEE学习day07——版本控制工具:SVN、GIT
- 2018最新版硬盘装系统,不要U盘也能装
- Hutool:时间日期工具
- 机房三维(3D)监控系统和机房可视化动力环境监控系统两者有什么特点?
- 正面管教之PHP_主题体验活动之亲密关系
- vue php 架构目录,vuex 项目结构目录及一些简单配置介绍
- SQL Server触发器更新原理
- 国家统计局:政府统计应用大数据的主要障碍
- 文本表示与文本特征提取的区别
- 不要在循环中访问数据库,这样会严重影响数据库性能
- URL encode 编码
- 关于Ubuntu18.04双系统安装后无法连接WiFi问题解决方法
- Python实现遗传算法(GA)+支持向量回归机(SVR)
热门文章
- iOS多线程:『GCD』详尽总结
- Eclipse Plugin for Hadoop2.2.0
- Android中设置位移动画的停止
- django 之模板层
- nginx的学习笔记,第四记。
- C Primer Plus 第6版第二章的作业
- HTML 列表 olullidldtdd
- OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章)和varying,uniform,attribute修饰范围...
- OPENGL学习笔记整理(三):缓冲区对象
- 基于Visual C++2010与windows7 SDK开发传感器应用(触觉传感器,温度传感器等等)