OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

Fastly 开源 Lucet:WebAssembly 的编译器和运行时

  • 2019-04-15
  • 本文字数:948 字

    阅读完需:约 3 分钟

Fastly开源Lucet:WebAssembly的编译器和运行时

CDN 供应商Fastly最近开源了Lucet项目,这是一个 WebAssembly 原生的编译器和运行时。Lucet 可以让边缘服务开发者不受供应商、语言、或者 API(程序编程接口)的限制制定大规模边缘定制方案。


Lucet 是围绕 Wasm(WebAssembly)以及 WASI(WebAssembly系统接口)而设计的。开发者可以选择任何语言,如 Rust、TypeScript、C 或 C++等高级语言,只要这些语言能编译成 WebAssembly 即可。WASI 则不单单允许浏览器,任何实现了预定义 WASI 接口的平台都可以执行 Wasm 代码。在所有支持 WASI 的平台上,Lucet 可以更好地平衡 WebAssembly 的安全、近原生速度以及多语言支持等特性。


Fastly 高级软件工程师Pat Hickey详细解释了 Lucet 的性能需求:


Lucet 的一个主要设计目的就是能够执行 Fastly 处理的所有请求。这意味着 Lucet 需要能够为每个进程中每秒数以万计的请求都创建一个 WebAssembly 实例,这需要 Lucet 的消耗要远小于一般浏览器中的 JavaScript 引擎。Lucet 能够在 50 微秒以内启动一个 WebAssembly 实例,而且内存负载不会超过几 KB。相比之下,Chromium 的 V8 引擎需要 5 毫秒,几十兆大小的内存来启动一个 JavaScript 或 WebAssembly 程序。


对于 Lucet 的安全特性:


通过 Lucet,Fastly 的边缘云能够在同一个进程中同时执行数以万计的 WebAssembly 程序,同时又不会损害其安全性。Lucet 编译器和运行时确保 WebAssembly 程序只能访问自己专有的资源。这意味着 Fastly 的客户能够在不影响安全性的前提下使用更常见的通用语言来编写和运行程序。


开发者可以选择自己顺手的语言进行边缘开发,这样也更容易突破供应商和 API 的潜在限制,并能够为诸如 A/B 测试或认证相关的技术和业务问题实现自定义方案。


尽管 Fastly 只是最近才开源 Lucet,但作为Terrarium项目的引擎,Lucet 已经在生产环境中使用几个月了。文档和实例可参考Lucet仓库


WebAssembly,作为堆栈式虚拟机的二进制指令格式,主要被用来作为移植 C、C++或者 Rust 等高级语言的目标代码,从而可以在 Web 上部署客户端服务端程序。如今,四种主要的浏览器引擎都实现了 WebAssembly。WASI 作为 WebAssembly 平台的系统接口,旨在让 WebAssembly 程序在所有的设备、计算机或操作系统上运行。


查看英文原文Fastly Open-Sources Lucet, Its WebAssembly Compiler and Runtime


2019-04-15 08:004445

评论

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

Java基础语法知识点 1

喜羊羊

9月月更

关于 Java Stream 以及lambda

Joseph295

面向对象、DDD与设计模式

Joseph295

Kafka 最重要的 10 issues 详解

Joseph295

OpenHarmony源码的编译构建

坚果

OpenHarmony 9月月更

基于阿里云GPU云服务器的AIACC助力UC搜索业务性能提效380%,每年节省数千万成本

阿里云弹性计算

神龙 加速引擎 TensorRT QTC

分布式系统的一致性算法导论

Joseph295

关于 HBase

Joseph295

Python基础(三) | Python的组合数据类型

timerring

Python. 9月月更

库调多了,都忘了最基础的概念《Mysql相关知识》

知识浅谈

MySQL 9月月更

架构实战营模块七作业

zhihai.tu

数据治理(十五):Ranger 管理 Hive 安全

Lansonli

数据治理 9月月更

分布式事务解决思想以及实现方案

想要飞的猪

3PC 2PC注意事项 TCC 本地消息表

Flink精粹:可能是关于Flink知识点最密集的文章

Joseph295

Kubernetes: 关于云原生,我知道的一切都在这里了

Joseph295

『数据结构与算法』之时间复杂度与空间复杂度,看这一篇就够啦

喜羊羊

9月月更

SpringCloud Feign 远程调用(史上最详细讲解)

SpringCloud Fegin 9月月更

还能把浏览器当作 Web 服务器?骚操作,学废了~

掘金安东尼

前端 9月月更

从程序员的视角看待Linux操作系统

Joseph295

【Vue】Vue项目需求--实现搜索框输入防抖处理

Sam9029

JavaScript Vue 前端 9月月更

近期对前端性能优化的总结

南城FE

性能优化 前端 性能 性能提升

Elasticsearch聚合学习之一:基本操作

程序员欣宸

Elastic Search 9月月更

Java基础知识之数组

喜羊羊

9月月更

关于 DynamoDB

Joseph295

Qt实现文本编辑器(二)

中国好公民st

c++ qt 9月月更

关于Linux网络与网络编程

Joseph295

【C语言深度剖析】深入理解C语言中的移位操作符(代码+图解)

Albert Edison

C语言 9月月更 左移操作符 右移操作符

HDFS Block状态转移详解

Joseph295

性能:顶尖高手必备

Joseph295

关于AWS Aurora

Joseph295

美团前端二面高频面试题合集

loveX001

JavaScript 前端

Fastly开源Lucet:WebAssembly的编译器和运行时_大前端_Bruno Couriol_InfoQ精选文章