线性内存
WebAssembly有一个非常简单的内存模型。一个wasm模块可以访问单个“线性内存”,它本质上是一个平面字节数组。该内存可以以页面大小(64K)的倍数增长。它不能被缩小。
WebAssembly仅仅是为Web而设计的吗?
尽管目前它在JavaScript和Web社区中受到了广泛的关注,但wasm并没有对其主机环境做任何假设。因此,我们有理由推测wasm将来会成为一种“可移植的可执行文件”格式,在各种上下文中都可以使用。然而,到目前为止,wasm主要与JavaScript (JS)相关,它有多种形式(包括Web和Node.js)。

(module(func $fac (param f64) (result f64)get_local 0f64.const 1f64.ltif (result f64)f64.const 1elseget_local 0get_local 0f64.const 1f64.subcall $facf64.mulend)(export "fac" (func $fac)))

Rust 和 WebAssembly 有两大主要用例:

构建完整应用 —— 整个 Web 应用都基于 Rust 开发!
构建应用的组成部分 —— 在现存的 JavaScript 前端中使用 Rust。将使用 Rust 的 npm 包构建工具 wasm-pack 来构建一个 npm 包。这个包只包含 WebAssembly 和 JavaScript 代码,以便包的用户无需安装 Rust 就能使用。他们甚至不需要知道这里包含 WebAssembly!
要构建我们的包,我们需要一个额外工具 wasm-pack。它会帮助我们把我们的代码编译成 WebAssembly 并制造出正确的 npm 包。使用下面的命令可以下载并安装它:

$cargo new --lib wasmlearn1
$ cargo install wasm-pack
//lib.rs
extern crate wasm_bindgen;use wasm_bindgen::prelude::*;#[wasm_bindgen]
extern {pub fn alert(s: &str);
}#[wasm_bindgen]
pub fn greet(name: &str) {alert(&format!("Hello, {}!", name));
}

rust(36)-Rust and WebAssembly(3)相关推荐

  1. 从Rust到远方:WebAssembly 星系

    来源:https://mnt.io/2018/08/22/from-rust-to-beyond-the-webassembly-galaxy/ 这篇博客文章是这一系列解释如何将Rust发射到地球以外 ...

  2. rust 局域网联机_腐蚀rust搭建Rust服务器及联机教程

    今天 九游和大家讲解腐蚀rust搭建Rust服务器及 联机教程 腐蚀rust服务器搭建教程.这里为大家介绍如何搭建服务器,可以进行单机也可以和小伙伴联机,下面介绍详细的方法. Steam游戏后台服务器 ...

  3. Rust:Rust语言介绍

    Rust语言介绍 相关资源 Rust官网:https://www.rust-lang.org/ Rust编译器的源码:https://github.com/rust-lang/rust 语言设计和相关 ...

  4. 如何编写一个 Rust 程序——Rust语言基础02

    1. Hello World! 在所有编程语言的教程中让大家接触的第一段程序便是将 "Hello World!" 这段文字打印到屏幕上,这样的开端被绝大多数语言的教学接受,并往后编 ...

  5. rust(33)-Rust and WebAssembly(1)

    具有高级人机工程学的低级控制 JavaScript Web应用程序很难获得和保持可靠的性能.JavaScript的动态类型系统和垃圾收集暂停不起作用.如果您不小心偏离了JIT的正确方向,那么看似很小的 ...

  6. rust(34)-Rust and WebAssembly(2)

    WebAssembly (wasm)是一种简单的机器模型和可执行格式,具有广泛的规范.它被设计成便携.紧凑.以或接近本机速度执行. 作为一种编程语言,WebAssembly由两种表示相同结构的格式组成 ...

  7. 【一起学Rust】Rust的Hello Rust详细解析

    跟随本篇文章,你将学会编写Rust的Hello World,并且对Rust编程有个初步的了解. 文章目录 前言 一.创建项目目录 二.编写Hello World 三.运行程序 编译 运行 四.分析He ...

  8. 【一起学Rust】Rust学习前准备——注释和格式化输出

    提示:准备热身. 文章目录 前言 一.注释 1. 普通注释 2. 文档注释 二.格式化输出 输出字符串 输出带有占位符的字符串 输出带有指定格式占位符的字符串 指定宽度对齐 数字输出缺位补0 总结 注 ...

  9. [Rust笔记]Rust生成随机数的方法

    1.前言 在项目当中,生成随机数.随机密码等经常会使用到.这里总结下Rust随机数生成的方法.Rust我们要用到包模块 rand.具体实现如下: 2.添加模块依赖 [dependencies] ran ...

最新文章

  1. MPB:中科院生态环境中心邓晔组-从环境样本中提取高质量DNA-研磨加DNeasy试剂盒方法...
  2. macos关闭软件更新小红点_如何一键消除手机上的小红点?请看这招...
  3. strings 命令——ELF文件格式与“链接和装载”
  4. 项目部署mysql安装_Tomcat7+jdk+mysql安装及项目部署
  5. JS实现转动随机数抽奖的特效代码
  6. VC++ 常见编译错误
  7. XCode上传成功后,商店里构建版本显示正在处理中
  8. 万物皆可文本时代来临?如何搞定NLP最强模型GPT
  9. Shell中字符串反转的六大方法
  10. 02HTML 超链接与图像标记各是什么,【HTML篇】3.HTML的图片标签、超链接标签
  11. vos3000_v7.x版本的快速安装方法
  12. 调速水泵控制c语言实验程序,液压控制实验报告
  13. CodeCademy | Python | 7. Function
  14. outlook邮件通过python发送_怎么发送邮箱-python调用outlook发送邮件的超详细操作步骤...
  15. 如何用PS把图片中的人物剪掉
  16. python安装cfgrib读取grib数据
  17. Unity导出微信小游戏
  18. H265/HEVC 常用缩写词及其含义
  19. 《格局》 吴军著 读后感-- 跟每个人都相关的李嘉图定律 - 免费的不值钱
  20. IE浏览器通过JS提交表单时报错拒绝访问

热门文章

  1. PHP session值控制
  2. 在dw下安装zen coding,并对其快捷键进行修改
  3. Python之路(第三十九篇)管道、进程间数据共享Manager
  4. Git学习——提交BUG
  5. Linux CentOS服务启动
  6. 2016/07/11 常用正则表达式大全 (转)
  7. 获取顶级常量、祖先链、私有方法
  8. jquery Deferred
  9. 数据结构——维基百科
  10. WCF热带鱼书学习手记 - Service Contract Overload