Lucet的使用方法

Lucet的使用方法

 

一、介绍

Lucet项目是CDN供应商Fastly的一个新开源的项目,其提供了WebAssembly原生的编译器和运行时。它主要是为边缘服务者提供WASM的解决方案。

Lucet提供了对WASI的支持,在安全、速度等性能上进行了再平衡。它的效率比一般的JS引擎要快很多并且小很多。在官方的例子中,只需要5毫秒和几K的内存。同样,它的安全性也不容小觑,它在成千上万的实例中,安全的隔离了相关的数据和计算过程,

Lucet做为Terrarium项目的引擎,已经在生产环境中运行了数月,足以证明其性能的优越性。

 

二、编译

编译的详细的说明在下面的网址:

https://travis-ci.org/fastly/lucet/jobs/577499451

分为以下几步:

1、准备命令:

$ sudo systemctl start docker

git.checkout

$ git clone --depth=50 --branch=master https://github.com/fastly/lucet.git fastly/lucet

git.submodule

$ git submodule update --init --recursive

Setting environment variables from .travis.yml

$ export UNOPTIMIZED_BUILD=true

rvm     这个没啥用

$ rvm use default

Using /home/travis/.rvm/gems/ruby-2.5.3

ruby.versions

$ ruby –version

2、正式安装命令:

$ ./devenv_run.sh make indent-check test audit

Error: No such image: lucet:latest

Error: No such image: lucet-dev:latest

Building lucet-dev:latest

。。。。。。

 

这个脚本主要是创建安装lucet-dev lucet两个镜像。

下面的脚本停止创建启动的镜像

$ ./devenv_stop.sh

Stopping container

lucet

Removing container

lucet

 

下面创建启动lucet-toolchain镜像:

$ git diff --exit-code

The command "git diff --exit-code" exited with 0.

$ ./devenv_build_toolchain_only.sh

Building lucet-toolchain:latest

Sending build context to Docker daemon  130.9MB

Step 1/6 : FROM ubuntu:disco

disco: Pulling from library/ubuntu

。。。。。。

Successfully built d4c1fa7ff968
Successfully tagged lucet-toolchain:latest
Starting the lucet container
Creating a container from the lucet-toolchain:latest image
sha256:fe55022f476d4f98231c5c1bce70240fedb2b1075c39eaf282437f83dc30fbce
Cleaning
lucet
lucet
lucet-toolchain
lucet-toolchain
Done

3、安装结束。

使用sudo docker images 查看:

会发现生成了三个镜像,一个lucet,lucet-dev,lucet-toolchain.一个是设备用的,一个是编译工具链,一个是标准lucet环境。

4、使用方法:

sudo docker run –it lucet-toolchain:latest  /bin/bash

启动,即可使用相关的命令。

 

三、应用

应用可以看一下其官网的BLOG的例子,地址在:

https://www.fastly.com/blog/announcing-lucet-fastly-native-webassembly-compiler-runtime

在前面编译好Docker的基础上,启动工具链的镜像:

 

$ mkdir demo

$ cd demo

$ cat > hello.c <<EOT

 

#include <stdio.h>

int main(int argc, char* argv[])

{

    if (argc > 1) {

            printf("Hello from Lucet, %s!\n", argv[1]);

    } else {

            puts("Hello, world!");

    }

    return 0;

}

EOT

$ wasm32-unknown-wasi-clang hello.c -o hello.wasm

会报一个警告,可以不用理它,这时就可以用WASI命令来进行文件间的转换:

 

$ lucetc-wasi hello.wasm -o hello.so

转换完成后,可以通过命令来运行相关的文件:

$ lucet-wasi hello.so 

Hello, world!  

$ lucet-wasi hello.so world 

Hello from Lucet, world!

在相关的Lucet的库中提供了更多的开发文档和其它的例程,如果有兴趣,大家可以去查看一下。

四、总结

从目前来看,这个CDN类型的公司提供的这个Lucet确实有其独特的一面,不过安装过程得吐槽一下,它自己在官网上说,只需要一到两分钟,真不知道它是在啥样的环境下安装的,可能他们的环境非常好吧。

从总体来看,Lucet只是提供了一套原生的编译器,真正的运行时和相关的辅助操作都是第三方的。最初使用的是c版的,这是用Rust实现的第一版,Rust这语言有点小爆发的样子.

更多资源,可观注公众号:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值