写点什么

Wasmer 发布 GA 版本的 WebAssembly 运行时

2021 年 2 月 03 日

Wasmer发布GA版本的WebAssembly运行时

Wasmer 最新发布了WebAssembly服务器端运行时1.0版,由此形成了一般可用(GA)版。

 

Wasmer提供了基于WebAssembly(简称 Wasm)的超轻量级容器。该系列产品的启动可回溯至两年多前推出的 0.1.0 版,此次发行的 1.0 版是一个重要的里程碑标志,体现了 Wasm 对服务器端的日益关注。

 

Wasmer 1.0 版的主要功能包括:

  • 多项性能改进:编译速度比之前的版本提高了 9 倍。

  • 可插拔的架构:支持多种编译器和编译引擎。Wasmer 不仅对SinglepassCraneliftLLVM提供开箱即可用的支持,而且支持 JIT 引擎和原生引擎两种编译模式。JIT 引擎将生成代码直接推送到内存,原生引擎在磁盘上生成原生代码。

  • 原生对象引擎:Wasm 模块可预编译为原生对象。原生对象在提供完全沙箱环境的同时,通过编译的模块仅需要最小运行时即可运行。

  • 无头(headless)Wasmer:用户可运行一种专门针对轻量级 IoT 设备的“无头”版 Wasmer。无头版仅有几百 KB 大小,支持在任一设备上运行预编译的 Wasm 二进制文件。

  • 交叉编译:可以在任意 CPU 架构上针对其他的目标 CPU 架构进行 Wasm 的预编译。

 

Wasm 是一种面向基于堆栈(stack-based)虚拟机的二进制指令格式。它的设计目的是能够让不同的编程语言生成可移植的编译目标产出,支持在 Web 客户端和服务器端应用上进行部署。Wasm 已受到 Web 应用开发的广泛关注。开发人员使用 Wasm 替代或补充传统的 JavaScript 代码,并且大多数现代浏览器支持开箱即可用地执行 Wasm。可编译为 Wasm 的编程语言正不断增加,其中包括 C/C++、Rust、C#等。

 

随着 WebAssembly 在浏览器中广泛使用,出现了一些服务器端 Wasm 实现。Wasmer 的 CEO Syrus Akbary 介绍了服务器端 Wasm 运行时的重要性:

 

我们相信,WebAssembly 未来将成为执行软件和容器化的重要组件,不仅在浏览器内部,而且在浏览器之外。

 

通过将 Wasm 引入软件容器化,我们创建了无需修改即可随处运行的通用二进制文件,支持 Linux、MacOS、Windows 等操作系统,以及多种浏览器。出于执行安全上的考虑,Wasm 默认自动化沙箱应用,保护主机环境免受恶意代码、软件缺陷和所运行软件的安全漏洞的威胁。Wasm 还提供了紧凑的执行环境,使得 Wasmer 容器可在使用 Docker 容器显得过于重量级的场景中运行。


Wasm 服务器端运行时实现了WebAssembly System Interface(WASI)。WASI 是 WebAssembly 的模块化系统接口,支持 Wasm 代码访问文件系统、网络等操作系统的特定服务,这通常在浏览器中是不允许的。Docker 的联合创始人 Solomon Hykes 曾于2019年发推文指出:


如果早在 2008 年就推出了 WASM+WASI,那么我们就没有必要创立 Docker。Wasm 就是这么重要。服务器端 WebAssembly 是计算的未来,虽然还缺少标准化的系统接口。期待 WASI 提上日程!


Wasmer 使用Rust编写,是一个流行的 Wasm 服务器端运行时的开源实现。做为 Wasmer 的支撑企业,Wasmer Inc 还推出了WebAssembly软件包管理器WAPM。使用 WAPM,开发人员可以轻松地分享 Wasm 代码的打包模块。Wasmer 运行时的同类产品还包括 SSVM(Second State Virtual Machine)和Lucet

 

原文链接: 

The "Wasmer" WebAssembly Runtime is Generally Available

2021 年 2 月 03 日 15:572023

评论

发布
暂无评论
发现更多内容

PHP中的错误和异常

书旅

php 异常 常见错误

区块链技术正向平台化、组件化、集成化演进

CECBC区块链专委会

大数据 区块链技术 科技

一位男程序员的英语学习之路

盛安德软件

Spring-技术专题-Bean的生命周期简介

李浩宇/Alex

spring

更改用户host留下的坑

Simon

MySQL

PM2 管理node.js开机自启动(非root用户)

openbytes

node.js

MySQL-长事务详解

Simon

MySQL mysql事务

王者荣耀为什么不使用微服务架构?

程序员生活志

【数据结构与算法】用动图解说数组、链表、跳表原理与实现

三钻

数组 链表 数据结构与算法 跳表

5. JsonFactory工厂而已,还蛮有料,这是我没想到的

YourBatman

Jackson Fastjson JSON库 JsonFactory

火眼云CEO张陆鹏:A轮融资5000万,解密国内ABM生态首位玩家

ToB行业头条

【Kafka】消费者客户端小结(java)

guoguo 👻

因为套用这个模板,我成了公司最佳员工

华为云开发者社区

网站架构 华为云 网站搭建 匀速建站 SEO

性能优化-技术专题-top和jstack分析高CPU问题

李浩宇/Alex

JVM

通过波士顿矩阵模型做产品定位

GuOjixIE

数据分析 产品定位 波士顿矩阵模型

LeetCode题解:11. 盛最多水的容器,双循环暴力法,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

IOTA架构下的数据采集

易观大数据

影响音视频延迟的关键因素(二): 采集、前处理、编解码

ZEGO即构

H264 API 3A算法

如何让我的简历有价值、有亮点

escray

学习 面试 简历 面试现场

哥尼斯堡七桥问题

InfoQ_aef2dd810f7f

揭秘MySQL主从数据不一致

Simon

MySQL 主从复制

关于自增id 你可能还不知道

Simon

MySQL MySQL自增ID

设计模式-技术专题-建造者模式(Builder)

李浩宇/Alex

Java 设计模式

MySQL视图介绍

Simon

MySQL

linux入门系列6--软件管理之rpm和yum仓库

黑马腾云

Linux centos 运维 rpm yum

LeetCode题解:66. 加一,倒序遍历+可中途退出,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

质量门禁:Verigreen开启Git的Commit门禁

陈磊@Criss

37岁程序员被裁,想用6月工资跪舔领导划掉被裁名额,结果蒙了!

程序员生活志

提高GIT中代码质量的七点优秀实践

程序员生活志

git 经验总结

终极学习法,你能学会任何东西--程序员的学习之路

盛安德软件

python自动生成一整月的排班表

openbytes

Python

微服务架构下如何保证事务的一致性

微服务架构下如何保证事务的一致性

Wasmer发布GA版本的WebAssembly运行时-InfoQ